Beyond Takedown: Measuring Malicious Go Module Persistence in the Wild
この論文は、攻撃者が正当なモジュールを難読化されたマルウェアで再パッケージ化するという大規模なGoサプライチェーン攻撃を明らかにしており、削除された悪意のあるアーティファクトの99%以上がGoプロキシ経由で依然として取得可能であることから、GitHubの検索のみに頼ることは侵害の全容を検知するには不十分であることを示している。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
ソフトウェア開発の世界を、プログラマーが自分のアプリケーションを作るために「モジュール」(あらかじめ書かれたコードの塊)を借りに行く、巨大で賑やかな図書館だと想像してみてください。Goプログラミング言語の世界には、この図書館に非常に厳格な司書がいます。それがGo Proxyです。
ここでは、この図書館で起きた最近の強盗事件の物語を、分かりやすくお話しします。
強盗事件:「偽のブッククラブ」
攻撃者たちは図書館から盗み出そうとしましたが、ドアを壊して侵入したわけではありません。代わりに、彼らは**「なりすまし」**というゲームを行いました。
- 準備: 彼らは、誰もが信頼している人気のある正当な本(正当なコードモジュール)を見つけました。
- 偽造: 彼らは、自分たちの名前でこれらの本の偽物のコピーを作成しました。その偽物の本の中に、極めて小さく、目に見えない罠を隠したのです。
- 罠: Goの世界では、あなたが本を「インポート(借用)」すると、図書館は自動的にいくつかのセットアップ・タスクを実行します。攻撃者は、このセットアップ・タスクの中に悪意のある命令を隠しました。それは、本を開いた瞬間に、あなたのコンピュータに対してウイルスをダウンロードして実行するように密かに命令を下す本のようなものでした。
- 宣伝: 偽の本を本物らしく見せるために、攻撃者は「ボット軍団」を使ってGitHub上で何千もの「スター(いいね!)」を与え、開発者に「ああ、これは人気があって安全に違いない」と思わせるよう仕向けました。
調査:2つの視点
研究者たち(Minjae Bae氏とCarter Yagemann氏)は、この問題が実際にどれほど大きいのかを知りたいと考えました。彼らは泥棒を見つけるために、2つの異なる懐中電灯を使用しました。
懐中電灯1:GitHub検索(「棚」の視点)
彼らはメインのホスティングサイト(GitHub)を手動で検索し、不審なパターンやアカウント間の「スター」のつながりを追跡しました。
- 判明したこと: 彼らは2,113個の偽のリポジトリを発見しました。
- 問題点: この懐中電灯は、偽の本がまだ「棚」に置いてある場合にのみ機能します。もし図書館のスタッフがその本を撤去したり、あるいは泥棒がそもそもメインの棚に本を置いていなかったりした場合、この懐中電灯には何も映りません。
懐中電灯2:プロキシ・スキャン(「流通」の視点)
彼らは、GOASTと呼ばれる特別なスキャナー(コードを実行せずに読み取るロボット)を構築し、Go Proxyをスキャンしました。これは図書館のバックアップシステムです。これは、たとえ元の本が棚から削除されても、これまでに借りられたすべての本の完璧で変更不可能なコピーを保持しています。
- 判明したこと: 彼らは2,289個の悪意のあるバージョンを発見しました。
- 驚き: プロキシの懐中電灯は、GitHubの懐中電灯よりも83%多くの悪意のある本を見つけ出しました。これらの偽の本の多くは、メインの棚には存在していなかったか、あるいはすでに削除されていましたが、プロキシにはまだ残っていました。
大きな発見:「取り下げ」は「解決」を意味しない
これがこの物語で最も重要な部分です。
通常、セキュリティチームが悪質な本を見つけたとき、彼らは図書館にその本の**「取り下げ(テイクダウン)」**を依頼します。GitHub上のリポジトリを削除するのです。彼らは、「これで脅威は去った」と考えます。
しかし、研究者たちはこれが間違いであることを証明しました。
Go Proxyはすべてのモジュールの永続的で変更不可能なコピーを保持しているため、GitHub上のソースを削除しても、エコシステムからウイルスが消えるわけではありません。
- 研究者たちは、攻撃者のリポジトリが削除または停止された後(GitHub上で「見えなく」なった後)でも、**99.4%**の悪意のあるモジュールが依然としてGo Proxy経由で利用可能であり、ダウンロード可能であることを突き止めました。
- これは、図書館のスタッフが偽の本をゴミ箱に捨てたとしても、図書館の自動配送ドローン(プロキシ)が倉庫に完璧なコピーを保持しており、注文があった顧客にそれを届け続けているようなものです。
結果
研究者たちは、この問題を図書館のスタッフ(GitHubおよびGoogle)に報告しました。
- GitHubは684個の悪意のあるリポジトリを削除しました。
- Google(プロキシ・チーム)は、その永続ストレージから1,377個の悪意のあるモジュール・バージョンをクリーンアップしました。
教訓
ソフトウェア・サプライチェーンの問題は、単に「ホスティング」レイヤー(GitHub)を掃除するだけでは解決できません。「配布」レイヤー(プロキシ)が悪意のあるコードを保持している限り、脅威は生き続けます。問題を真に解決するには、「棚」と「倉庫」の両方を掃除しなければならないのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。