GitHubで100,000件を超える感染済みリポジトリが発見
- セキュリティ研究・データサイエンスチームが、昨年半ばに始まった悪意あるリポジトリ混同キャンペーンが大規模に再浮上していることを検知した。
- この攻撃は、開発者が既知の信頼できるリポジトリに似せて作られた、実際には悪性コードを含むリポジトリを使用した際に、10万件を超えるGitHubリポジトリ(推定では数百万件)に影響を与える。
リポジトリ混同攻撃はどのように起こるのか?
- リポジトリ混同攻撃は依存関係混同攻撃に似ており、悪意ある攻撃者が対象に本物のバージョンではなく悪性バージョンをダウンロードさせる。
- 依存関係混同攻撃がパッケージマネージャーの動作の仕組みを悪用する一方で、リポジトリ混同攻撃は、人が誤って本物の代わりに悪性のバージョンを選んでしまうことに依存しており、ときにはソーシャルエンジニアリングの手法も使われる。
悪性リポジトリが使われると何が起こるのか
- 開発者が疑いなく悪性リポジトリを使うと、隠されたペイロードが7段階の難読化を解除し、悪性のPythonコード、さらにその後にバイナリ実行ファイルを取得する。
- 悪性コードは、さまざまなアプリのログイン認証情報、ブラウザのパスワードやCookie、そのほかの機密データを収集し、攻撃者のC&Cサーバーへ送信して追加の悪性活動を実行する。
GitHubにおける自動化の影響
- フォークされたリポジトリの大半はGitHubによってすぐに削除されるが、自動検知では多くのリポジトリを見逃し、手動でアップロードされたリポジトリは生き残る。
- 攻撃チェーン全体のほとんどが大規模に自動化されているため、生き残る1%でもなお数千件の悪性リポジトリを意味する。
キャンペーンが始まった時期
- 2023年5月: Phylumが最初に報告したところによると、現在のペイロードの初期部分を含む複数の悪性パッケージがPyPIにアップロードされた。
- 2023年7月 - 8月: PyPIが悪性パッケージを削除し、セキュリティコミュニティがそちらにいっそう注目するようになると、今度はPyPIパッケージを取得する代わりに直接ペイロードを配布する複数の悪性リポジトリがGitHubにアップロードされた。
- 2023年11月 - 現在: 類似の悪性ペイロードを含む10万件を超えるリポジトリが検知されており、その数は増え続けている。
パッケージマネージャーからソースコード管理(SCM)へのマルウェアの移行
- パッケージマネージャーとSCMプラットフォームで観測された多くの事例から、このキャンペーンがPyPI上の悪性パッケージからGitHub上の悪性リポジトリへ移行したことは、一般的な傾向を反映しているように見える。
リポジトリ混同から身を守る方法
- GitHubには通知済みであり、大半の悪性リポジトリは削除されたが、キャンペーンは継続しており、サプライチェーンに悪性コードを注入しようとする攻撃はますます一般的になっている。
- Apiiroは、接続されたコードベースを監視するマルウェア検知システムを構築している。
- さまざまな高度な技術を用いて攻撃を検知しており、これにはLLMベースのコード解析、コードを完全な実行フローグラフへ分解すること、高度なヒューリスティックエンジン、動的デコード、復号、難読化解除などが含まれる。
GN⁺の見解
- この記事は、GitHubリポジトリを利用する際に注意すべきセキュリティ脅威について、開発者に重要な情報を提供している。
- 悪性コードがソフトウェアサプライチェーンに侵入する仕組みを理解することで、開発者やセキュリティ専門家はより強固な防御メカニズムを構築できる。
- この種の攻撃は、開発者が信頼できるリポジトリを選択する能力だけでなく、CI/CD構成の正確性やサードパーティコードの安全性への依存も浮き彫りにしている。
- 批判的な視点で見れば、こうした攻撃は、GitHubのようなプラットフォームの自動化システムと大規模リポジトリの存在が諸刃の剣になり得ることを示している。
- 類似機能を提供するセキュリティツールとしては、SonarQube、Snyk、WhiteSourceなどがあり、コードの脆弱性を検出してセキュリティ強化に役立てられる。
- この技術を導入する前には、組織のセキュリティポリシーとの互換性、実装コスト、そしてチームメンバーの技術力を考慮する必要がある。
- この技術を選択することで得られる利点はセキュリティ強化とリスク低減だが、潜在的な欠点としては新しいシステムに対する学習コストと運用の複雑さがある。
1件のコメント
Hacker Newsのコメント
curlとsudoを使ったシェルスクリプトによるインストール方式は、まもなく終わるのだろうかという疑問を示している。この方式は記事で言及された感染済みソフトウェアと密接に関係している。--ignore-scriptsオプションを使うことで、マルウェアの実行を防ぐことができる。