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
コンテナイメージ脆弱性検知の実践事例 ~ 基礎から応用まで ~
Search
Konishi tatsuhiro
November 28, 2025
56
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンテナイメージ脆弱性検知の実践事例 ~ 基礎から応用まで ~
聞いてくれよ、うちのAWSセキュリティ事情〜五反田JPビルの集い〜 の発表資料です。
https://codmon.connpass.com/event/371471/
Konishi tatsuhiro
November 28, 2025
More Decks by Konishi tatsuhiro
See All by Konishi tatsuhiro
アラート疲れからの脱却 - リソースタグで仕分けるSlack通知戦略
tatsukoni
1
78
少人数SREチームが、長寿なシステムを構築・運用するための取り組み
tatsukoni
0
8
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
420
ECSとEFSを組み合わせた Batchサーバー デプロイ方法の模索
tatsukoni
0
63
コンテナイメージを複数のチームで扱うための、ビルドフローの構築・運用
tatsukoni
0
160
休日・夜間のインスタンス自動停止をSREチームで運用してみた
tatsukoni
0
32
手付かずだったSecurity Hub運用を改善した話
tatsukoni
0
39
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
230
The SEO identity crisis: Don't let AI make you average
varn
0
490
WCS-LA-2024
lcolladotor
0
630
How STYLIGHT went responsive
nonsquared
100
6.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Crafting Experiences
bethany
1
180
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Transcript
コンテナイメージ脆弱性検知の実践事例 ~ 基礎から応用まで ~ 2025年11月27日 株式会社コドモン 小西達大 聞いてくれよ、うちのAWSセキュリティ事情〜五反田JPビルの集い〜
2 経歴 前職ではアプリケーションエンジニアとして従事。 昨年、株式会社コドモンのSREチームにジョイン。 大阪在住。 自己紹介 小西 達大 こにし たつひろ
3 目次 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4
4 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4
5 CONFIDENTIAL - © 2022 CoDMON Inc. 5 脆弱性とは? •
IT資産(ex: ソフトウェア)に存在するセキュリティ上の欠陥のこと • 攻撃者に利用される可能性がある 2024年に攻撃者が組織に侵入した最も一般的な方法は脆弱性の悪用であり、 33% において初期感染ベクターとして観測されました。 「M-Trends 2025」レポート
6 CONFIDENTIAL - © 2022 CoDMON Inc. 6 脆弱性スキャンとは? •
脆弱性を評価するプロセスのこと ◦ IT資産に関する情報を収集 ◦ 各スキャナの提供するデータソース(脆弱性データベース)と比較し、脆弱性の有無を判断 & 脆弱性の重要度を評価 ◦ 脆弱性に関する情報をレポート
7 CONFIDENTIAL - © 2022 CoDMON Inc. 7 脆弱性スキャン vs
ペネトレーションテスト • 脆弱性スキャン: ◦ 脆弱性を見つけて報告する • ペネトレーションテスト: ◦ 脆弱性を発見するだけでなく、実際に侵入(攻撃)を試みる
8 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4
9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 ECR 基本スキャン
• 無料で利用可能 • Push時の自動スキャン & 任意のタイミングでの手動スキャン • スキャン対象はOSパッケージのみ
10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 ECR 拡張スキャン
• Amazon Inspector と統合 • イメージをスキャンするための料金が発生 • Push時の自動スキャン & 継続スキャン • OSパッケージに加え、プログラミング言語 パッケージの脆弱性もスキャン対象 • Inspector抑制ルールを用いた脆弱性の抑制 が可能 • EventBridgeにイベントを発行し、ユーザー に通知させることが可能
11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 スキャン対象 /
スキャン結果の違い ├── Dockerfile ├── index.ts ├── node_modules ├── package-lock.json ├── package.json └── tsconfig.json FROM node:20.18.0-bookworm-slim WORKDIR /app COPY package*.json ./ COPY tsconfig.json ./ COPY *.ts ./ RUN npm ci && npm run build USER node CMD ["node", "dist/index.js"] { "name": "vulnerable-app-demo", …, "dependencies": { "lodash": "4.17.15", "axios": "0.21.0", "express": "4.16.0", "minimist": "1.2.0", "kind-of": "6.0.2", "serialize-javascript": "2.1.0", "handlebars": "4.5.0", "ua-parser-js": "0.7.20", "node-forge": "0.9.0", "moment": "2.24.0" }, "devDependencies": { "typescript": "4.5.5", "@types/node": "16.11.21", "@types/express": "4.17.13", "@types/lodash": "4.14.178", "@types/minimist": "1.2.2", "@types/serialize-javascript": "5.0.2", "@types/ua-parser-js": "0.7.36", "ts-node": "10.4.0" } } Dockerfile package.json
12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 スキャン対象 /
スキャン結果の違い 基本スキャン 拡張スキャン
13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 Inspector抑制ルールによる抑制 •
Inspector抑制ルールを設定することで、 特定の脆弱性やパッケージ等の条件で、 抑制することが可能 • 対応不要と判断された場合や、対応中な ので検知させたくない場合に有用
14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 ECR拡張スキャン ×
EventBridge 通知機構 実装例 EventBridge Rule で 通知対象の重要度を絞る { "detail": { "severity": ["CRITICAL"], "status": ["ACTIVE"] }, "detail-type": ["Inspector2 Finding"], "source": ["aws.inspector2"] }
15 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4
16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 ポイント1:継続スキャン •
Push時だけでなく、Push済のコンテナイメージ(実際に稼働しているコン テナイメージ)についても継続的にスキャンすることが重要 イメージは実質的に静的なアーカイブファイルで、特定のアプリを実行するために使 用されるすべてのコンポーネントが含まれているため、イメージ内のコンポーネント には重要なセキュリティアップデートが漏れているか、または 古くなっている可能性がある。 完全に最新のコンポーネントで作成されたイメージは、作成後数日から数週間は既 知の脆弱性がないかもしれないが、ある時に 1 つまたは複数のイメージのコンポー ネントに脆弱性が発見されると、イメージはもはや最新のものではなくなる。 NIST SP800-190 アプリケーションコンテナセキュリティガイド
17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 実装例:ECR拡張スキャン(Inspector)を使う •
拡張スキャン設定画面で「継続的スキャンフィルター」を設定することで、 レポジトリ単位で継続スキャンを設定することが可能 (すべてのレポジトリを対象にすることもできる)
18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 継続的スキャン設定時のスキャンタイミング •
アーカイブされたコンテナイメージがリストア (Restore) された場合。 • Amazon Inspector が脆弱性データベースに新しい共通脆弱性識別子 (CVE) 項目を追加し、それがコンテナイメージに関連する場合 。 ◦ (例) Linux プラットフォームで発見されうる脆弱性が新規に発見された。 コンテナイメージの中に Ubuntu を使用するものが存在する場合、上記の脆弱性がそのコンテ ナと関連している可能性が高いため、脆弱性がデータベースに追加されたタイミングでスキャ ンが実施される。
19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 継続的スキャン対象のコンテナイメージを絞る •
Inspector > ECR 再スキャン期間の設定 ◦ イメージ使用日 / 最終プル日 ◦ イメージプッシュ日 • (→例)過去90日以内にPushされた または 過去180日以内に 少なくとも1回Pullされたイメージ
20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 継続的検出対象のコンテナイメージを絞る •
Inspector > 抑制ルール の設定で、使用中のコンテナイメージに絞った条件 を設定可能 • ImageInUseCount ◦ イメージが使用されているコンテナ数 ◦ From >= 0 To <= 0 ◦ 使用されているイメージのみ対象
21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 ポイント2:脆弱性スキャンをCICD工程に組み込む •
脆弱性スキャンをCICD工程に組み込むことで、脆弱性を含むコンテナイメー ジが本番環境にデプロイされることを防ぐ(レジストリにPushさせない) • より早期の開発段階で脆弱性に気づけるようにする(シフトレフト) 組織はビルドとデプロイのプロセスの各段階において「品質ゲート」を作成し、組織 の脆弱性ポリシーと構成ポリシーを満たすイメージのみが進行を許可されることを 確実にすることが望ましい。 例えば、組織は、ビルドプロセスにおいて、選択されたしきい値を超える共通脆弱性 評価システム(CVSS)の評価を持つ脆弱性を含むイメージの進行を防止するため のルールを設定できることが望ましい NIST SP800-190 アプリケーションコンテナセキュリティガイド
22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 実装例:Inspector CICD統合機能を使う
• ビルド済みのコンテナイメージに対して脆弱性スキャンを行う • Inspectorの場合、CI/CD統合機能を用いて実現可能 1. ビルドしたコンテナイメージから SBOM(ソフトウェア部品表)を生成 2. SBOMをAmazon Inspectorに送信 し、脆弱性レポートを生成
23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 実装例:Inspector CICD統合機能を使う
• 公式から提供されているGithubActionsを用いた実装例 ◦ https://github.com/aws-actions/vulnerability-scan-github-action-for-amazon-inspector jobs: build_scan: name: Build And Scan Container Image runs-on: ubuntu-latest steps: … コンテナイメージビルド工程 - name: Scan built image with Inspector uses: aws-actions/vulnerability-scan-github-action-for-amazon-insp ector@v1 id: inspector with: artifact_type: 'container' artifact_path: 'app:latest' # make sure this matches the image you built display_vulnerability_findings: "enabled" critical_threshold: 1 - name: Fail job if vulnerability threshold is exceeded run: |exit ${{ steps.inspector.outputs.vulnerability_threshold_exceeded }}
24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 注意点 •
Amazon Inspector CICD統合機能では、今のところ抑制機能は用意されていな いので、(必要な場合は)自前で実装が必要 ◦ https://github.com/aws-actions/vulnerability-scan-github-action-for-amazon-inspector /issues/90
25 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4
26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 今後の展望 •
As-Is: ◦ 一部サービスに応用編の構成を導入 • To-Be: ◦ 応用編の構成をすべてのサービスに導入したい ▪ よりセキュアな運用に ▪ 脆弱性対応ワークロード(検知 ~ 判断 ~ 対応(or 抑制))は各チームで自律的に実施 ▪ 各チームの脆弱性対応状況は管轄チームが把握できるようにしたい 脆弱性検知プラットフォームの構築
27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 今後の展望 Inspector
Trivy コスト $0.03 / スキャンされたイメージ数毎 $0.01 / 再スキャン毎 無料 運用負 荷 レポート情報は見やすく、充実している 抑制手順が別々(ビルド時のスキャンは、 独自の脆弱性抑制機構を利用。継続スキャ ンの場合はInspectorの抑制ルールを利 用) 統一された抑制手順(.trivyignore) 構成の 簡素さ 作り込みが少なく簡素 他AWSサービスと連携可能 継続的スキャン部分や通知まわりなど、一定 の作り込みが必要そう
28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 まとめ •
ECR拡張スキャン(Inspector)を用いれば、作り込み少なく脆弱性検知機構 を構築できる • よりセキュアな運用にするには「継続スキャン」「CICD工程への組み込み」と いう観点が重要 ◦ こちらもInspectorの機能を用いてシンプルに構築できる ◦ よりな大規模サービス / 大規模組織への統合展開を考え出すと、最適な脆 弱性スキャンツールについて検討の余地がある
None