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
Dockerコンテナからホストのrootを取る話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
narupi
September 29, 2019
Technology
9
2.6k
Dockerコンテナからホストのrootを取る話
Vulnerable Docker VMを利用してDooD環境のコンテナからホストのrootを取る話。
モブセキュリティLT第一回(2019/09/29)で利用。
narupi
September 29, 2019
Tweet
Share
More Decks by narupi
See All by narupi
VulnerableDockerVM Writeup
narupi
0
210
Other Decks in Technology
See All in Technology
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
150
Tebiki Engineering Team Deck
tebiki
0
24k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
780
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
530
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
7
2.4k
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
430
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
120
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Evolving SEO for Evolving Search Engines
ryanjones
0
130
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
Amusing Abliteration
ianozsvald
0
110
Design in an AI World
tapps
0
150
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Transcript
Dockerコンテナからホストの rootを取る話 2019/09/29 narupi(@ei1528)
自己紹介 narupi Twitter : @ei1528 CTFをしている(Forensicが好き)
動機 最近Dockerにムカついたので破壊したくなった
注意事項 ここで得た技術得た知識/技術の悪用厳禁 検証は自己責任 管理下以外のサーバ/アプリケーションに対して攻撃を行わない 初心者なので内容に間違いがある場合がある
検証環境 NotSoSecureが提供しているVulnerable Docker VM を利用 (https://www.notsosecure.com/vulnerable-docker-vm/ ) CTF形式
コンテナに侵入する 入り口はWordPress WordPressが動いているコンテナには簡単に侵入できる
コンテナ間を移動する nmapを利用してコンテナが利用しているIP帯に対してスキャンを行う 他のコンテナに侵入するとdocker.sockが見える (コンテナで実行しているサービスについて調べると、起動時にマウントする必要があるらしい)
docker.sockについて UNIXドメインソケット(プロセス間でデータを通信するためのもの) マウントしたdocker.sockに書き込み権限が与えられているとまずい dockerのvolumeマウントはデフォルトでread write権限となる(オプションで:roをつけることで read onlyになる)
DockerCLI DockerEngine API Docker Daemon Unixソケット
docker.sockがマウントされていると コンテナ内からホストのDockerDaemonにアクセスできる つまりコンテナ内で実行したDockerコマンドはホスト側で実行される DockerCLI DockerEngine API Docker Daemon
Unixソケット ホスト コンテナ DockerCLI Unixソケット
コンテナからホストのrootを取る dockerコマンドがホストで実行できる状況の場合、以下の手順でホストのrootを取ることができ る 1. コンテナ内にdockerをインストールする(意図的にdocker daemonを共有している場合はインス トールされているはず) 2. ホストのルートディレクトリをマウントしたコンテナを起動する(例:docker
run –it –v /:/HOGE ubuntu:latest bash) 3. マウントしたディレクトリHOGEをルートディレクトリに変更する(chroot /HOGE)
Dockerは安全? 基本的にはDockerを利用することでアプリケーションに脆弱性があった場合でも、影響範囲をコ ンテナ内に留める事ができる マウントには気をつける必要がある(ホストへのアクセスを許容してしまうリスク) 不明なdocker imageは利用しない(悪意のあるスクリプトが埋め込まれているリスク)
Docker19.03から非rootユーザでもdockerd(デーモン)を実行できるようになった (Rootlessモード)
余談(DinDとDooD) コンテナ内からコンテナを操作する方法として、Docker in Docker(DinD)とDocker outside of Docker(DooD)がある DinDはDocker本体の開発を効率化されるために生み出された手法らしい
(http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/) DooDはDockerの管理をコンテナから行えるようにする手法らしい (CI用途などで利用されるらしい)
DinD DinD対応イメージを利用してコンテナを作る デフォルトの権限ではDockerデーモンを起動できないのでprivilegedオプションを利用する必要が ある(すべてのデバイスへのアクセスが可能になる) 暗黙的にData Volumeが利用されコンテナとホストのリソースを共有する
ホストとコンテナが階層化されるのでお互いに見えない
DooD ホストのDocker.sockをマウントすることでDockerデーモンを共有する ホスト側のDockerをコンテナ側から実行する コンテナからホスト側が見える DinDのようにゴミが溜まることはない
まとめ そもそもコンテナに侵入されないようにしよう ボリュームのマウントには気をつけよう
参考 https://oioki.me/2017/09/vulnerable-docker-vm/ https://darksh3ll.info/index.php/18-write-up-vulnerable-docker-vm-by-notsosecure-com https://rimuru.lunanet.gr.jp/notes/post/how-to-root-from-inside-container/ https://www.lvh.io/posts/dont-expose-the-docker-socket-not-even-to-a-container.html
https://qiita.com/sugiyasu-qr/items/85a1bedb6458d4573407 https://blog.nijohando.jp/post/docker-in-docker-docker-outside-of-docker/ https://qiita.com/toto1310/items/64d7db407d31fd802f9c