概要
「Orchid Files」として知られる個人セキュリティ研究者が、GitHub上で正規リポジトリをクローンしたトロイの木馬入りの偽リポジトリを1万件以上にわたって独力でマッピングし、2026年6月に公開した。この研究者が最初に異変に気付いたのは2026年2月頃で、自身のプロジェクトをBingで検索したところ、わずか1時間前に不審なREADMEコミットが行われた「ほぼ同一」のクローンが検索結果に表示されたことがきっかけだった。サイバーセキュリティ企業Hexastrikeが2026年4月に109件のリポジトリで同一ペイロードファミリーを確認していたが、今回の開示によりその規模は約91倍に拡大した。
GitHubは積極的な削除対応を進めているものの、新たなクローンリポジトリが継続して作成されており、被害は収まっていない。このキャンペーンは開発者個人だけでなく、コードリポジトリを自律的に参照するAIエージェントも標的としており、ソフトウェアサプライチェーン全体に対する新たな脅威として注目されている。
感染チェーンと技術的な手口
攻撃者は人気の正規リポジトリを選定してクローンし、READMEに目立つダウンロードボタンを設置、そこからマルウェアを含むZIPアーカイブへ誘導する。ZIPにはバッチ起動スクリプト、LuaJIT 2.1.0-beta3インタープリター(GUI サブシステム使用、署名なし)、および .txt や .log 拡張子でカモフラージュされた難読化Luaスクリプトが同梱されている。この2ファイルを単独で分析した場合には無害に見えるが、バッチファイルがLuaJITを起動してスクリプトを引数として渡すことで初めてマルウェアとして機能するという「分割ペイロード」設計が、自動セキュリティスキャンによる検出を長期間にわたって回避させてきた。
ローダーコンポーネント「SmartLoader」はPrometheusで難読化された単一行Luaスクリプト(296〜309 KB)で構成される。定数が算術恒等式で隠蔽され、文字列が置換エンコードされ、変数名はランダム化されている。さらに、LuaJITのFFI(外部関数インタフェース)でWindows APIを直接呼び出し、ネイティブシェルコードによるアンチデバッグ確認、GDIパイプラインを使ったスクリーンショット取得、システムフィンガープリンティング、そしてPEヘッダー解析とインメモリ実行支援など高度な機能を備える。
ブロックチェーンを悪用したC2インフラ
特筆すべき点は、C2(コマンド&コントロール)サーバーのアドレス取得にPolygonブロックチェーンのスマートコントラクト(0x1823A9a0Ec8e0C25dD957D0841e3D41a4474bAdc)を利用していることだ。SmartLoaderは polygon.drpc.org へのJSON-RPCを通じてコントラクトをクエリし、現在のC2アドレスを動的に取得する。これにより、攻撃者はマルウェアを再ビルドすることなくサーバーを入れ替えられるため、テイクダウン対策が著しく困難になる。実際のC2として観測されたIPは 144.31.57.65 と 144.31.57.67(同一 /24 サブネット)で、被害者のホスト情報やスクリーンショットをマルチパートPOSTで送信する。
第2ステージのペイロードは攻撃者が管理するGitHubリポジトリ(deepanshugoel99/long)から暗号化された形で取得され、情報窃取マルウェア「StealC」がインメモリで実行される。永続化は「AudioManager_ODM3」や「OfficeClickToRunTask」など正規ソフトに偽装したスケジュールタスクを2本作成することで実現し、一方が削除されても他方がGitHubから再取得して感染を維持する冗長設計になっている。
検出回避と規模拡大の仕組み
このキャンペーンが1年以上にわたって検出を回避し続けた背景には、複数の工夫がある。リポジトリは数時間おきに最新コミットを削除して「Update README.md」という同名の新規コミットをプッシュする。この繰り返しの上書きがGitHubのセキュリティアルゴリズムを混乱させ、通常のメンテナンス活動と区別しにくくしていると研究者は分析する。また、クローン元は著名な既存リポジトリではなく比較的マイナーな本物のリポジトリで、偽クローンが検索結果で本物を上回る順位に表示されるケースも確認されている。さらに、AIコーディングエージェントがリポジトリを検索して自動的に依存関係を解決する際に、偽クローンを正規のものと誤認して取り込むリスクが指摘されており、AI開発ワークフロー固有の脅威面として浮上している。
セキュリティ上の示唆と対策
このキャンペーンの検出シグナルとしては、非ブラウザプロセスからの *.drpc.org へのDNS/HTTPアクセス、スマートコントラクトアドレスや関数セレクタ 0x3bc5de30 を含む eth_call リクエスト、ベアIPアドレスへの /api/ や /task/ エンドポイントへのPOSTリクエストが挙げられる。行動面では、.txtや.log拡張子のスクリプト引数を持つ署名なし実行ファイルのバッチ起動、非標準パスからのLuaJIT DLL読み込み、%LOCALAPPDATA% 参照のスケジュールタスク作成などが指標となる。GitHubからコードをダウンロードする際はリポジトリのスター数・コントリビュータ・更新履歴を確認し、公式の組織アカウントであることを必ず検証すること、また依存ライブラリを自動解決するAIエージェントやCI/CDパイプラインに対してもアーティファクト検証の仕組みを導入することが、今回のような攻撃に対する有効な防御策となる。