⚠この記事はブログ移転前のアーカイブです

乗り遅れましたが CVE-2016-5195 で報告された脆弱性,通称「Dirty Cow」です.この脆弱性は特権昇格に脆弱性を持ちますが,公開された幾つかのPoCの一つに,Dockerコンテナ内で適用してホストのrootにログイン出来るPoCがあります.

コンテナ技術は仮想化技術の一種ですがカーネルをホストと共有させている性質上,カーネル脆弱性には敏感です.パッチ未適用の場合は早急に当てましょう.

Dirty Cow PoC

Dirty Cow のPoCたくさんあります

https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs

screenshot-360

そのうちvDSO-based root の https://github.com/scumjr/dirtycow-vdso 0xdeadbeef を使用します.

詳細なインタラクションは以下のURLやYoutubeに掲載されていますが少し簡単に

https://blog.paranoidsoftware.com/dirty-cow-cve-2016-5195-docker-container-escape/

Docker user? Haven’t patched Dirty COW yet? Got bad news for you

  1. 対象コンテナが最低1つのポートフォワードがされている必要がある
  2. 対象コンテナ内にログインし, https://github.com/scumjr/dirtycow-vdso をクローンする
  3. ifconfigでコンテナのipアドレスを調べる
  4. payload.sを編集し,「IP」セクションと「PORT」セクションを3で調べたipアドレス,ポートに書き換える.この際16進数でリトルエンディアンよろしく逆から書くこと
  5. makeして実行

Youtube見ると分かるんですがDockerfileが配布されているのでパッチ未適用の環境さえあればすぐ試せます.

https://github.com/gebl/dirtycow-docker-vdso

まあQEMUのVENOMもそうですが環境を隔離したからといって絶対安全とはいえないし,Dockerなんてそれこそ他人の作ったコンテナを何の疑いもなくpullしている人も少なくないかと思います.本来不要なsshやtelnetが走っていて不正侵入される事例もありますしね.コンテナ内に入られる時点でアレですが,Dirty Cowを悪用してホストに入られたらもうアレじゃすまないほどアレだと思うので,Dockerエンジニアの皆さんはkernel脆弱性もチェックするべきかと思います