Slide 1

Slide 1 text

コンテナイメージ脆弱性検知の実践事例 ~ 基礎から応用まで ~ 2025年11月27日 株式会社コドモン 小西達大 聞いてくれよ、うちのAWSセキュリティ事情〜五反田JPビルの集い〜

Slide 2

Slide 2 text

2 経歴 前職ではアプリケーションエンジニアとして従事。 昨年、株式会社コドモンのSREチームにジョイン。 大阪在住。 自己紹介 小西 達大 こにし たつひろ

Slide 3

Slide 3 text

3 目次 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4

Slide 4

Slide 4 text

4 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4

Slide 5

Slide 5 text

5 CONFIDENTIAL - © 2022 CoDMON Inc. 5 脆弱性とは? ● IT資産(ex: ソフトウェア)に存在するセキュリティ上の欠陥のこと ● 攻撃者に利用される可能性がある 2024年に攻撃者が組織に侵入した最も一般的な方法は脆弱性の悪用であり、 33% において初期感染ベクターとして観測されました。 「M-Trends 2025」レポート

Slide 6

Slide 6 text

6 CONFIDENTIAL - © 2022 CoDMON Inc. 6 脆弱性スキャンとは? ● 脆弱性を評価するプロセスのこと ○ IT資産に関する情報を収集 ○ 各スキャナの提供するデータソース(脆弱性データベース)と比較し、脆弱性の有無を判断 & 脆弱性の重要度を評価 ○ 脆弱性に関する情報をレポート

Slide 7

Slide 7 text

7 CONFIDENTIAL - © 2022 CoDMON Inc. 7 脆弱性スキャン vs ペネトレーションテスト ● 脆弱性スキャン: ○ 脆弱性を見つけて報告する ● ペネトレーションテスト: ○ 脆弱性を発見するだけでなく、実際に侵入(攻撃)を試みる

Slide 8

Slide 8 text

8 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4

Slide 9

Slide 9 text

9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 ECR 基本スキャン ● 無料で利用可能 ● Push時の自動スキャン & 任意のタイミングでの手動スキャン ● スキャン対象はOSパッケージのみ

Slide 10

Slide 10 text

10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 ECR 拡張スキャン ● Amazon Inspector と統合 ● イメージをスキャンするための料金が発生 ● Push時の自動スキャン & 継続スキャン ● OSパッケージに加え、プログラミング言語 パッケージの脆弱性もスキャン対象 ● Inspector抑制ルールを用いた脆弱性の抑制 が可能 ● EventBridgeにイベントを発行し、ユーザー に通知させることが可能

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 スキャン対象 / スキャン結果の違い 基本スキャン 拡張スキャン

Slide 13

Slide 13 text

13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 Inspector抑制ルールによる抑制 ● Inspector抑制ルールを設定することで、 特定の脆弱性やパッケージ等の条件で、 抑制することが可能 ● 対応不要と判断された場合や、対応中な ので検知させたくない場合に有用

Slide 14

Slide 14 text

14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 ECR拡張スキャン × EventBridge 通知機構 実装例 EventBridge Rule で 通知対象の重要度を絞る { "detail": { "severity": ["CRITICAL"], "status": ["ACTIVE"] }, "detail-type": ["Inspector2 Finding"], "source": ["aws.inspector2"] }

Slide 15

Slide 15 text

15 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4

Slide 16

Slide 16 text

16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 ポイント1:継続スキャン ● Push時だけでなく、Push済のコンテナイメージ(実際に稼働しているコン テナイメージ)についても継続的にスキャンすることが重要 イメージは実質的に静的なアーカイブファイルで、特定のアプリを実行するために使 用されるすべてのコンポーネントが含まれているため、イメージ内のコンポーネント には重要なセキュリティアップデートが漏れているか、または 古くなっている可能性がある。 完全に最新のコンポーネントで作成されたイメージは、作成後数日から数週間は既 知の脆弱性がないかもしれないが、ある時に 1 つまたは複数のイメージのコンポー ネントに脆弱性が発見されると、イメージはもはや最新のものではなくなる。 NIST SP800-190 アプリケーションコンテナセキュリティガイド

Slide 17

Slide 17 text

17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 実装例:ECR拡張スキャン(Inspector)を使う ● 拡張スキャン設定画面で「継続的スキャンフィルター」を設定することで、 レポジトリ単位で継続スキャンを設定することが可能 (すべてのレポジトリを対象にすることもできる)

Slide 18

Slide 18 text

