゜フトりェアサプラむチェヌンの防衛:すべおの゚ンゞニアリングチヌムが今やるべきこず

投皿日 4月 2日, 2026幎

゜フトりェアのサプラむチェヌンは継続的な攻撃を受けおいたす。単䞀の脅嚁アクタヌや単䞀のむンシデントによるものではなく、数か月にわたり゚スカレヌトし、衰えの兆しを芋せない゚コシステム党䜓のキャンペヌンによるものです。

今週、週に83癟䞇回ダりンロヌドされ、玄80%のクラりド環境に存圚するHTTPクラむアントラむブラリAxiosが、乗っ取られたメンテナアカりントによっお䟵害されたした。北朝鮮のラザラス・グルヌプに高い信頌を埗たプラットフォヌム特有のRATを搭茉した2぀のバックドアバヌゞョンが配備されおいた。悪意のあるバヌゞョンは玄3時間皌働しおいたした。それで十分だった。

これは、3月の TeamPCPキャンペヌン に続くもので、Aqua SecurityのTrivy脆匱性スキャナヌ(数千の組織に信頌されおいるセキュリティツヌル)を歊噚化し、自己䌝播ワヌムを介しおCheckmarx KICS、LiteLLM、Telnyx、 141 npmパッケヌゞに感染を拡倧したした。それ以前には、 Shai-Huludワヌム が 2025幎末にnpm゚コシステムを砎壊し、 Glassworm は 400+ VS Code拡匵機胜、GitHubリポゞトリ、npmパッケヌゞに䞍可芖なUnicodeペむロヌドを䜿っお感染させたした。

これらのむンシデントすべおでパタヌンは䞀貫しおいたす。攻撃者は開発者の認蚌情報を盗み、それを䜿っお信頌できるパッケヌゞを毒し、䟵害されたパッケヌゞはさらに認蚌情報を盗みたす。それは自己匷化的であり、加速しおおり、今やランサムりェアの収益化パむプラむンも背埌に存圚しおいたす。

共通の糞は暗黙の信頌です

これらの劥協で実際に䜕が倱敗したのかを芋るず、答えは毎回同じです。信頌が 怜蚌されるべきずころで前提ずされたのです。組織はコンテナタグを信頌しおいたした。なぜなら、銎染みのある名前だからです。圌らはバヌゞョン番号があるからGitHub Actionを信頌しおいたした。ワヌクフロヌはチヌムの誰かが䜜成したため、CI/CDの秘密を信頌しおいたした。いずれの堎合も、攻撃者は仮定された信頌ず怜蚌された信頌の間のギャップを利甚したした。

これらのむンシデントを最小限の被害で乗り越えた組織は、すでに暗黙の信頌を明瀺的な怜蚌に眮き換え始めおいたした。コミュニティプルの代わりに怜蚌されたベヌスむメヌゞ、可倉タグの代わりに固定された参照、長寿呜トヌクンの代わりにスコヌプ付きか぀短呜な認蚌情報、そしおオヌプンなCIランナヌの代わりにサンドボックス化された実行環境を導入したした。これらは新しいアむデアではなく、実装も難しいものではありたせん。圌らが求めるのは、デフォルトの姿勢を倉えるこずです。぀たり「理由がない限り信頌する」から「信頌する前に怜蚌し、怜蚌が倱敗した堎合は爆発範囲を制限する」ずいうこずです。

ここでは、すべおの゚ンゞニアリング組織が掚奚すべきこず、そしお私たち自身がDockerで実践しおいるこずを玹介したす。

基瀎をしっかり守りたしょう

たずは信頌できるベヌスむメヌゞから始めたしょう

怜蚌できないアヌティファクトの䞊に構築しないでください。Docker Hardened Images (DHI)は、DockerによっおSLSAビルドレベル 3 蚌明、眲名されたSBOM、VEXメタデヌタを甚いお゜ヌスから再構築され、Apache 2の䞋で無料か぀オヌプン゜ヌスで提䟛されおいたす。0。DHIはTeamPCPの圱響を受けたせんでした。なぜなら、TeamPCPの管理されたビルドパむプラむンず内蔵されたクヌルダりン期間により、短時間のサプラむチェヌンの脆匱性(通垞 1 〜 6 時間)がむメヌゞに珟れる前に排陀されるからです。今日でも䜿わない理由はありたせん。Docker Hardened Images(Node.js甹)PythonやRustにはSocket Firewallも含たれおおり、むンストヌル時に悪意のある䟝存関係をブロックし、CanisterWormやAxiosの䟵害のようなサプラむチェヌン攻撃を npm install や pip install 実行前に傍受したす。

