Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / su...
Search
GMO Flatt Security
July 22, 2026
Technology
26
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
GMO Flatt Security
July 22, 2026
More Decks by GMO Flatt Security
See All by GMO Flatt Security
セキュアなコンテナイメージをつくろう 〜CVE-free コンテナイメージ「Takumi Images」の概要と裏話〜
flatt_security
0
82
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
3
4.2k
Mastra ソフトウェアサプライチェーン攻撃の概要と対応指針
flatt_security
1
56
ソフトウェアサプライチェーン攻撃対策として今からサクッとできること
flatt_security
2
260
更なる npm パッケージ侵害事件「Mini Shai-Hulud」徹底解説
flatt_security
1
570
Bitwarden ソフトウェアサプライチェーン攻撃 詳細解説
flatt_security
4
1.7k
axios, LiteLLM...不使用だったのでOK、ではない。「次に備える」ソフトウェアサプライチェーン侵害への対策
flatt_security
6
6k
情報科学若手の会・セキュリティ若手の会 春の陣2026
flatt_security
0
340
GitHub Actions侵害 — 相次ぐ事例を振り返り、次なる脅威に備える
flatt_security
14
9.5k
Other Decks in Technology
See All in Technology
CIで使うClaude
iwatatomoya
0
290
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
3
810
発表と総括 / Presentations and Summary
ks91
PRO
0
140
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
920
Network Firewallやっていき!
news_it_enj
0
170
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
800
ガバナンスの「ちょうどいい落とし所」を探れ!開発スピードを妨げない運用判断の勘所 / SRE NEXT 2026
genda
1
250
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
400
穢れた技術選定について
watany
17
5.6k
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
120
企業でAWS Organizationsを動かすための組織設計の考え方
nrinetcom
PRO
1
110
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
860
Ethics towards AI in product and experience design
skipperchong
2
330
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
250
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
460
Speed Design
sergeychernyshev
33
1.9k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
530
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
390
Believing is Seeing
oripsolob
1
170
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Transcript
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 AI DevEx Conference 2026 プロダクトセキュリティ事業部 イネーブルメントプラットフォーム部 山川
大貴@dai_shopper3
自己紹介 山川 大貴 @dai_shopper3 GMO Flatt Security(株) イネーブルメントプラット フォーム部 ソフトウェアエンジニア
2021年、Flatt Security(現・GMO Flatt Security) に新卒入社 セキュリティエンジニアとして、多数のWebアプリ ケーション診断やFirebase診断に従事 現在はソフトウェアサプライチェーン領域で パッケージ全量解析基盤の開発・研究を牽引 © 2026 GMO Flatt Security Inc. All Rights Reserved.
私たちは Takumi Guard を作っています 約4,000万件/dayのパッケージダウンロードを守る その裏側で、公開される全バージョンを全量解析している 1件を深く掘ると、攻撃の仕組み/狙いが分かる 全量を俯瞰すると、攻撃の広がり/繋がりが分かる 両方が見えると、守り方を実態から逆算して選べる ©
2026 GMO Flatt Security Inc. All Rights Reserved.
本日の構成 事例から見るリスクの構造 全量解析で捉えた攻撃の実態 開発者体験を損なわない守り方 © 2026 GMO Flatt Security Inc.
All Rights Reserved.
エンジニアの背中を預かる より多くのエンジニアがものづくりに集中できる社会を、セキュリティ面からつくる会社
提供サービス 脆弱性診断・ペネトレーションテストを プロフェッショナルサービス / AIで多角的に提供 専門家・高度診断 AI・継続診断 コード・仕様の分析も行い、 専門家が脆弱性を網羅的に発見 継続的なセキュリティレビューを
AIエージェントで簡単に実現
脆弱性の検出・修正とソフトウェア サプライチェーンリスク対策をAIが自動化 Takumiは、①LLMによる高度なセキュリティ診断(AI DAST, SAST)と脆弱性の自動修正 ②マルウェアパッ ケージのブロックとCI/CD環境のセキュリティ可視化 により”今”開発組織が備えるべきリスクに備えます。 月額 7万円
(税抜)
Takumi Images を今月リリースしました! https://flatt.tech/takumi/features/images © 2026 GMO Flatt Security Inc.
All Rights Reserved.
第1部 事例から見るリスクの構造
直近のソフトウェアサプライチェーン侵害の概観 2025〜2026 にかけて事案は連続し、攻撃の質も変わってきている 侵入経路は毎回異なるが、狙いは開発者のクレデンシャルで共通 2026/4 2025/3 reviewdog・tj-actions @bitwarden/cli GitHub Actions
の侵害 Trusted Publishing の悪用 2026/3 axios / LiteLLM / Telnyx publish 権限の奪取 2026/5 Laravel-lang git タグの書き換え 2026/4〜6 2026/6 Mastra Shai-Hulud 系 亜種・模倣が拡散 国家系の関与疑い 本日深掘り (例: Miasma / Hades) © 2026 GMO Flatt Security Inc. All Rights Reserved.
本日深掘りする事案: Mastra 侵害の概要 Mastra 関連パッケージが侵害され、端末を狙う RAT が仕込まれた Microsoft は本件を国家系アクター Sapphire
Sleet に帰属(axios 侵害と同一グループ) 発生時期 侵入経路 約 5 時間後に npm から除去 140+ パッケージに RAT: 遠隔から 悪性依存を注入 任意コマンド実行 2026/6/17 検体構成 npm アカウント dropper→RAT 乗っ取り 端末に常駐 主たる標的 開発者端末の クレデンシャル クラウド・CI・ ウォレット等 出典: Microsoft Security Blog (2026/6/17), mastra-ai/mastra#18045 © 2026 GMO Flatt Security Inc. All Rights Reserved.
Mastra: 攻撃チェーンの全体像 乗っ取りから永続化まで、6 ステップで開発者端末に到達している install される前(利用者には正規の更新に見える) 1 乗っ取り 2 準備
6 永続化 5 RAT 3 注入 npm アカウントを dayjs を騙る 奪取する easy-day-js を用意 install してから(利用者の環境で発火) package.json に 依存を 1 行追記 再起動後も 残り続ける install 時に 自動で起動する 常駐して端末の 認証情報を窃取 4 dropper © 2026 GMO Flatt Security Inc. All Rights Reserved.
攻撃が刺さる面その1: 受け入れ時(dependency) install だけで、推移的依存を含めてコードが自動実行される 本講演ではここを「受け入れ面」と呼ぶ install しただけで lifecycle script が走る。npm
install は推移的依存の分まで実行する 依存ツリーのどこか1つの侵害で、端末や CI で任意コードが動く axios も Mastra もこの自動実行が侵害点だった # package.json "scripts": { "postinstall": "node setup.js" ← install しただけで実行される } © 2026 GMO Flatt Security Inc. All Rights Reserved.
攻撃が刺さる面その2: 実行環境(CI/CD) 同種の攻撃は、publish や実行を担う CI/CD パイプラインも狙う 本講演ではここを「実行面」と呼ぶ @bitwarden/cli は publish
workflow が改変され、Trusted Publishing の正規フローに 乗って悪性版が公開された TanStack は workflow 未改変で、pull_request_target の Pwn Request から実行中の CI の OIDC トークンを奪取して公開された CI/CD 環境が侵害されると、設定されている本番権限や secrets がそのまま攻撃者に渡る © 2026 GMO Flatt Security Inc. All Rights Reserved.
なぜ同じ侵害が繰り返されるのか 4 つの構造的条件が、攻撃を再現可能で経済的にしている 1 install 時の自動実行 2 牧歌的な依存管理 3 高い攻撃の経済性
4 連鎖的な波及 依存を入れただけでコードが走る 仕組みが標準として存在する 人気パッケージを 1 つ侵害するだけで 利用者全体へ一度に届く 最新版をそのまま引き込む運用が残り 受け入れ時の審査がほぼない 推移的依存解決を介して波及し 直接使っていない組織にも及ぶ © 2026 GMO Flatt Security Inc. All Rights Reserved.
AI エージェントが依存を選ぶ時代へ コーディングエージェントが依存の選定から install までを代行し始めている 開発生産性が上がるほど、受け入れ面の判断は無人化していく 従来 開発者 調べて選ぶ 確認する
✓ 人の目が挟まる install 提案と選定を代行 確認 install AI エージェント時代 コーディング エージェント 挟まりにくい AI が実在しない名前を勧め、攻撃者が先回りで登録していた(slopsquatting) © 2026 GMO Flatt Security Inc. All Rights Reserved.
第1部まとめ: リスクは2つの面に集約される 攻撃が成立するのは「受け入れ時(dependency)」と「実行時(CI/CD)」の2面 面 1・受け入れ時(dependency) 面 2・実行時(CI/CD) 例: axios /
@bitwarden/cli / Mastra 例: @bitwarden/cli / TanStack / reviewdog 依存を入れた瞬間にコードが自動で走る lifecycle script が発火点になる 推移的な依存の分まで実行される infostealer が端末クレデンシャルを狙う → 備え: 受け入れの瞬間に止める層 publish や実行のパイプラインが狙われる Trusted Publishing や pull_request_target を悪用する 本番権限と secrets を握り被害が広がる → 備え: 実行時の挙動を可視化する層 この2面が、後半で示す備えの軸になる © 2026 GMO Flatt Security Inc. All Rights Reserved.
第2部 全量解析で捉えた攻撃の実態
全量リアルタイム解析とは 1件を調べるのではなく、publish される全バージョンを検査している 週次スキャンではなく、publish された瞬間に検査が走る レジストリ 全量解析 npm 静的解析 メタデータ
/ 実コード PyPI リアルタイム 既知の悪性パターン検出 取り込み RubyGems イベントを逐次処理 動的解析 Packagist サンドボックス実行 Go Modules 通信・プロセス挙動 判定 allow block 正常 悪性 © 2026 GMO Flatt Security Inc. All Rights Reserved.
どれだけ見ているか 毎日 約 12 万バージョン (※直近 30 日平均) 累計 約
2,100 万バージョンを検査(2026/7 時点) この母数を常時見ているから、個別事案では見えない分布が見える 同じ理由で、点と点の繋がりも見える 日次 publish バージョン数(緑 = 週末帯 / 直近 30 日) 平均 約 12 万 / 日 15 万 10 万 5万 0 6/6 6/13 6/20 6/27 7/4 © 2026 GMO Flatt Security Inc. All Rights Reserved.
定番の型の上で、攻撃は進化している 攻撃の手口はテンプレート化し、その上でさらに新しい型が観測されている 定番の型(これまで) typosquat lifecycle dropper infostealer RAT(常駐型) 誤インストールを狙う install
で第一段を起動 最近の観測(進化の最前線) 進化 認証情報を持ち出す Mastra が該当 常駐して遠隔操作 発火点の多様化 build 時 / import 時 / IDE で開いた瞬間にも発火 例: Miasma / Hades 信頼チェーンの悪用 OIDC / SLSA を突破し「正規ビルド」として発行 例: IronWorm / Hades カーネルレベルの隠蔽 eBPF ルートキットで /proc や通信を隠す 例: IronWorm © 2026 GMO Flatt Security Inc. All Rights Reserved.
点が線になる その1: 同一インフラの共有 無関係に見える複数パッケージが、同じ C2 や持ち出し先を共有していることがある Mastra でも、1ヶ月前から同じ C2 に接続する先行パッケージが公開されていた
@iconifi/react 5/19 公開・typosquat tiny-naturalsort 5/27 公開・ユーティリティ装い 同一 C2 インフラ 実ホスト名は非公開 easy-day-js 6/17 悪性版・Mastra に注入 © 2026 GMO Flatt Security Inc. All Rights Reserved.
点が線になる その2: 公開順序とワーム拡散 攻撃者はレビュー回避のため publish の順序を設計し、拡散も時系列で進む easy-day-js も、無害版の公開から約半日後に悪性版が公開されていた 公開順序の設計 依存
良性に見える B 馴染ませておく t1 先に公開 ワームの自己伝播 悪性版 A B に依存して公開 t2 後から公開 A だけ見ると、B は普通の依存に見える 時系列を全量で見ると、繋がりが見える 侵害された パッケージ 別パッケージ … 別パッケージ … 盗んだ token で次のパッケージへ広がる 全量+リアルタイムで伝播の波が見える © 2026 GMO Flatt Security Inc. All Rights Reserved.
例: leo-logger の発火チェーン 静的スキャンが見るのは発火まで。実行を追うと、常駐バックドアまで捉えられる 我々がサンドボックス上で実際に走らせて確認した挙動 静的スキャンが見える範囲 install binding.gyp 発火 npm
i leo-logger ビルド時に実行 実行しないと見えない範囲 認証情報を窃取 常駐スクリプト AWS / SSH / PAT 等 GitHub を悪用 © 2026 GMO Flatt Security Inc. All Rights Reserved.
leo-logger は GitHub を指令サーバ(C2)に使う 被害者マシン 常駐スクリプトが 毎時ポーリング 検索 取得 GitHub
コミット検索 api.github.com/search q = firedalazer 攻撃者 合言葉つきコミットを リポジトリに push firestorm <URL(base64)>.<RSA署名> 1. RSA 署名を検証(秘密鍵を持つ攻撃者だけが命令を出せる) 2. base64 の URL からペイロードを取得して実行する 3. 正規サービス経由のため既知の C2 リスト・DNS ブロックに載らない © 2026 GMO Flatt Security Inc. All Rights Reserved.
全量解析から言えること 攻撃は量産され、繋がり、公開と同時に来る 01 型で量産される 母数が多すぎて 人手の審査は回らない 02 キャンペーンに連結する 横断して見ないと 繋がりに気づけない
03 公開と同時に到来する 公式アドバイザリ待ちでは 間に合わない 人の注意力に依存せず、自動で効く層を「受け入れの瞬間」に置く © 2026 GMO Flatt Security Inc. All Rights Reserved.
第3部 開発者体験を損なわない守り方
備えの全体像 2つの面に、影響最小化と発生機会縮小の2原則で層を重ねる 銀の弾丸はない。一般策を層で重ねる。 面 1・受け入れ時(dependency) 面 2・実行時(CI/CD) 例: axios /
@bitwarden/cli / Mastra 例: @bitwarden/cli / TanStack / reviewdog 依存を入れた瞬間にコードが自動で走る lifecycle script が発火点になる 推移的な依存の分まで実行される infostealer が端末クレデンシャルを狙う → 備え: 受け入れの瞬間に止める層 publish や実行のパイプラインが狙われる Trusted Publishing や pull_request_target を悪用する 本番権限と secrets を握り被害が広がる → 備え: 実行時の挙動を可視化する層 © 2026 GMO Flatt Security Inc. All Rights Reserved.
受け入れ時: Dependency Cooldown 公開直後のバージョンを数日避けるだけで、多くの侵害は引き込まずに済む # npm (.npmrc) min-release-age=7 # Python
(uv) uv add --exclude-newer "7 days" <pkg> 大きな侵害は誰かが気づいてくれる。これに頼って最新を急がない ただし長期潜伏検体もあり、待てば安全とは限らない 緊急パッチとのトレードオフは運用で調整する 例えば「7日未満は使わない」を組織のルールにし、テンプレートや CI で強制する © 2026 GMO Flatt Security Inc. All Rights Reserved.
受け入れ時: 自動実行の停止と不変参照 install 時の自動実行を止め、参照を不変に固定するだけで攻撃面が減る npm install --ignore-scripts # 自動実行を止める npm
approve-scripts # npm 12 は既定でオフ・承認制 - uses: actions/checkout@<sha> # SHA で固定 npm ci # lockfile で再現 n pm 12 で、install スクリプトも binding.gyp の node-gyp ビルドも既定で無効になった tag や latest ではなく commit SHA / hash に固定し、lockfile で再現性を担保する ただし発火点は import / IDE へも広がり、install 側の対策だけでは塞ぎきれない © 2026 GMO Flatt Security Inc. All Rights Reserved.
受け入れ時: キュレーション層を挟む 公式レジストリ直アクセスではなく、悪性パッケージを検査・遮断する層を間に置く これは一般的な防御の型。そういったサービスを提供している中の一つが Takumi Guard # レジストリを差し替えるだけ npm config
set registry https://npm.flatt.tech/ # 対応: npm / PyPI / RubyGems / Go / Packagist レジストリと自社の間に検査層を挟み、悪性パッケージを到達前に止める ブロックリストは第2部で見せた全量解析が作り、Takumi Guard がそれを元にブロックする レジストリ設定なので、人にもエージェントにも同じように効き、開発を止めない MDM で配れば全端末に行き渡り、インストールログで「取り込んだのか」に答えられる © 2026 GMO Flatt Security Inc. All Rights Reserved.
実行時: 影響範囲を絞る 侵害が起きても被害が広がらない構造を、平時から作っておく 対策 ビルドとデプロイを分離する キーレスフェデレーション(OIDC) devcontainer / fence /
docker 端末のシークレット散在を最小化 効果 ビルド侵害が本番に直結しない 長期 secret 漏洩のルートを消す install・開発時の被害を sandbox に閉じ込める 端末侵害時の流出量を減らす © 2026 GMO Flatt Security Inc. All Rights Reserved.
実行時: 監視の死角は CI/CD 侵害に気づき、後から調べる監視の目。CI/CD だけが死角 端末 クラウド本番 CI/CD EDR 等
GuardDuty 等 トレースが取りづらい 開発者の PC 気づいて調査できる 監視あり AWS などの実行環境 既知の脅威に気づける 監視あり GitHub Actions 何が起きたか追えない 監視の死角 © 2026 GMO Flatt Security Inc. All Rights Reserved.
実行時: CI/CD ジョブの挙動を可視化する 実行時の挙動そのものを見れば、監視の死角を埋められる これも一般的な備えの型。解決策の一つが弊社 Takumi Runner runs-on: takumi-runner #
ここを差し替えるだけ steps: - run: npm ci && npm run build © 2026 GMO Flatt Security Inc. All Rights Reserved.
2層の備えまとめ 受け入れ面と実行面、それぞれに開発を止めない層を重ねる 面 受け入れ dependency 実行 CI/CD 重ねる対策 Cooldown ・
ignore-scripts ・ SHA pinning / lockfile キュレーション層 → Takumi Guard ビルドとデプロイの分離 ・ OIDC ・ サンドボックス隔離 → Takumi Runner 挙動の可視化 © 2026 GMO Flatt Security Inc. All Rights Reserved.
対策の土台: 人と組織にも備えが要る ここまで紹介したツールの層が実際に機能するかどうかは、人と組織の備えで決まる 理由を知らないルールは、例外申請で迂回される。教育は「誰に・何を」まで決める 有事の判断と初動が機能するかは、訓練して初めて分かる 備えが効いているかは、チェックリスト照合ではなく、自社で成立する攻撃パスで確かめる © 2026 GMO Flatt
Security Inc. All Rights Reserved.
対策の土台: SSC 診断の攻撃シナリオ例 STEP1 侵 害 公開パッケージ シ ナ の侵害
リ オ 対 策 例 STEP2 STEP3 侵害された パッケージの インストール 悪意ある コードの実行 依存パッケージの監視 ロックファイルの固定 install スクリプトの 無効化 STEP4 STEP5 デプロイトークン 経由で本番環境に 到達 CIジョブの secretsの窃取 GitHub PAT経由で ソースコード 改ざん 外向き通信の遮断 / 監視 ジョブ環境の隔離 トークン権限の最小化 / 有効期限の管理 監査ログによる検知 © 2026 GMO Flatt Security Inc. All Rights Reserved.
本日のまとめ 実態を捉えれば、守り方は実態から選べる 1件を掘ると仕組みが、全量を見ると規模と繋がりが分かる リスクは受け入れ面と実行面に集約され、AI エージェントの普及は受け入れ面の無人化を 進める 2つの面に対策を層で重ね、ツールは特定の層を担う AI が依存を「入れる」時代。守りも、人手に頼らず、自動で効く層へ。 ©
2026 GMO Flatt Security Inc. All Rights Reserved.
エンジニアの背中を預かる より多くのエンジニアがものづくりに集中できる社会を、セキュリティ面からつくる会社