Slide 1

Slide 1 text

コンテナサプライチェーンセ キュリティ @kyohmizu CNCJ: ソフトウェアサプライチェーンセキュリティミートアップ

Slide 2

Slide 2 text

whoami Security Engineer at 3-shake inc. ● Container/Kubernetes Security ● AWS/Google Cloud Security ● Security Operations & Technical Support for Blue Team ● Cloud Native Security Assessment Others: ● 3-shake SRE Tech Talk イベント運営 ● 「コンテナセキュリティ」書籍監訳 Kyohei Mizumoto

Slide 3

Slide 3 text

本セッションについて ● コンテナシステムを前提とした、ソフトウェアサプライチェーンのセキュリティを取り扱います ○ コンテナに関連するすべてのアーティファクト(アプリを含む)が対象です ○ アプリ開発者、インフラ担当者向けの内容となります ● ソフトウェアサプライチェーンの中でも、不正なコードを持ち込まないための考え方・対策に焦 点を当てます ○ CI/CD基盤のセキュリティ強化、承認プロセスや権限管理などは対象外とします ● 全体感をお話しする都合上、コンテナ要素が薄くなってしまいましたがご了承ください

Slide 4

Slide 4 text

Agenda 01 コンテナサプライチェーンセキュリティ ・ソフトウェアサプライチェーンとコンテナ ・各種セキュリティフレームワーク 02 コンテナサプライチェーンの脅威 ・脅威の事例紹介 03 具体的なセキュリティ対策 ・対策方法とツールの紹介

Slide 5

Slide 5 text

コンテナサプライチェーンセキュリティ 01

Slide 6

Slide 6 text

ソフトウェアサプライチェーン(SSC)とは ソフトウェアの開発と提供に関わるすべてのコード、人、システム、プロセス ● 作成するコードとその依存関係 ● ソフトウェアの開発、ビルド、パッケージ化、インストール、実行に使用する内部および外部ソフ トウェア ● システムアクセス、テスト、レビュー、監視とフィードバック、コミュニケーション、承認に関するプ ロセスとポリシー ● ソフトウェアとその依存関係の開発、ビルド、保管、実行を担うシステム https://cloud.google.com/software-supply-chain-security/docs/overview

Slide 7

Slide 7 text

ソフトウェアサプライチェーン(図) https://cloud.google.com/software-supply-chain-security/docs/attack-vectors

Slide 8

Slide 8 text

コンテナサプライチェーンのアーティファクト アーティファクト:データの集合、成果物 ● アプリケーションのソースコード ● アプリケーションの依存関係(言語のフレームワークやライブラリ) ● アプリケーションバイナリ ● Dockerfile ● コンテナイメージ ● コンテナの依存関係(ベースイメージ、追加するパッケージ) ● インフラのソースコード( IaC: Kubernetes Manifests, Helm Charts) https://cloud.google.com/software-supply-chain-security/docs/overview

Slide 9

Slide 9 text

コンテナサプライチェーン(図)

Slide 10

Slide 10 text

自社開発とOSS利用 自社開発における責任範囲 ● ソースコードの安全性 ○ 脆弱性(バグや設定ミス)を含まないこと ● ビルドしたアプリケーション、コンテナイメージの安全性 ○ 正規の手順でビルドされたものであること ● 開発プロセスおよびシステムの安全性 OSS利用における責任範囲 ● 利用するOSSの安全性 ○ 正規のソフトウェアであること ○ 脆弱性などの問題が発覚した場合に適切に対処すること 本セッションの対象

Slide 11

Slide 11 text

SSCのセキュリティフレームワーク Supply-chain Levels for Software Artifacts (SLSA) https://slsa.dev/ Secure Supply Chain Consumption Framework (S2C2F) https://github.com/ossf/s2c2f Microsoft - Containers Secure Supply Chain Framework (CSSC) https://learn.microsoft.com/en-us/azure/security/container-secure-supply-chain/ CNCF - Software Supply Chain Best Practices v2 https://github.com/cncf/tag-security/blob/main/community/working-groups/supply-chain-security/ supply-chain-security-paper-v2/SSCBPv2.md CIS - Software Supply Chain Security Guide https://www.cisecurity.org/insights/white-papers/cis-software-supply-chain-security-guide

Slide 12

Slide 12 text