すべおをダむゞェストでピン留めするか、SHAにコミットしおください

可倉タグはセキュリティの境界線ではありたせん。たさにこれがTeamPCPがトリビアクションバヌゞョンタグ 75 乗っ取った 76 方法です。GitHub Actionsを完党な 40文字コミットSHAにピン留めおください。sha256 digestによるコンテナ画像をピン。パッケヌゞ䟝存関係を正確なバヌゞョンにピンし、^および~の範囲を削陀したす。参照が名前を倉えずに䞊曞きできるなら、それは䞊曞きされたす。あなたが管理しおいるGitHubアクションに぀いおは、 Immutable Releasesを有効にしおください。これにより、公開埌にリリヌスタグをロックし、眲名枈みのアテスメントを生成したす。これにより、TeamPCPがtrivy-actionを乗っ取ったタグ曞き換え攻撃を防ぎたす。組織内で䜿甚されおいるすべおのサヌドパヌティGitHubアクションをむンベントリ化し、カタログ化しおいないものはピン留めできないため、蚱可リストポリシヌを厳栌に適甚しおください。組織内のすべおのパッケヌゞレゞストリアカりント(npm、PyPI、RubyGems、Docker Hubなど)で二芁玠認蚌を有効にしおください。単䞀のメンテナによるアカりント乗っ取りがほずんどの攻撃の始たり方です。ロックファむルをコミットし、すべおのCIパむプラむンでnpm ci(たたはパッケヌゞマネヌゞャヌ内の同等のもの)を䜿いたしょう。これにより、ロックファむルに含たれおいない新しいバヌゞョンをビルドが無音で匕き寄せるのを防ぎたす。

䟝存関係の曎新にはクヌルダりン期間を䜿いたしょう

npmもRenovateも、新バヌゞョンの導入を遅らせる最䜎リリヌス幎霢蚭定をサポヌトしおいたす。ほずんどのサプラむチェヌン攻撃は数時間の有効期限があり、 3日のクヌルダりンでほずんどの攻撃が排陀されたす。䞀般的なパッケヌゞマネヌゞャヌやツヌルのための安党なデフォルト蚭定のコレクションを維持しおいたす。䜿っおください。それに貢献したしょう。

ビルド時にSBOMを生成したす

むンシデントが発生したずき、最初の疑問は垞に「私たちは圱響を受けおいるのか?」です。docker buildxを䜿っお画像を䜜成すれば、ビルド䞭にSBOMや出所蚌明を生成・付䞎できたす。眲名しおください。画像ず䞀緒に保存したしょう。次のAxiosやTrivyが動くずきは、ラむブのKubernetesポッドに実行しお䜕が動いおいるかを調べるのではなく、ビルドのメタデヌタをチェックしたす。Docker Scoutは、既知の脆匱性やポリシヌ違反に察しおこれらのSBOMを継続的に監芖できたす。

CI/CDを安党に保ちたしょう

すべおのCIランナヌを朜圚的な突砎点ずしお扱いたしょう

TeamPCPの認蚌情報盗甚装眮はCI/CDパむプラむン内で動䜜し、プロセスメモリをダンプし、 50+ファむルシステムパスから秘密をスむヌプしおいたした。ワヌクフロヌステップにアクセス可胜なものは、そのステップで䟝存関係を䟵害する攻撃者にもアクセス可胜です。GitHub Actionsでpull_request_targeトリガヌは絶察に必芁な堎合を陀き避け、明瀺的なセキュリティチェックも行っおください。これはTeamPCPが秘密にアクセスできるベヌスリポゞトリの文脈でコヌドを実行するために䜿っおいたたさにこの仕組みです。各ワヌクフロヌステップが到達できる秘密情報を監査したしょう。スキャンステップがあなたのデプロむメント認蚌情報にアクセスできるなら、それはスキャンの問題ではなくブラスト半埄の問題です。

短呜で範囲の狭い資栌情報を䜿う

Trivyの挏掩の根本原因は、 33+ワヌクフロヌ党䜓で広範な範囲で䜿甚される単䞀のパヌ゜ナルアクセストヌクンでした。短呜で範囲の狭い資栌を䜿いたしょう。単䞀のトヌクンがクロスリポゞトリや組織党䜓のアクセス暩を䞎えるべきではありたせん。ワヌクフロヌファむルに散らばる環境倉数ではなく、シヌクレットマネヌゞャヌを䜿いたしょう。この分野は、Docker Hubを含む゚コシステムが匕き続き改善すべき分野であり、私たちは積極的に取り組んでいたす。

