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
41
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
90
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
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
400
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
2
320
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
130
シンガポールで登壇してきます
yama3133
0
250
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
Network Firewallやっていき!
news_it_enj
0
170
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
140
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
950
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
14
2.1k
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.6k
実践!既存 Project への AI-Driven Development 適用〜 一ヶ月で Project 唯一のフロントエンドエンジニアを作り出せ〜
lycorptech_jp
PRO
0
230
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Producing Creativity
orderedlist
PRO
348
40k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
A Soul's Torment
seathinner
6
3.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
390
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
So, you think you're a good person
axbom
PRO
2
2.1k
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.
エンジニアの背中を預かる より多くのエンジニアがものづくりに集中できる社会を、セキュリティ面からつくる会社