サイバーセキュリティ

信頼するソフトに悪意あるコードが紛れ込む、サプライチェーン攻撃の仕組み

Susan Hill

サプライチェーン攻撃は、あなたが使うソフトに押し入るわけではない。そのソフトを構成する部品の一つを汚染し、あとは通常の更新処理がそれをあなたの端末まで運ぶのを待つ。アプリは問題なくインストールされ、署名も依然として通り、更新も公式の経路から届く。悪意あるコードはそれに同乗してくる。この反転こそが手口を強力にする。ソフトを動かしている信頼を、そのまま突かれる弱点へと変えてしまうのだ。

今あなたが動かしているもののほぼすべては、画面に名前が出ている企業が丸ごと書いたものではない。一つのアプリが何百、何千ものオープンソースの部品を引き込み、その一つひとつを見知らぬ人が保守し、それぞれがさらに別の部品を背負っている。開発者がそのコードを読むことはまれで、由来したレジストリと付属するバージョン番号を信頼する。鎖のどの環であれ忍び込んだ者は、下流の全員に一挙に届く。だからこそ、汚染された一つの部品が、誰も気づかぬうちに数万のプロジェクトに影響しうる。

侵入口はいくつかの型に集約される。タイポスクワッティングは、人気の名前からキー一つ分ずれた名前の悪意あるパッケージを置き、打ち間違いを待つ。依存関係の混同は、ビルドツールが名前を解決する仕組みを突き、企業の非公開パッケージではなく公開パッケージを取らせる。アカウント乗っ取りは本物の保守者の認証情報を奪い、マルウェアを日常的な更新として配る。2026年初め、広く使われるパッケージ axios は、主任保守者の端末がソーシャルエンジニアリングで侵害された後、短時間ながら改ざん版を配布した。そしてビルドパイプラインの汚染は、ソフトを組み立てて公開する自動システムを狙う。たった一つの汚れた工程が、依存するすべてのプロジェクトに届いてしまう。

ビルドパイプラインが最も狙われる的になったのは、まさに他のすべての上流に位置するからだ。人気の GitHub Actions 部品 tj-actions/changed-files が2025年に侵害されたとき、攻撃者はそのバージョンタグを書き換えて悪意あるコードを指すようにし、二万を超えるリポジトリのビルドログから機密を抜き出した。アクセスキー、トークン、秘密鍵が、すべて平文のままだった。のちに研究者が Megalodon と名づけた作戦は、GitHub Actions を自己増殖する裏口に変え、およそ六時間で5,561のリポジトリに達した。あなたのソフトを組み立てる機械は、ソフト本体と同じくらい簡単に乗っ取られうる。

開発者が毎日使う道具も影響圏にある。2025年末に初めて見つかった GlassWorm は、OpenVSX とマイクロソフトのマーケットプレイスで Visual Studio Code の拡張機能を介して広がった。不可視の Unicode 文字で本体を隠したため、悪意ある行はエディタ上で文字どおり読めず、人の目視審査をすり抜けた。導入されると npm、GitHub、Git の認証情報を盗み、それを使ってさらに別のパッケージや拡張機能を自動で感染させた。これはワームを定義づける性質だ。エディタは拡張機能を背後で静かに更新するため、被害者は何もクリックせずに汚染版を受け取った。別の汚染された VS Code 拡張機能は、GitHub 自身の社内リポジトリ約3,800件を盗むのに使われた。

これらの攻撃を捕まえにくくしているのは、個々の工程がどれも正当に見えることだ。パッケージには署名がある。更新は本物のレジストリから来る。保守者のアカウントも本物だ。従来の防御は既知の有害ファイルや明白なマルウェアを探すが、サプライチェーン攻撃は、信頼され、予期され、しばしば目に見えないコードの中に隠れ、ソフトが届くべきまさにその時とその形で届く。さらに悪いことに、すぐ更新せよという昔ながらの助言こそ、攻撃者が当てにする仕組みそのものだ。最新版を入れることが、もはや無条件に安全な選択ではなくなった。初めてのことである。

防御側は、効果のある一握りの手立てに収束してきた。ロックファイルは各依存物を正確で検証済みのバージョンに固定し、インストーラが最新ではなく審査済みのものだけを取得するようにする。自動インストールスクリプトを無効にすれば、悪意あるパッケージが着いた瞬間にコードを走らせる最も一般的な経路を断てる。GitHub Actions を可変のタグではなく特定のコミットハッシュに固定すれば、タグ書き換えの手口は効かなくなる。ソフトウェア部品表、すなわちビルドに含まれるすべての部品の詳細な一覧があれば、次の事件が公表されたとき、自分が危険にさらされているかを数分で把握できる。最近の攻撃を免れた組織の多くは、奇抜なことは何もしていない。コミット済みのロックファイルからビルドし、新規公開のパッケージを隔離するレジストリプロキシの後ろで作業していただけだ。

コードを書かない人にとって、守りはほぼ間接的だが、教訓はそうではない。ソフトのサプライチェーンは今や最前線の戦場であり、それを守るのは、あなたのスマホやノートパソコンのアプリを作る企業の役目だ。理にかなった対応は、パニックでも、通知が出るたびに何でも更新する古い反射でもない。何を出荷し、どう作っているかを公表するチームのソフトを選ぶこと。そして信頼できる出所を、鎖を自然に下ってくる性質ではなく、環ごとに勝ち取るべきものとして扱うことだ。

業界の答えは来歴を軸に形をなしつつある。コードの断片がどこから来て、どう作られたかを暗号で証明し、何かを入れる前に自動で検証するのだ。一世代前にウェブ通信を守ったのと同じ発想を、今度はソフトそのものの組み立てラインに当てはめている。その証明が当たり前になるまで、どのインストールも、決して会うことのない人々への信頼の行為であり続ける。

ディスカッション

0件のコメントがあります。