内郚ミラヌやアヌティファクトプロキシを䜿いたしょう

建築システムず公開レゞストリヌの間にArtifactory、CodeArtifact、たたはNexusを配眮しおください。パむプラむンに届く前に、バヌゞョンをスキャンしお承認しおください。Docker Businessの顧客は、Registry Access ManagementやImage Access Managementを䜿っお、開発者が取埗できるレゞストリヌやむメヌゞを制限するこずもでき、完党なアヌティファクトプロキシを実行しないチヌム向けに軜量なポリシヌレむダヌを提䟛したす。

本番環境の秘密が存圚しない䟝存関係の曎新をテストしたす

本番環境の認蚌情報にアクセスできない開発・ステヌゞング環境でのアップデヌトを評䟡する。悪意のあるパッケヌゞがステヌゞングで実行されおも、䟡倀あるものは䜕も盗たれたせん。

゚ンドポむントを安党にしたしょう

ここからほずんどの攻撃が始たる。TeamPCP、Shai-Hulud、そしお今のAxiosはいずれも、開発者マシンからドットファむル、環境倉数、SSHキヌ、ブラりザセッション、クラりド蚭定に保存された認蚌情報をスむヌプするむンフォスティヌラヌを展開しおいたす。CI/CDパむプラむンの保護は重芁ですが、パむプラむンを䜜成する開発者マシンが䟵害された堎合、攻撃者はその開発者が到達できるものを継承したす。

カナリアトヌクンの展開

AWSキヌ、APIトヌクン、SSHキヌなど停の認蚌情報をフリヌト党䜓に配眮し、それは盗み出された際に譊告する以倖に目的のないものです。むンフォスティヌラヌがマシンをスむヌプするず、本物の認蚌情報が䜿われる前にカナリアトヌクンが発射されたす。TracebitやCanarytokensのようなツヌルがあれば、これを簡単にできたす。MDM゜リュヌション(Jamf、Intune、Jumpcloud)があれば、すべおの管理デバむスにカナリアをプッシュしおください。これを1日以内に艊隊党䜓に展開したした。

資栌のクリヌンアップ スプロヌル

監査 ~/.ssh/、 ~/.aws/credentials、 ~/.docker/config.json、.envファむルやハヌドコヌディングされた秘密のシェル履歎などです。すべおパスワヌドマネヌゞャヌや秘密保管庫(1パスワヌド、HashiCorpの保管庫)に移しおください。すべおのSSHキヌをパスフレヌズ保護。クリアテキスト認蚌情報のないマシンにたどり着いたむンフォスティヌラヌは、䜕の圹にも立たない。開発者ツヌル党䜓にむンストヌルされおいる拡匵機胜やプラグむン(IDE拡匵機胜、ブラりザ拡匵機胜、スキル、プラグむン、MCPサヌバヌなどのコヌディング゚ヌゞェント拡匵など)を監査しおください。これらは開発者レベルの暩限で動䜜する傟向があり、ほずんどのマヌケットプレむスは初回公開埌に曎新を再審査したせん。

行動怜出付きのEDRを展開する

゚ンドポむントの怜出および察応ツヌルは、既知のマルりェアシグネチャだけでなく、認蚌情報スりィヌピング、氞続化メカニズム、異垞なプロセス挙動に察応するために怜出されるべきです。

AI開発の安党を確保する

AIコヌディング゚ヌゞェントは、業界がようやく認識し始めた圢でサプラむチェヌンリスクを増倧させおいたす。゚ヌゞェントはパッケヌゞをむンストヌルし、蚭定を修正し、API呌び出しを行い、開発者レベルのアクセス暩を持぀コンテナを立ち䞊げたす。゚ヌゞェントによっお匕き寄せられた䟝存関係が䟵害された堎合、䟵害された開発者マシンず同じ範囲を持ち、これらの゚ヌゞェントを利甚する人には、怪しい行動を認識できない非開発者も含たれるようになりたした。

サンドボックス環境で゚ヌゞェントを動かす

Docker Sandbox(sbx)は 、Claude Code、Gemini CLI、CodexなどのAIコヌディング゚ヌゞェントを分離されたmicroVM内で実行したす。各サンドボックスはホストから完党に分離された独自のカヌネル、ファむルシステム、Docker Engine、ネットワヌクを持っおいたす。認蚌情報はホストプロキシによっおHTTPヘッダヌに泚入され、VMに盎接入るこずはありたせん。ネットワヌクアクセスはデフォルトで拒吊されおおり、明瀺的な蚱可リストがありたす。䟵害された䟝存関係がサンドボックス内で動䜜しおいる堎合、ホストのファむルシステム、Dockerデヌモン、他のコンテナ、たたは明瀺的に承認しおいないドメむンには届くこずができたせん。

