GitHub で懸念される RepoJacking 攻撃:変更された名称の悪用が容易だと判明

Alert: Million of GitHub Repositories Likely Vulnerable to RepoJacking Attack

2023/06/22 TheHackerNews — GitHub 上の何百万ものソフトウェア・リポジトリが、RepoJackingと呼ばれる攻撃に対して脆弱である可能性が高いことが、新たな研究で明らかになった。マサチューセッツ州を拠点とするクラウドネイティブ・セキュリティ企業 Aqua が、水曜日に発表したレポートによると、それらの脆弱なリポジトリには、Google や Lyft などの、いくつかの組織のものも含まれているという。この、リポジトリ依存関係ハイジャックとも呼ばれるサプライチェーンの脆弱性は、活動を停止した組織やユーザーの名前を乗っ取り、悪意のコードを忍び込ませ、トロイの木馬化したバージョンのリポジトリを公開する攻撃の一種である。


研究者である Ilay Goldman と Yakir Kadkoda は、「リポジトリの所有者がユーザー名を変更すると、古い名前と新しい名前の間にリンクが作成されるため、古いリポジトリから依存関係のダウンロードが可能になる。しかし、誰もが古いユーザー名を作成できるため、このリンクは容易に壊されてしまう。あるいは、リポジトリの所有権が別のユーザーへと移行し、元のアカウントが削除された場合にも、同様のシナリオが発生する可能性がある」と述べている。

Aqua によると、脅威アクターは、たとえば GHTorrent のような Web サイトを活用して、公開コミットやプルリクエストに関連する GitHub のメタデータを抽出し、固有のリポジトリのリストを作成できるという。


2019年6月の1カ月間を費やし、125万リポジトリのサブセットを分析したところ、3万6983 ものリポジトリが RepoJacking の脆弱性を抱えており、その比率は 2.95% だった。

GitHub には3億3,000万以上のリポジトリが存在するため、今回の調査結果から推測すると、何百万ものリポジトリが、この攻撃に対して脆弱である可能性が示唆される。

そのようなリポジトリの一例が、google/mathsteps である。2018年に Google に買収される以前において、このリポジトリは、Socratic (socraticorg/mathsteps) の所有下にあった。

研究者たちは、「”https://github.com/socraticorg/mathsteps” にアクセスすると、”https://github.com/google/mathsteps” にリダイレクトされ、最終的にユーザーは、Google のリポジトリをフェッチすることになる」と述べている。

しかし、組織名として “socraticorg” が利用可能であったことで、攻撃者はsocraticorg/mathsteps リポジトリを開くことが可能だった。そのためユーザーは、Google の指示に従うのではなく、攻撃者のリポジトリをクローンすることになる。そして、npm からのダウンロードが行われ、任意のコード実行へとつながる。


このような懸念が生じるのは、今回が初めてのことではない。2022年10月に GitHubは、一般的なリポジトリの名前空間の廃止を回避することで、悪意のリポジトリを作成し、サプライ チェーン攻撃を仕掛けるために悪用される可能性のある、セキュリティの抜け穴を閉じるために注力していた。

このようなリスクを軽減するために、ユーザーに対して推奨されるのは、外部の GitHub リポジトリからリソースを取得するリンクの有無を、自分のコード内で定期的に検査することだ。

研究者たちは、「組織名を変更する場合には、攻撃者による不正な作成を防ぐために、プレース・ホルダーとして、以前の名前も所有すべきであり、その確認は必須である」と述べている。

これまで、GitHub/PyPI/npm などで多発する、悪意のパッケージを起点とするサプライチェーン攻撃に注目が集まっていましたが、今回の RepoJacking 攻撃は、GitHub の構造上の欠陥を狙うものです。一連の OSS リポジトリは、いずれも偉大なプロジェクトであり、これからも頑張ってほしいわけですが、それを使うユーザー側としては、信頼のレベルを一段引き下げて対応する必要があるのかもしれません。それが、一時的なものであり、また、元に戻ることを、もちろん願っているのですが・・・