Supply-chain Levels for Software Artifacts (SLSA) https://slsa.dev/spec/v1.0/threats-overview ソフトウェアの開発者、利用者に向けた SSCのセキュリティガイドライン ● サプライチェーンを Source, Build, Dependencies, Package の4つに分類 ● v1.0ではビルドプロセスやプラットフォームに焦点を当てている ● ビルドにおいて、0〜3のセキュリティレベルを定義 ○ ビルド来歴(Provenance)の生成と管理 ○ ビルドプラットフォームのセキュリティ強化 ● SSCの脅威について複数の事例を紹介 ● Attestation モデル、Provenance フォーマットを定義

Slide 13

Slide 13 text

Secure Supply Chain Consumption Framework (S2C2F) OSSの利用者に向けたセキュリティリスク低減のためのフレームワーク ● 8つのセキュリティプラクティスと 4つの成熟度レベルを定義 ○ ただし、レベル4はコストが高く現実的ではないと自ら述べている ● SSCの脅威について複数の事例を紹介 ● 各要件を満たすためのツール(有償 /無償)を紹介 ● 各要件を他のフレームワークと対応付け https://github.com/ossf/s2c2f

Slide 14

Slide 14 text

Containers Secure Supply Chain Framework (CSSC) コンテナライフサイクル全体のセキュリティ管理、統合を目的としたフレームワーク ● コンテナのサプライチェーンを 5つのステージに分類し、プラクティスやツールを紹介 ● 通常のソフトウェアサプライチェーンと観点に相違はなく、コンテナに焦点を当てた内容 ● 実行環境のセキュリティにも言及 https://learn.microsoft.com/en-us/azure/security/container-secure-supply-chain/

Slide 15

Slide 15 text

Software Supply Chain Best Practices v2 ソフトウェアの開発者、提供者、利用者に向けたベストプラクティス集 ● 開発ライフサイクルに沿う形で具体的なプラクティスを紹介 ● ビルドパイプラインやユーザー権限にも言及されており、網羅性が高い ● ツール例はほとんど紹介されていない https://github.com/cncf/tag-security/blob/main/community/working-groups/supply-chain-security/supply-chain-security- paper-v2/SSCBPv2.md

Slide 16

Slide 16 text

コンテナサプライチェーンの脅威 02

Slide 17

Slide 17 text

事例:脆弱性の悪用(Log4shell) Javaのログ出力ライブラリ「Log4j2」で深刻な脆弱性(CVE-2021-44228) ● 外部のclassファイルを読み込む機能を悪用し、任意コード実行が可能 ● 広く利用されているOSSかつ、悪用が容易 ● 脆弱性の公開当初から多数の攻撃を確認 https://piyolog.hatenadiary.jp/entry/2021/12/13/045541

Slide 18

Slide 18 text

事例:ビルドシステムの侵害(SolarWinds) SolarWinds社が開発するOrion Platformにバックドアが仕込まれる ● ソースコードを直接変更するのではなく、ビルドプロセス中に悪意のあるコードを挿入 ● マルウェアは自身の検出を回避するために、様々な偽装や隠蔽を行なっていた ● 米国政府を含む利用組織に被害が発生 https://piyolog.hatenadiary.jp/entry/2020/12/20/045153

Slide 19

Slide 19 text

事例:OSSへの悪意のあるコード挿入(XZ) ファイル可逆圧縮ツールのXZ Utilsに悪意のあるコードが挿入される ● コードを挿入したのはメンテナの一人 ● SSHDが問題のあるライブラリをロードすることで、外部から不正アクセスを受ける ● 様々なLinuxディストリビューションに影響 ● 脆弱性としてCVEが採番(CVE-2024-3094) https://piyolog.hatenadiary.jp/entry/2024/04/01/035321

Slide 20

Slide 20 text

事例:悪意のあるコンテナイメージの公開 Docker Hubでマルウェアを含むコンテナイメージが公開される ● 正規ツール/コンテナと同名のコンテナイメージを公開し、利用者の誤用を狙う ● コンテナにはクリプトマイナーが含まれる ● 多数のダウンロードを確認 https://sysdig.com/blog/analysis-of-supply-chain-attacks-through-public-docker-images/

Slide 21

Slide 21 text

