Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
コンテナイメージのマルウェア検出とその実用性について
Search
Kyohei Mizumoto
April 12, 2023
Technology
4.7k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンテナイメージのマルウェア検出とその実用性について
3-shake SRE Tech Talk #5 ~ コンテナセキュリティ最前線 の資料です。
https://3-shake.connpass.com/event/277945/
Kyohei Mizumoto
April 12, 2023
More Decks by Kyohei Mizumoto
See All by Kyohei Mizumoto
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
1.4k
最新の脅威動向から考える、コンテナサプライチェーンのリスクと対策
kyohmizu
1
1.1k
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
9
4.4k
Black Hat USA 2025 Recap ~ クラウドセキュリティ編 ~
kyohmizu
0
1k
CTFのためのKubernetes入門
kyohmizu
3
1.3k
クラウドネイティブ環境の脅威モデリング
kyohmizu
3
870
コンテナサプライチェーンセキュリティ
kyohmizu
2
570
サイバーセキュリティの最新動向:脅威と対策
kyohmizu
1
480
コンテナセキュリティの基本と脅威への対策
kyohmizu
4
2.4k
Other Decks in Technology
See All in Technology
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
7
2.5k
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.3k
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
410
SREでアラート疲れを 解決しよう!
kairim0
1
220
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
2
830
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
860
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
370
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
580
WasmをRustにする
sansantech
PRO
0
150
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
0
310
Deep Data Security 機能解説
oracle4engineer
PRO
2
770
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
1.1k
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Producing Creativity
orderedlist
PRO
348
41k
Tell your own story through comics
letsgokoyo
1
1.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
コンテナイメージのマルウェア検出と その実用性について @kyohmizu
whoami 株式会社スリーシェイク Sreake事業部 (SRE/)CSIRT - AWS, GCP, kubernetes 環境のセキュリティ強化 -
SOC/CSIRT運用と改善 - 脅威情報の収集、サイバー演習 etc… その他 - 3-shake SRE Tech Talk 運営 - 「コンテナセキュリティ」書籍監訳 水元 恭平 @kyohmizu
ざっくり概要 コンテナイメージのマルウェアスキャンはあまり聞かないけど、何か 使い道はないか? というのをOSSベースで考えてみる話です。
目次 ✅ アンチウイルスについて ✅ コンテナ環境のマルウェア ✅ コンテナイメージのマルウェアスキャン ✅ マルウェアスキャン導入の要否
アンチウイルスについて
アンチウイルス(NGAV)の機能 ✅ パターンマッチング ➢ ファイルの静的な情報からマルウェアを検知 ✅ ヒューリスティック検知 ➢ ファイルの特徴的な挙動からマルウェアを検知 ✅
AI・機械学習 ➢ マルウェアの特徴を分析し、検知の精度を高める ✅ サンドボックス ➢ 隔離された環境でマルウェアを分析
アンチウイルス(NGAV)の機能 ✅ パターンマッチング ➢ ファイルの静的な情報からマルウェアを検知 ✅ ヒューリスティック検知 ➢ ファイルの特徴的な挙動からマルウェアを検知 ✅
AI・機械学習 ➢ マルウェアの特徴を分析し、検知の精度を高める ✅ サンドボックス ➢ 隔離された環境でマルウェアを分析 コンテナイメージの マルウェアスキャン
アンチウイルスとEDR ✅ アンチウイルス(EPP)は事前対策、EDRは事後対策 ✅ アンチウイルス < EDR ✅ Enterprise製品には両機能を兼ね備えたものも多い https://www.eset.com/jp/topics-business/next-gen-antivirus/
コンテナ環境のマルウェア
コンテナ環境を狙うマルウェア ✅ Doki ➢ Docker APIをターゲットとするバックドア型トロイの木馬 ✅ Kinsing ➢ Docker
APIをターゲットとするクリプトマイナー ✅ Peirates ➢ Kubernetesのペネトレーションテストツール ➢ https://github.com/inguardians/peirates https://attack.mitre.org/techniques/T1610/
参考:Kinsingマルウェア https://blog.aquasec.com/threat-alert-kinsing-malware-container-vulnerability
マルウェアの侵入経路 ✅ ビルド時の侵入 ➢ 依存関係のあるファイルやライブラリにマルウェアが混入 ✅ デプロイ時の侵入 ➢ OSSやサードパーティのManifestにマルウェアが混入 ➢
攻撃者がマルウェアを含むコンテナを意図的にデプロイ ✅ 実行時の侵入 ➢ 脆弱性の利用により、実行中のコンテナにマルウェアをダウンロード
コンテナイメージのマルウェアスキャン
ClamAV ✅ オープンソースのアンチウイルスエンジン ✅ 複数のシグネチャに対応 ➢ CVD (ClamAV Virus Database)、YARAなど
✅ コンテナイメージを直接スキャンできない ➢ tar形式に保存することでスキャン可能 ➢ ただし、展開しない場合は1ファイルとしてスキャン https://github.com/Cisco-Talos/clamav
サンプルイメージ $ cat Dockerfile FROM alpine RUN echo "Downloading EICAR
file" && \ wget --no-check-certificate https://secure.eicar.org/eicar.com ENTRYPOINT ["/bin/sh", "-c", "sleep 3600"] $ docker image build -t eicar_sample . ✅ EICARテストファイルを利用 ➢ https://www.eicar.org/download-anti-malware-testfile/
ClamAVによるスキャン $ docker image save eicar_sample -o image_eicar_sample.tar $ clamscan
image_eicar_sample.tar Loading: 14s, ETA: 0s [========================>] 8.66M/8.66M sigs Compiling: 4s, ETA: 0s [========================>] 41/41 tasks /Users/kyohmizu/clamav/image_eicar_sample.tar: Win.Test.EICAR_HDB-1 FOUND ----------- SCAN SUMMARY ----------- Known viruses: 8659491 Engine version: 1.0.1 Scanned directories: 0 Scanned files: 1 Infected files: 1 Data scanned: 14.68 MB Data read: 7.01 MB (ratio 2.09:1) Time: 18.916 sec (0 m 18 s) Start Date: 2023:04:10 02:20:51 End Date: 2023:04:10 02:21:10
YARA ✅ マルウェアの識別・分類のためのツール ✅ C言語ライクな構文でルールを記述する ✅ CLIツール、C言語のライブラリが提供されている ✅ ルールセット例 ➢
https://github.com/JPCERTCC/jpcert-yara ➢ https://github.com/Yara-Rules/rules ➢ https://github.com/deepfence/yara-rules https://github.com/VirusTotal/yara
YARAルール rule malware_Emotet { meta: description = "detect Emotet in
memory" author = "JPCERT/CC Incident Response Group" rule_usage = "memory scan" reference = "internal research" strings: $v4a = { BB 00 C3 4C 84 } $v4b = { B8 00 C3 CC 84 } $v5a = { 6D 4E C6 41 33 D2 81 C1 39 30 00 00 } $v6a = { C7 40 20 ?? ?? ?? 00 C7 40 10 ?? ?? ?? 00 C7 40 0C 00 00 00 00 83 3C CD ?? ?? ?? ?? 00 74 0E 41 89 48 ?? 83 3C CD ?? ?? ?? ?? 00 75 F2 } $v7a = { 6A 06 33 D2 ?? F7 ?? 8B DA 43 74 } $v7b = { 83 E6 0F 8B CF 83 C6 04 50 8B D6 E8 ?? ?? ?? ?? 59 6A 2F 8D 3C 77 58 66 89 07 83 C7 02 4B 75 } condition: all of ($v4*) or $v5a or $v6a or all of ($v7*) }
YaraHunter ✅ コンテナに特化したマルウェアスキャンツール ➢ 仕組みはtrivyと同じ ✅ YARAルールによるシグネチャベースのスキャンを行う ➢ https://github.com/deepfence/yara-rules ➢
内部ではyaraのライブラリを使用している ✅ コンテナイメージ、実行中のコンテナへのスキャンが可能 ✅ docker, containerd に対応 ✅ ドキュメントが少ない... https://github.com/deepfence/YaraHunter
YaraHunterによるスキャン $ docker run -it --rm --name=yara-hunter \ -v /var/run/docker.sock:/var/run/docker.sock
\ deepfenceio/yara-hunter:latest \ --image-name eicar_sample:latest ✅ 公式イメージを利用 ➢ https://docs.deepfence.io/docs/yarahunter/using/scan/ ➢ ルールセット、スキャン対象を変更可能
YaraHunterによるスキャン { "Timestamp": "2023-03-28 20:28:37.660643034 +00:00", "Image Name": "eicar_sample:latest", "Image
ID": "172fe8dfa924ea059ab084eede871bfb9bbe31a89089b106008fcf98f08d5700", "Malware match detected are": [ { "Image Layer ID": "b1098b32d2d6b2d3787d72d11e0605a38ceb2b88f6117387eb1c91ee79b0bb92", "Matched Rule Name": "eicar", "Strings to match are": [ "X5O!P%!@(MISSING)AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*" ], "Category": [], "File Name": "/tmp/Deepfence/YaRadare/df_eicarsamplelatest/ExtractedFiles/b1098b32d2d6b2d3787d72d11e0605a38ceb2b88f6117387eb1c 91ee79b0bb92/eicar.com", "description":"Rule to detect Eicar pattern ", "author":"Marc Rivero | @seifreed ", "hash1":"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f ", "Summary": "The file has a rule match that Rule to detect Eicar pattern .The matched rule file's author is Marc Rivero | @seifreed .The matched rule file's hash1 is 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f ." } ] }
ClamAV vs YaraHunter ✅ ClamAVの方がシグネチャが豊富 ➢ CVDは日々アップデートされている ✅ YaraHunterの方がコンテナ環境への導入は容易 ➢
CIのサンプルコードも用意されている ✅ YaraHunterではマルウェアを検知できない場合もある ➢ シグネチャが不十分 ➢ 不具合の可能性も?
参考:Kinsingマルウェアのスキャン 1/5 入手した検体を各ツールでスキャンしてみる
参考:Kinsingマルウェアのスキャン 2/5 $ clamscan kinsing Loading: 13s, ETA: 0s [========================>]
8.66M/8.66M sigs Compiling: 4s, ETA: 0s [========================>] 41/41 tasks /Users/kyohmizu/malware/kinsing/kinsing: Unix.Malware.Kinsing-7812065-1 FOUND ----------- SCAN SUMMARY ----------- Known viruses: 8659491 Engine version: 1.0.1 Scanned directories: 0 Scanned files: 1 Infected files: 1 Data scanned: 0.50 MB Data read: 15.93 MB (ratio 0.03:1) Time: 19.009 sec (0 m 19 s) Start Date: 2023:04:11 23:33:08 End Date: 2023:04:11 23:33:27 ClamAV:〇
参考:Kinsingマルウェアのスキャン 3/5 $ cat rules/kinsing.yar rule elf_kinsing_w0 { meta: description
= "Rule to find Kinsing malware" author = "Tony Lambert, Red Canary" date = "2020-06-09" source = "https://raw.githubusercontent.com/Neo23x0/signature-base/master/yara/crime_h2miner_kinsing.yar" strings: $s1 = "-iL $INPUT --rate $RATE -p$PORT -oL $OUTPUT" $s2 = "libpcap" $s3 = "main.backconnect" $s4 = "main.masscan" $s5 = "main.checkHealth" $s6 = "main.redisBrute" $s7 = "ActiveC2CUrl" $s8 = "main.RC4" $s9 = "main.runTask" condition: (uint32(0) == 0x464C457F) and filesize > 1MB and all of them } $ yara rules/kinsing.yar kinsing elf_kinsing_w0 kinsing YARA:〇
参考:Kinsingマルウェアのスキャン 4/5 $ docker run -it --rm --name=yara-hunter \ -v
/var/run/docker.sock:/var/run/docker.sock -v $(pwd)/rules:/tmp/my-rules \ deepfenceio/yara-hunter:latest --image-name kinsing_sample:latest --rules-path /tmp/my-rules imageScan &{kinsing_sample:latest /tmp/Deepfence/YaRadare/df_kinsingsamplelatest { [] [] []} 0} imageName kinsing_sample:latest INFO[2023-04-11 14:46:30] trying to connect to endpoint 'unix:///var/run/docker.sock' with timeout '10s' INFO[2023-04-11 14:46:30] connected successfully using endpoint: unix:///var/run/docker.sock (中略) INFO[2023-04-11 14:46:50] container runtime detected: docker imageName kinsing_sample:latest { "Timestamp": "2023-04-11 14:46:51.258052700 +00:00", "Image Name": "kinsing_sample:latest", "Image ID": "360b23ecf303fba2520972c64149f1eed6f2be98df4665eeb0ee1f6d621a8123", "Malware match detected are": [ ] } YaraHunter:❌ ????
参考:Kinsingマルウェアのスキャン 5/5 $ docker image save kinsing_sample -o kinsing_sample.tar $
clamscan kinsing_sample.tar Loading: 12s, ETA: 0s [========================>] 8.66M/8.66M sigs Compiling: 4s, ETA: 0s [========================>] 41/41 tasks /Users/kyohmizu/malware/kinsing/kinsing_sample.tar: Unix.Malware.Kinsing-7812065-1 FOUND ----------- SCAN SUMMARY ----------- Known viruses: 8659491 Engine version: 1.0.1 Scanned directories: 0 Scanned files: 1 Infected files: 1 Data scanned: 15.18 MB Data read: 22.94 MB (ratio 0.66:1) Time: 19.211 sec (0 m 19 s) Start Date: 2023:04:12 02:29:51 End Date: 2023:04:12 02:30:10 ClamAV(tar from container image):〇
マルウェアスキャン導入の要否
Do You Need To Install an Antivirus? ✅ LinuxのマルウェアはWindowsに比べると多くない ✅
コンテナ最適化OSの環境ではマルウェアのリスクは低下する ✅ アンチウイルスは時代遅れだと考える人も多い ✅ 他のセキュリティ対策によるクラスタ保護で十分では? ➢ 監査ツールや静的解析ツール ➢ ランタイムセキュリティツール ➢ コンテナセキュリティのベストプラクティスの適用 https://thechief.io/c/editorial/kubernetes-do-you-need-to-install-an-antivirus/ https://repost.aws/questions/QU22HJZItZQRar3wcGcnDtTQ/eks-antivirus-and-best-practices
Do You Need To Install an Antivirus? ✅ Linuxやコンテナ環境のマルウェアが存在しないわけではない ➢
コンテナの普及に伴い、マルウェア作成の動機が高まる ✅ リスクは低いが0ではない ➢ ノードへのマルウェア侵入は防げても、コンテナ内はまた別の話 ✅ 効果は限定的だが、全くないわけではない ✅ アンチウイルスの保護機能を全てカバーできているのか? ➢ 全てをカバーできていなければ導入の余地はある
マルウェアスキャンの効果と課題 ✅ マルウェアを特定できる ➢ 効果の大きさはシグネチャ次第 ➢ 検知だけでなく調査、分析への活用も ✅ 侵入前にマルウェアを検知可能 ✅
実行コストが高い ➢ 全ファイルのスキャンを行うため、リソース消費が多く時間もかかる ➢ ClamAVコンテナの推奨メモリは4GiB ✅ 利用できるOSSやシグネチャが少なく、成熟していない ➢ ツールの新規開発や改修、シグネチャのアップデートが必要
マルウェアスキャンの導入・運用コスト ✅ ビルド時:低 ➢ CIへの組み込みは容易 ✅ デプロイ時:高 ➢ 実行コストが高く、デプロイ時にスキャンを実行するのは現実的でない ✅
実行時:高 ➢ 実行コストが高い(デプロイ時と同様) ➢ 専用のOSSがなく開発が必要 ➢ Enterprise製品の利用で上記コストは軽減可能
Kubernetes Securityによるマルウェア対策 マルウェアス キャン 脆弱性 管理 セキュリティポリ シー イメージ署 名
KSPM ランタイムセキュリ ティ ビルド時の侵入 ◯ ◯ デプロイ時の侵入 ◯ ◯ ◎ ◯ 実行時の侵入 ◯ ◯ ◯ ◯ 事前対策 事後対策 ✅ ビルド時の侵入対策は弱い ✅ デプロイ時の侵入はポリシーやイメージ署名が有効 ✅ クラスタの衛生管理により、実行時の侵入リスクを軽減
ファストフォレンジックへの利用 ✅ 不審なコンテナが発見された場合の調査・分析 ➢ イメージ署名のないコンテナの実行を検知 ➢ コンテナ内での不審な動作を検知 ➢ 身に覚えのないコンテナが実行されていることを発見 ✅
マルウェアが特定されれば影響範囲を推測できる ✅ コストが低く、導入が容易 ✅ スキャンを自動化することでより素早い対応に ➢ CLIツールのため組み込みやすい
余談:ツール導入の優先度について ✅ 導入効果 = 導入前後のリスクの差分 ✅ リスク = 発生可能性 ×
影響度 ➢ 発生可能性、影響度はセキュリティ対策の状況により変動する ➢ 対策が弱い箇所の方がリスクが高くなりやすい ✅ 効果を定量化するのは難しいが、相対評価は比較的容易 ➢ そのツールを導入することで、どのようなリスクを軽減できるのか ➢ 既存のセキュリティ対策でリスクは軽減できているか ➢ 他に優先的に取り組むべき対策はないか ✅ コストを加味し費用対効果で考える
まとめ ✅ コンテナイメージのマルウェアスキャンツールを3つ紹介 ✅ 十分なセキュリティ対策がとられている場合、マルウェアスキャンによ る恩恵は少ない ✅ 追加の防御層として、多層防御に組み込むのはあり ➢ ビルド時のスキャン、ファストフォレンジックへの利用が効果的
➢ 基本的には、他のセキュリティ対策を優先すべき ✅ 費用対効果にもとづいて、導入要否や優先順位を決めましょう
Thanks!!