공개된 Phabricator 티켓을 보면, Wikimedia Foundation의 한 보안 엔지니어가 테스트를 위해 무작위 사용자 스크립트를 로드했음
그중 하나가 2년 된 악성 ruwiki 스크립트였고, 이 스크립트는 전역 JS에 자신을 주입해 빠르게 퍼지며 피해를 일으켰음
결국 위키 전체가 읽기 전용 모드로 전환될 정도로 심각한 사태였음
이런 실수를 한 게 보안 엔지니어라는 점이 특히 충격적임
처음엔 현재 공격자가 있는 줄 알았는데, 과거의 악성 스크립트였다는 걸 알고 나니 해결은 간단해졌음
정규식을 써서 해당 스크립트를 탐지하고, 감염된 페이지를 이전 버전으로 되돌리면 됨
“Claude, 네 스크립트가 악성 코드 실행했어!” “맞아요, 죄송해요!” 같은 대화가 오갔을 것 같음
이 웜의 동작 방식이 흥미로움
MediaWiki의 Common.js와 User:Common.js에 자신을 주입해 전역 감염을 유지하고, jQuery로 감염 흔적을 숨김
20개의 임의 문서를 훼손하고, 관리자 계정을 감염시키면 Special:Nuke 기능으로 문서를 삭제함
단순히 “내가 얼마나 혼란을 일으킬 수 있는지 보라”는 장난 수준의 동기처럼 보임
basemetrika.ru 도메인은 존재하지 않음. NXDomain 응답이 돌아옴
XSS를 시도하는 것처럼 보이지만 실제로는 비효과적 코드라 외부 로드는 일어나지 않음
이런 정교한 웜은 AI가 설계했을 가능성도 있다고 생각함
데이터베이스 자체가 감염 매개체라 정리 작업이 디지털 포렌식 악몽이 될 거란 말이 있었음
하지만 루트 권한을 뚫은 건 아니고, 백업이 있다면 복구는 가능할 것 같음
며칠치 편집이 사라지더라도 Wikipedia 전체로 보면 감내할 수준임
실제로는 DB 롤백이 아니라 일반적인 위키 되돌리기 도구로 처리되었고, Wikipedia 본체가 아닌 Meta 사이트만 영향받았음
러시아 위키 커뮤니티에서의 조사에 따르면, 2023년 러시아어 대체 위키들에 대한 반달 공격에 쓰였던 코드가 이번에도 사용된 것으로 보임
ruwiki 사용자 Ololoshka562가 만든 test.js가 그 스크립트였고,
WMF 직원 sbassett이 테스트 중 이 스크립트를 불러오며 실행된 것으로 추정됨
작년에도 ruwiki가 비슷한 방식으로 대규모 훼손을 당한 적이 있었음
오래된 XSS 웜처럼 보임
MediaWiki가 사용자에게 JavaScript 삽입을 허용하는 구조가 위험하다고 예전부터 생각했음
놀라운 건 이런 XSS가 아직 비밀번호 탈취 같은 공격에 쓰이지 않았다는 점임 이 글처럼 브라우저 자동완성 취약점을 이용했다면 훨씬 심각했을 것임
Wikipedia에 불만이 있더라도, 이번 사태를 빌미로 괴롭힘이나 스토킹을 하는 건 정당화될 수 없음
위키 편집자 친구의 말에 따르면, 이번 사건은 교차 사이트 스크립팅(XSS) 해킹으로 보임
러시아어 위키의 사용자 페이지에서 시작된 코드가 Meta의 common.js를 통해 퍼졌고,
운영자들이 수동으로 되돌리는 모습이 Recent Changes 페이지에서 보였음
“러시아발 공격”처럼 보이지만, 그런 식으로 출처를 위조하는 건 매우 쉬움
하지만 다른 사용자는 이 코드가 오래된 러시아 해킹 도구 “woodpecker”의 변형일 가능성이 높다고 봄
사실 이런 일은 시간문제였음
Wikipedia는 보안에 대해 너무 안이한 태도를 보여왔음
“인터페이스 관리자” 권한만 있으면 전역 JS/CSS를 수정할 수 있고, 2FA도 최근에야 도입됨
게다가 많은 사용자가 검증되지 않은 사용자 스크립트를 쓰고 있음
이런 구조 자체가 보안 악몽이며, 이번 사태로 사용자 스크립트가 전역 비활성화된 것도 이 때문일 것임
Hacker News 의견들
공개된 Phabricator 티켓을 보면, Wikimedia Foundation의 한 보안 엔지니어가 테스트를 위해 무작위 사용자 스크립트를 로드했음
그중 하나가 2년 된 악성 ruwiki 스크립트였고, 이 스크립트는 전역 JS에 자신을 주입해 빠르게 퍼지며 피해를 일으켰음
결국 위키 전체가 읽기 전용 모드로 전환될 정도로 심각한 사태였음
정규식을 써서 해당 스크립트를 탐지하고, 감염된 페이지를 이전 버전으로 되돌리면 됨
이 웜의 동작 방식이 흥미로움
MediaWiki의 Common.js와 User:Common.js에 자신을 주입해 전역 감염을 유지하고, jQuery로 감염 흔적을 숨김
20개의 임의 문서를 훼손하고, 관리자 계정을 감염시키면 Special:Nuke 기능으로 문서를 삭제함
데이터베이스 자체가 감염 매개체라 정리 작업이 디지털 포렌식 악몽이 될 거란 말이 있었음
하지만 루트 권한을 뚫은 건 아니고, 백업이 있다면 복구는 가능할 것 같음
러시아 위키 커뮤니티에서의 조사에 따르면, 2023년 러시아어 대체 위키들에 대한 반달 공격에 쓰였던 코드가 이번에도 사용된 것으로 보임
ruwiki 사용자 Ololoshka562가 만든 test.js가 그 스크립트였고,
WMF 직원 sbassett이 테스트 중 이 스크립트를 불러오며 실행된 것으로 추정됨
오래된 XSS 웜처럼 보임
MediaWiki가 사용자에게 JavaScript 삽입을 허용하는 구조가 위험하다고 예전부터 생각했음
이 글처럼 브라우저 자동완성 취약점을 이용했다면 훨씬 심각했을 것임
Wikipedia에 불만이 있더라도, 이번 사태를 빌미로 괴롭힘이나 스토킹을 하는 건 정당화될 수 없음
위키 편집자 친구의 말에 따르면, 이번 사건은 교차 사이트 스크립팅(XSS) 해킹으로 보임
러시아어 위키의 사용자 페이지에서 시작된 코드가 Meta의 common.js를 통해 퍼졌고,
운영자들이 수동으로 되돌리는 모습이 Recent Changes 페이지에서 보였음
추가 맥락으로 Wikipediocracy 포럼,
Village Pump 토론,
Reddit 메가스레드 등이 있음
문제의 페이로드는 이 링크에서 확인 가능
사실 이런 일은 시간문제였음
Wikipedia는 보안에 대해 너무 안이한 태도를 보여왔음
“인터페이스 관리자” 권한만 있으면 전역 JS/CSS를 수정할 수 있고, 2FA도 최근에야 도입됨
게다가 많은 사용자가 검증되지 않은 사용자 스크립트를 쓰고 있음
이런 구조 자체가 보안 악몽이며, 이번 사태로 사용자 스크립트가 전역 비활성화된 것도 이 때문일 것임
이제는 AI가 Wikipedia를 다 긁어갔기 때문에 아무도 Wikipedia를 직접 쓰지 않는다는 농담 섞인 말도 나옴