事例:悪意のあるツール等の公開 ● マルウェアを含むpythonパッケージ ○ https://thehackernews.com/2023/11/beware-developers-blazestealer-malware.html ● npmのタイポスクワッティング ○ https://checkmarx.com/blog/a-new-stealthier-type-of-typosquatting-attack-spotted-t argeting-npm/ ● 偽のAWSマシンイメージ ○ https://thehackernews.com/2025/02/new-whoami-attack-exploits-aws-ami-name.html ● GitHub上での正規のOSSを模したマルウェア ○ https://sfujiwara.hatenablog.com/entry/2025/02/11/094755

Slide 22

Slide 22 text

サプライチェーン攻撃の特徴 攻撃側 ● 1つの組織、ソフトウェアの侵害から多数の組織に影響を与えることができる ● セキュリティレベルの高い組織に対し、比較的容易に侵入できる 防御側 ● アタックサーフェスが多岐にわたり、網羅的に対策を実施するのが難しい ● 組織や事業規模が大きくなるほどリスクが高まる ● サプライチェーン上の被害者にも加害者にもなり得る

Slide 23

Slide 23 text

脆弱性がなければ安全か 脆弱性としては検出されない脅威がある ● 攻撃目的で作成されたツール ● 正規のOSSに混入する不正なコード ○ XZの事例のようにCVEが採番されるケースもある ● IaCにはCVEが採番されないため、脆弱性スキャンの対象とならない → 脆弱性対策とは別に、OSSの安全性を確認する必要がある

Slide 24

Slide 24 text

具体的なセキュリティ対策 03

Slide 25

Slide 25 text

脆弱性スキャン 効果 ● 依存関係のライブラリやパッケージの脆弱性を検出できる ● ソースコード、コンテナイメージに対してスキャン可能 注意点 ● アプリケーション本体のバージョンおよび脆弱性は検出できない ツール例 ● https://github.com/aquasecurity/trivy ● https://github.com/anchore/grype ● https://github.com/openclarity/openclarity

Slide 26

Slide 26 text

ビルド来歴(Provenance)の生成 効果 ● コンテナイメージが期待通りの構成でビルドされたことを保証 ● ビルド来歴をもとに、同じ構成のコンテナイメージをビルドできる 注意点 ● 完全性(ビルド来歴が改ざんされていないこと)は別途保証する必要がある ツール例 ● https://github.com/slsa-framework/slsa-github-generator ● https://github.com/slsa-framework/slsa-verifier ● https://docs.docker.com/build/metadata/attestations/slsa-provenance/

Slide 27

Slide 27 text

コンテナイメージの完全性の確保 効果 ● コンテナイメージがビルド後に改ざんされていないことを保証 ● イメージ署名、再ビルドによるイメージ比較 注意点 ● ビルド前に脆弱性や悪意のあるコードが含まれないことを別途確認する必要がある ツール例 ● https://github.com/sigstore/cosign ● https://github.com/notaryproject/notation ● https://github.com/reproducible-containers

Slide 28

Slide 28 text

OSSの安全性評価 効果 ● OSSの導入前、アップデート時に悪意のあるコードが含まれないか確認できる ● OSSプロジェクトのセキュリティ体制を評価し、導入可否の判断に利用 注意点 ● 検知できるものに限界があり、また現状ではツールや実績に乏しい ツール例 ● https://github.com/DataDog/guarddog ● https://github.com/ossf/package-analysis ● https://github.com/ossf/scorecard

Slide 29

Slide 29 text

信頼されたOSSの利用 効果 ● 安全性評価を外部サービスに任せ、人的コストを削減 ● 高品質な外部サービスを利用することでセキュリティレベルを向上 注意点 ● 100%の安全は保証されない ツール例 ● https://www.chainguard.dev/chainguard-images ● https://cloud.google.com/security/products/assured-open-source-software ● https://docs.docker.com/docker-hub/image-library/trusted-content/

Slide 30

Slide 30 text

さいごに ソフトウェアサプライチェーンのセキュリティはまだ発展途上 ● OSSや外部ツールの利用増に伴い、攻撃も活発化してきている ○ サプライチェーンのリスクを無視しつづけることはできない ● 確立された方法はなく、使いやすいツールもあまりない ○ 特にOSSの安全性評価については課題が多い印象 サプライチェーンセキュリティの知見をお持ちの方、実際に取り組まれた方が いらっしゃいましたらぜひ教えてください!

Slide 31

Slide 31 text

CREDITS: This presentation template was created by Slidesgo, and includes icons by Flaticon, and infographics & images by Freepik Thanks! Do you have any questions? https://twitter.com/kyohmizu