MCPサヌバヌを管理したしょう

モデルコンテキストプロトコルサヌバヌは、新たな未怜蚌の䟝存関係です。圌らは広範な暩限で動䜜し、AI゚ヌゞェントを内郚システムに接続し、分析されたMCPサヌバヌの43%にコマンドむンゞェクションの欠陥がありたす。MCPサヌバヌには眲名枈みのハヌド化むメヌゞを䜿甚しおください。Dockerは 300+怜蚌枈みのMCPサヌバヌむメヌゞを、DHIず同じSLSA/SBOM暙準で管理しおいたす。Dockerの MCPゲヌトりェむ は、すべおの゚ヌゞェント間トラフィックに察しお、䞭倮集暩的なプロキシ、ポリシヌ匷制、シヌクレットブロッキング、監査ログを提䟛したす。

ツヌル数を枛らし、䞭倮集暩で管理する暙準化

すべおのAIツヌルやモデルを動かしたくなる誘惑がありたす。やめお。信頌できるスタックに統合し、MDM経由で管理された構成をプッシュし、Docker Desktopの管理機胜(レゞストリアクセス管理、プロキシ蚭定、むメヌゞアクセス管理)を䜿っお、゚ヌゞェントが䜕を取埗でき、どこでプッシュできるかを制埡したしょう。

むンシデント察応のための筋肉を぀ける

本番環境のすべおのSBOMを維持したしょう

次の劥協案が出たら、「圱響を受けたすか?」ず数分で答える必芁がありたす。数日ではなく。docker buildxによるビルドタむムSBOMずDocker Scoutの継続的な監芖を組み合わせるこずで、その機胜が埗られたす。゚クスポヌゞャヌを決めるためにコンテナを動かさなければならないなら、すでに遅れをずっおいたす。

プレむブックを甚意しおおいおください

GitHubの組織を凍結する方法、CI/CDを䞀時停止し぀぀すべおを壊さずに行う方法、資栌情報を䞀括取り消し、プレッシャヌの䞭で行う前に顧客にコミュニケヌションを取る方法を知っおおくこず。むンシデント察応のワヌクフロヌを把握する時間は、むンシデント䞭ではありたせん。ただであれば、npm/PyPI/Docker、Hubアカりントの䞍正公開の確認、予期せぬネットワヌク通話や秘密アクセスの最新CIログを確認し、過去 90 日間にCIがアクセスできた長寿呜トヌクンをロヌテヌションしおください。

信頌する前に確認し、重芁な郚分はゆっくりず進めたしょう

ほずんどのサプラむチェヌン攻撃は数時間以内に燃え尜きおしたう。クヌルダりン期間、手動レビュヌゲヌト、あるいは単に 72 時間埅぀などのわずかな遅延が、ほずんどのリスクを排陀したす。採甚のスピヌドは劥協のコストに芋合いたせん。

状況は倉わったので、あなたのデフォルトも倉わるべきです

サプラむチェヌン攻撃の波は単䞀のむンシデントに察応するものではありたせん。これは脅嚁の状況における恒久的な倉化です。攻撃者は、Lazarus Groupのような囜家運営者から、離陞䞭に飛行機を組み立お、AIを䜿っお加速し、ランサムりェアずの提携で収益化を図るTeamPCPやLAPSUS$のような機䌚䞻矩的なティヌン゚むゞャヌたで倚岐にわたりたす。圌らが利甚しおいる゚コシステム、すなわちnpm、PyPI、GitHub Actions、コンテナレゞストリは、信頌モデル自䜓が根本的に倉わっおいたせん。

倉わったのは、防埡者がか぀お暗黙の信頌しか遞択肢でなかったものから、明瀺的な信頌境界を確立する手段を持぀ようになったこずです。ハヌド化されたベヌスむメヌゞ、ビルドタむムの蚌明、サンドボックス化された実行、カナリアベヌスの怜出は、2幎前のこの成熟床レベルでは存圚したせんでした。これらの局を採甚する組織ずそうでない組織の間のギャップは急速に広がるでしょう。

ここで掚奚したこずはすべおDockerで実践しおいたす。公開レゞストリヌから取埗し、CI/CDパむプラむンを運甚し、AI゚ヌゞェントも䜿甚し、あなたず同じ脅嚁アクタヌに盎面しおいたす。これが私たちが自分たちを守る方法です。

参考文献:

著者に぀いお

関連蚘事