シンガポールのベンチャーキャピタルを名乗る一通のメール、「旅行中」を理由にカメラを頑なにオンにしないドイツ訛りの面接官、そして何気ないTypeScriptのテスト課題——。これは、トップレベルのオープンソースプロジェクト保守者を標的に仕掛けられた、周到な攻撃チェーンの全貌である。
2026年9月17日、Rust公式セキュリティチームが緊急の警告を発した。攻撃者が架空の求人案件とビデオ面接を足がかりに、rust-langコアメンバーや累計ダウンロード数が極めて多い人気crate(Rustのパッケージ単位)の保守者を組織的に狙い撃ちしているという。攻撃者は数ヶ月かけてゼロデイ脆弱性を探す手間を省き、ソーシャルエンジニアリングによって開発者の端末権限を直接奪取した上で、公式レジストリ(crates.io)に悪意あるバージョンを正規リリースしようと企てている。
ビデオ会議で奪われるコード公開権限
個人を標的としたソーシャルエンジニアリング攻撃は、企業のファイアウォールを強引に突破するよりもはるかに効率的だ。攻撃者はまず、高額報酬のフルタイム職や好条件のアドバイザリー契約といった、極めて魅力的な餌を提示する。信用させるために本物そっくりの新興企業ウェブサイトを立ち上げ、華麗な経歴を並べたLinkedInプロフィールまで精巧に偽造していた。
開発者が関心を示してビデオ面接に参加すると、通話中に本格的な攻撃が展開される。面接官は何かしらの口実を設けて、ターゲットのローカル環境にソフトウェアをインストールさせようとする。「Web会議ツールに必要なオーディオコーデックが不足している」と称してプラグインを装ったインストーラーを送りつけたり、画面共有で接続エラーを見せかけてターミナルで実行するよう悪意あるコマンドを指示したりする。公式アナウンスによれば、同様の手口による攻撃は6月の時点で複数の著名Rust開発者に対して行われていた。先月にも、膨大なダウンロード数を誇る基礎ライブラリ arrayref が類似の手法によって一時的に汚染される事件が発生したばかりだ。このような基底ライブラリにバックドアが埋め込まれれば、下流の企業はCI/CDによる自動ビルドを通じて人知れず感染していく。
Rust公式は、この標的型攻撃の緻密さから、北朝鮮(DPRK)政府系ハッカー集団との関連性が確認されていると明言した。偽の企業サイト、サポート窓口、専用ツールまで揃えた国境を越えるエンタープライズ規模の偽装網が、たった一人のプログラマーを陥れるために総動員されている。オープンソースエコシステムの最大の弱点は、もはや堅牢なサーバー群ではなく、無防備な保守者個人のアカウントと端末へと移行したのだ。
画像ファイルの末尾に潜む1.68MBの遠隔操作木馬
開発者ブログ grack.com の著者は、自身がこの罠に落ちかけた一部始終を詳細に記録している。彼のもとに届いたのは、DeFi分野で過去に実在したものの現在は活動停止しているVC「Lua Ventures」を騙るメールだった。相手は「Ticket Harbor」というフェリー予約アプリのリポジトリを送り、コードの静的検証とビルドコマンドの実行を求めてきた。
図:攻撃者から届いた最初のフィッシングメール。出典:grack.com「Anatomy of a Failed (Nation-State?) Attack」
リポジトリは一見すると何の変哲もないTypeScriptプロジェクトに見えるが、内部には偽装された4つの postinstall フックが仕込まれていた。そのうちの1つが、裏で git update-index --skip-worktree を密かに実行する。このコマンドは特定のファイル変更をGitに強制的に無視させるため、被害者がターミナルで git status を叩いても、パッチファイルが改ざんされている事実に一切気づけない。
真のペイロードは typescript+5.9.2.patch というパッチファイルの中に潜んでいた。正規のコンパイラファイルの先頭に難読化されたスクリプトが挿入されていたのだ。このスクリプトは一般的な eval 呼び出しを巧妙に避け、new Function(...) を用いてメモリ上で実行ロジックを動的にインスタンス化することで、ウイルス対策ソフトの静的シグネチャ検知を回避していた。
図:フォローアップメールで提示された「テスト課題」の招待。出典:grack.com
通常の画像パーサーは、ファイルの終端(EOF)マーカーに達すると読み込みを停止する。しかし、このローダースクリプトは operators/3.png の末尾以降にジャンプし、画像の後ろに追加された隠蔽データブロックを読み出してWebAssembly形式の実行スタブを起動する。このスタブがバックグラウンドで静かにNodeプロセスを立ち上げ、最終的に1.68MBに及ぶ第2ステージのペイロードをOS内部に注入する。悪意あるコードが静止画像とメモリ空間を巧みにリレーして実行されるとき、従来の静的コードスキャン機構は完全に無力化される。
痕跡を消し去る3層の証跡消去メカニズム
「PinpinRAT」と名付けられたこの遠隔操作木馬(RAT)は、端末への潜伏と実行の各フェーズにおいて、極めて高度な戦術的規律を見せていた。
木馬が起動すると、直ちに被害者のローカル環境でRSA-2048キーペアを生成し、ランダムなAES-256セッション鍵を発行する。以降のすべてのC2通信はAES-256-CBCアルゴリズムによって暗号化され、HMAC-SHA256による完全性検証タグが付与される。トラフィック監視装置が捉えられるのはエントロピーの高い無意味なデータ列のみであり、エンタープライズ向けファイアウォールであっても、外部へどのような命令が送られているのか解析することは不可能だ。
この木馬は、端末を完全に乗っ取るためのあらゆる機能を備えていた。クラウド認証情報やパッケージ公開トークンが保管されている環境変数を一括ダンプして外部送信する機能、任意のファイル読み書き、システムプロセスの生成、さらにはDNSトンネリングを構築して社内ネットワークの境界防御を密かにすり抜ける機能まで網羅されていた。
図:おとりのリポジトリとテスト課題の説明。出典:grack.com
PinpinRATは、Windows環境では隠しタスクスケジューラに常駐を登録し、macOS上ではOSのコアネットワークプロセス(com.apple.WebKit.Networking)に偽装していた。
何よりも巧妙だったのはその痕跡消去の手法だ。攻撃チェーン全体が3つの階層で自動的に痕跡を消し去るように設計されていた。Gitの skip-worktree による不可視化は序の口に過ぎない。ダウンローダーは初回実行後、直ちにパッチファイル内の不正コードを削除して元の状態に復元する。さらに第2ステージのペイロードは一時ディレクトリで実行された後、自爆シーケンスをトリガーして自身をアンインストールする。この木馬は基幹の防衛線を突破したのち、被害者のシステムに密かに潜伏し続け、持続的なサプライチェーン汚染を行うための踏み台へと変貌させる。
AIが偶然暴いた偽の採用面接
二重三重に張り巡らされたこの精巧な罠からgrack.comの著者が間一髪で逃れられたのは、本能的な違和感と偶然の幸運によるものだった。
アーキテクチャ評価を依頼するポジションにしては、渡されたリポジトリの内容があまりに初歩的で辻褄が合わないと感じた著者は、警戒心からローカルでのビルド実行を踏みとどまった。そしてコードをZIPファイルにまとめ、Claudeにスキャンを依頼した。Claudeはすぐさま異常を指摘した。ルートの設定ファイルにライフサイクルスクリプトが定義されていないにもかかわらず、コード内では patch-package を用いてパッチが強制適用されていたのだ。そこから調査を進めた結果、パッチディレクトリの奥底に隠された凶悪な木馬の正体が白日の下に晒された。
著者は事後の振り返りで冷や汗を流している。もし攻撃者が、日常的に実行されるRustのビルドスクリプト build.rs の中に木馬を仕込んでいたら、間違いなく感染していただろうと。
接触のプロセス全体を検証してみると、至るところに不自然な兆候(レッドフラッグ)が散見された。メールの文面にはLLM特有の構造化された不自然な言い回しが残り、LinkedInの経歴は長大ながらも具体的な実績のない肩書きばかりだった。相手のSNSアカウントには過去の履歴が存在していたものの、表示名は2025年11月に変更されたばかりであり、関連企業はいずれも実態のある事業活動の痕跡が皆無だった。
面接のセッティングも不自然を極めていた。正規のVCがカレンダー招待も送らず、ミーティングのURLと時間だけを一方的に指定してくることはまずない。面接官は終始カメラをオフにしたままで、拠点の地理的情報もあちこちに分散していた。シンガポールのファンド、欧州タイムゾーンの担当者、カナダに住むターゲット開発者、そして米国顧客向けを謳いながら .cc ドメインで登録された公式サイト——。アイデンティティのアンカーと物理的拠点を分散させればさせるほど、被害者が矛盾を見破る難易度は跳ね上がるのだ。
余暇の開発者が背負い切れない国家レベルの標的型攻撃
この一連のセキュリティインシデントにおいて、悪意あるコードを仕込んだ画像ファイルは、調査時点のVirusTotal上で主要なウイルス対策エンジンのいずれからも一切警告を発せられなかった。
Rust公式のセキュリティ勧告で提示された対策は、現実には極めて限定的なものにとどまる。見知らぬ相手からのアプローチを警戒すること、ビデオ通話は自ら主催すること、二要素認証(MFA)を有効化し不審なログイン履歴を確認すること、といった呼びかけだ。
しかし、個人の警戒心だけに依存した防衛体制は、圧倒的に非対称である。攻撃者にとって、偽造した履歴書と1時間のビデオ通話を用意するコストは極めて低い。一方で得られる見返りは、数億台の端末へアクセス可能な侵害ルートだ。ボランティア同然で膨大なダウンロード数を支える開発者が、たった一度マウスクリックを誤っただけで、開発端末は乗っ取られる。彼らが握るパッケージ公開権限は、リポジトリのソースコードそのものよりも遥かに高値で取引されている。数人の愛好家が余暇に築き上げたデジタル社会の土台が今、国家レベルのハッカー集団による産業化された標的型サイバー攻撃の最前線に晒されている。
参考リンク:
- Targeted attacks on rust-lang members and crate authors
- Dissecting a failed nation-state attack
- Supply-chain attack on arrayref