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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shoma
July 10, 2023
Technology
62
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンテナ脆弱性体験資料
コンテナの脆弱性を体験する資料です。
shoma
July 10, 2023
More Decks by shoma
See All by shoma
都知事杯FirstStage
shoma_slide
0
32
XSS(stored)
shoma_slide
0
84
ネットワーク基礎講座
shoma_slide
1
120
Other Decks in Technology
See All in Technology
夫婦で子育てするための育児標準化
codmoninc
PRO
0
440
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
970
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
Browser Spec: Testing Hotwire with Ruby
takahashim
1
130
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
Refining Active Record
shugo
0
160
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
200
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
180
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
370
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Evolving SEO for Evolving Search Engines
ryanjones
0
330
Are puppies a ranking factor?
jonoalderson
2
4.1k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Navigating Team Friction
lara
192
16k
Side Projects
sachag
456
43k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Skip the Path - Find Your Career Trail
mkilby
1
260
Transcript
コンテナ脆弱性 体験 Team4:井口、大竹、福山
講義を始める前に!! • 最後の講義で使用する環境をVM上にインポートする作業をし ます。 • https://github.com/ushigai/build-phase_vuln.git
コンテナってなーに • 移植性 • 効率性 • アジリティ • デリバリーの高速化 •
セキュリティの強化 • アプリの起動の高速化 • 柔軟性 • 管理の簡素化
コンテナの運用サイクルとは? • Build – Ship – Run の3つに分けられる • Build
: Dockerfileなどからコンテナイメージを作成する • Ship: 作成したコンテナをリポジトリなどで共有する • Run: 作成またはリポジトリからpullしたイメージをランタイム上で動かす
Build面でのセキュリティ課題 • 脆弱性への対応 • アタックサーフェスの削減
Ship面でのセキュリティ課題 • イメージレジストリの秘匿性 • 脆弱性の監視
Run面でのセキュリティ課題 • ランタイムの保護 • 想定外のプロセスの実行 • 脆弱性対応 • コンプライアンス対応 •
ネットワークセキュリティ • コンテナ実行基盤へのアクセス管理 • コンテナホストの保護
Runフェーズ – “脆弱性の対応”
webアプリケーションから情報取得 • Penetration D班 sampleWEBでは登録してあるユーザの 個人情報を閲覧できる。 ・今回はユーザーの管理の名目でコンテナホストの情報が 含まれているのでそれを奪取する デフォルト「dummy1:dummy1」 ★★☆☆☆☆☆☆☆☆
webアプリケーションから情報取得 補足 テーブル名:dteam id user password mailaddress
• 文字列が適切に処理されておらずsqlが叩ける構造になってい る insert into dteam values (NULL, + session["user"]
+ ,'" + session["password"] + "','" + session["mailaddress"] + "')" Session["user"]にsqlが流せる ・(select user from dteam where id = "5") ・(select user from dteam where id = "5") Webアプリケーションから情報取得(解説)
• サブクエリを使用するときはそのテーブル自身を参照できな い →外部からは参照できるので一時暗黙的なテーブルのコピー 答え: ・(select user from (select user
from dteam where id = "5")tmp) ・(select password from (select password from dteam where id = "5")tmp) Webアプリケーションから情報取得(解説)
コンテナホストの保護
侵入想定 • 前のデータベースで、一般ユーザー名と、そのパスワードの 奪取に成功。 • 先程のセッションで使ったサイトに嫌がらせをしたい • 「せや、さっきのサイト止めてやろう。」
コンテナホストの保護 • コンテナホストに侵入し、先ほど侵入したサイトを停止させてくだ さい。 ★☆☆☆☆☆☆☆☆☆
5分で片付けよう。
SQLIで得た情報を使おう • User:tmcit • Pass:tmcituser
問題2の回答 • ユーザtmcitでは、dockerの操作権限がない • ユーザーtmcitでは、sudoの権限もない。 • Su tmcituserコマンドを用いて、ユーザの切り替え。 • /etc/home/tmcit/sec/ensyu/sqli/に移動して、docker-
compose down
コンテナホストを乗っ取られると • もちろんコンテナにも影響がある。 • コンテナ操作、停止、改変が行われる可能性がある。
どこに注意するべきか。 • コンテナエンジン、オーケストレーターのバージョンアップ とパッチ対応 • ホストOSのセキュリティ • ホストOSへのファイアウォール適用 • コンプライアンス適用
イメージレジストリの秘匿性
侵入想定 • どうやら、このVMではリポジトリが立っているようだ。 • そのリポジトリにデータベースコンテナのイメージを発見! • 「せや、ちょっくら中身をのぞいてやろ」
イメージレジストリの秘匿性 • 公開リポジトリの中から、Mysqlコンテナを発見せよ • データベース内のUser名とPasswordを奪取せよ ★★★★☆☆☆☆☆☆ *データベースの認証を奪取する事が答えとは限りません
15分でやろう。
まずは、mysqlの発見 • Docker ps –aコマンドから、5000番ポートでregistryが動い ている事が分かる • レジストリの中身を見るためには。。?
レジストリの中身を参照しよう • Dockerのレジストリの中身見るためには以下のコマンド • curl http://192.168.56.113:5000/v2/_catalog • 出力結果から何が分かる?
解答 • $ docker pull localhost:5000/shomaigu/mysql-en • $ docker run
localhost:5000/shomaigu/mysql-en • $ docker images • $ docker history --no-trunc 【IMAGE NAME】:【TAG】 • $docker history --no-trunc 8d1f53415da3 | grep ADD • /bin/sh -c #(nop) ADD file:ff415a0e122ed9d21a5e6c92cc3a0f05e3bd3010886f96ea228aa48 872be0145 in /docker-entrypoint-initdb.d
解答 • $docker exec –it こんてなID /bin/bash • $cd /docker-entrypoint-initdb.d
• $ cat db.sql | grep INSERT INSERT INTO userinfo VALUES(0, “root", “tmcittmcit");
DockerHubにpushすると、、? • コンテナの中身を見られてしまう • コンテナイメージからレイヤの抽出をされてしまう → なるべく秘匿性を持たせましょう → そもそもコンテナ内に重要な情報を残さない!!(環境変 数とかで渡しましょう)
脆弱性の監視 ★★★☆☆☆☆☆☆☆
侵入想定 • 当時は脆弱性の対策を行っていたDockerimageがpushされたパブ リックのDockerHUBを発見! • 最後の更新が何年も前になっている。 • 「せや、脆弱性のスキャンをしてやろう。」
脆弱性の監視 • 先ほどのリポジトリに含まれているイメージの脆弱性を列挙して ください。 ★★★☆☆☆☆☆☆☆
10分でやってみよう。
Trivyを使おう • OSSの脆弱性イメージスキャンツール • Dockerイメージの脆弱性をスキャンする事 が出来る
解答 • Curl http://192.168.56.113:5000/v2/_catalog • docker pull localhost:5000/shomaigu/mysql-en • docker
pull localhost:5000/shomaigu/zeikansi_apache • Trivy image ----スキャン対象のimageID---
公開する際は脆弱性の監視を • DockerHUBにDockerのimageを公開する際は脆弱性の監視を行 おう。