18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 継続的スキャン設定時のスキャンタイミング ● アーカイブされたコンテナイメージがリストア (Restore) された場合。 ● Amazon Inspector が脆弱性データベースに新しい共通脆弱性識別子 (CVE) 項目を追加し、それがコンテナイメージに関連する場合 。 ○ (例) Linux プラットフォームで発見されうる脆弱性が新規に発見された。 コンテナイメージの中に Ubuntu を使用するものが存在する場合、上記の脆弱性がそのコンテ ナと関連している可能性が高いため、脆弱性がデータベースに追加されたタイミングでスキャ ンが実施される。

Slide 19

Slide 19 text

19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 継続的スキャン対象のコンテナイメージを絞る ● Inspector > ECR 再スキャン期間の設定 ○ イメージ使用日 / 最終プル日 ○ イメージプッシュ日 ● (→例)過去90日以内にPushされた または 過去180日以内に 少なくとも1回Pullされたイメージ

Slide 20

Slide 20 text

20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 継続的検出対象のコンテナイメージを絞る ● Inspector > 抑制ルール の設定で、使用中のコンテナイメージに絞った条件 を設定可能 ● ImageInUseCount ○ イメージが使用されているコンテナ数 ○ From >= 0 To <= 0 ○ 使用されているイメージのみ対象

Slide 21

Slide 21 text

21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 ポイント2:脆弱性スキャンをCICD工程に組み込む ● 脆弱性スキャンをCICD工程に組み込むことで、脆弱性を含むコンテナイメー ジが本番環境にデプロイされることを防ぐ(レジストリにPushさせない) ● より早期の開発段階で脆弱性に気づけるようにする(シフトレフト) 組織はビルドとデプロイのプロセスの各段階において「品質ゲート」を作成し、組織 の脆弱性ポリシーと構成ポリシーを満たすイメージのみが進行を許可されることを 確実にすることが望ましい。 例えば、組織は、ビルドプロセスにおいて、選択されたしきい値を超える共通脆弱性 評価システム(CVSS)の評価を持つ脆弱性を含むイメージの進行を防止するため のルールを設定できることが望ましい NIST SP800-190 アプリケーションコンテナセキュリティガイド

Slide 22

Slide 22 text

22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 実装例:Inspector CICD統合機能を使う ● ビルド済みのコンテナイメージに対して脆弱性スキャンを行う ● Inspectorの場合、CI/CD統合機能を用いて実現可能 1. ビルドしたコンテナイメージから SBOM(ソフトウェア部品表)を生成 2. SBOMをAmazon Inspectorに送信 し、脆弱性レポートを生成

Slide 23

Slide 23 text

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 }}

Slide 24

Slide 24 text

24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 注意点 ● Amazon Inspector CICD統合機能では、今のところ抑制機能は用意されていな いので、(必要な場合は)自前で実装が必要 ○ https://github.com/aws-actions/vulnerability-scan-github-action-for-amazon-inspector /issues/90

Slide 25

Slide 25 text

25 はじめに:脆弱性スキャンとは 実践(基礎編):ECRスキャンを用いた基本的な実践事例 実践(応用編):セキュアな運用を意識した実践事例 まとめ:今後の展望 1 2 3 4

Slide 26

Slide 26 text

26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 今後の展望 ● As-Is: ○ 一部サービスに応用編の構成を導入 ● To-Be: ○ 応用編の構成をすべてのサービスに導入したい ■ よりセキュアな運用に ■ 脆弱性対応ワークロード(検知 ~ 判断 ~ 対応(or 抑制))は各チームで自律的に実施 ■ 各チームの脆弱性対応状況は管轄チームが把握できるようにしたい 脆弱性検知プラットフォームの構築

Slide 27

Slide 27 text

27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 今後の展望 Inspector Trivy コスト $0.03 / スキャンされたイメージ数毎 $0.01 / 再スキャン毎 無料 運用負 荷 レポート情報は見やすく、充実している 抑制手順が別々(ビルド時のスキャンは、 独自の脆弱性抑制機構を利用。継続スキャ ンの場合はInspectorの抑制ルールを利 用) 統一された抑制手順(.trivyignore) 構成の 簡素さ 作り込みが少なく簡素 他AWSサービスと連携可能 継続的スキャン部分や通知まわりなど、一定 の作り込みが必要そう

Slide 28

Slide 28 text

28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 まとめ ● ECR拡張スキャン(Inspector)を用いれば、作り込み少なく脆弱性検知機構 を構築できる ● よりセキュアな運用にするには「継続スキャン」「CICD工程への組み込み」と いう観点が重要 ○ こちらもInspectorの機能を用いてシンプルに構築できる ○ よりな大規模サービス / 大規模組織への統合展開を考え出すと、最適な脆 弱性スキャンツールについて検討の余地がある

Slide 29

Slide 29 text

No content