こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
02/11/2019にruncの脆弱性情報(Important: CVE-2019-5736)が公開されています。Exploitは7日後(02/18/2019)に公開すると予告もされています。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。
(更新)2019/02/15 11:30 JPCERT/CCの情報を追加しました。
(更新)2019/02/14 09:00 PoCを追加しました。
(更新)2019/02/13 19:05 一次情報源(詳しい情報)を追加しました。
(更新)2019/02/13 19:05 Exploitの情報を追加しました。
(更新)2019/02/12 22:05 Kubernetesの情報を追加しました。
(更新)2019/02/12 04:45 Amazonの情報を追加しました。
[関連リンク(最新5件)]
RunCに関しての脆弱性( CVE-2016-9962 )のPoCとSELinuxによるリスクの軽減 — | サイオスOSS | サイオステクノロジー
Dockerの–security-optオプション(AppArmor) — | サイオスOSS | サイオステクノロジー
Dockerに特権昇格の脆弱性 ( CVE-2016-9962 ) — | サイオスOSS | サイオステクノロジー
DockerとSELinuxを組み合わせてDocker環境を強化しよう — | サイオスOSS | サイオステクノロジー
【Linux Kernel 5.0特集】Kernelに含まれているセキュリティ機構 – Part2(SELinux編: 後編)
一次情報源
[oss-security] CVE-2019-5736: runc container breakout (all versions)
nsenter: clone /proc/self/exe to avoid exposing host binary to container
(詳しい情報) CVE-2019-5736: Escape from Docker and Kubernetes containers to root on host
SW提供者情報
Amazon: Container Security Issue (CVE-2019-5736)
Red Hat: runc – Malicious container escape – CVE-2019-5736
Red Hat Blog: It starts with Linux: How Red Hat is helping to counter Linux container security flaws
関連ニュース
Networld: Red Hat announces container flaw CVE-2019-5736
Hacker News: CVE-2019-5736: runc container breakout
ZDNet: 「Docker」「Kubernetes」などに使われるコンテナランタイム「runc」に脆弱性
三大クラウドのrunc脆弱性(CVE-2019-5736)対応状況メモ
ITMedia: コンテナランタイム「runc」に脆弱性、DockerやKubernetesに影響
Security NEXT: 「runc」に脆弱性、コンテナからホスト管理者権限でコード実行されるおそれ
Linux container bug could eat your server from the inside – patch now!
Priority
- CVE-2019-5736
Important
- runc community
- CVSS v3 Base Score: 7.6
- Vector: AV:L/AC:H/PR:L/UI:R/S:C/C:N/I:H/A:H
- SuSE
- CVSS v3 Base Score: 7.5
- Vector: AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H
- Red Hat Customer Potal
- CVSS v3 Base Score: 7.7
- Vector: CVSS:3.0/AV:L/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H
- NVD
- runc community
緩和策
Red Hatによると、この問題はSELinuxを有効にしている事で緩和が可能とのことです。
Red Hat Blog: It starts with Linux: How Red Hat is helping to counter Linux container security flaws
修正方法
各ディストリビューションの情報を確認してください。
エクスプロイト(Exploit)情報
(2019/02/13 19:00 追記。) 影響が大きかったため、予定よりも早くエクスプロイトが公開されました。
PoC
環境:Debian(buster)、docker: 18.09.1でPoCを行いました。
sios@debian:~$ cat /etc/debian_version
buster/sid
sios@debian:~$ docker --version
Docker version 18.09.1, build 4c52b90
sios@debian:~$ nc -nlvvp 4455
listening on [any] 4455 ...
connect to [172.16.148.154] from (UNKNOWN) [172.16.148.154] 60112
sh: 0: can't access tty; job control turned off
# # id
uid=0(root) gid=0(root) groups=0(root)
#
CVE概要(詳細はCVEのサイトをご確認ください)
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5736
- ホスト上でのrootレベルのコマンド実行の可能性
- 重要度 – Important
- 全てのバージョンのruncに脆弱性が見つかりました。これは、/proc/self/exeに関連するファイルディスクリプタの誤った処理が原因で発生します。この脆弱性により、攻撃者は(ユーザによる操作が必要になりますが)ホストのruncバイナリを上書きし、ホスト上でrootレベルのコード実行を行うことが出来ます。攻撃者は次のいずれかの種類でrootとしてコマンドを実行する機能を利用します:
– 攻撃者によりコントロールされたイメージを使っている新しいコンテナ
– (docker execによってアタッチが出来る)、攻撃者が以前に書き込みアクセスをした既存のコンテナ
Fedora上で”moby-engine”パッケージを使用している場合には、この脆弱性をSELinux/AppArmorを用いて緩和することは出来ないとの事です(container_runtime_tドメインで動作しているため)が、正しくユーザネームスペースを使うことによってブロックすることが可能との事です。
Red Hatの情報によると、Red Hat Enterprise Linux 7ではdocker/podmanはcontainer_tドメインで動作しているため、SELinuxによってこの脆弱性は緩和できるとの事です。
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteやKatello、Spacewalk等を使うと管理が便利でしょう。
また、サービスの再起動が発生しますので、peacemakerなどOSSのクラスタ製品やLifeKeeperなどの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます。
[参考]
セキュリティ系連載案内
- OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
- OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
- OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2018のレポートが紹介されています。
- OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。
- OSSセキュリティ技術の会の面により、@ITで「OpenSCAPで脆弱性対策はどう変わる?」が連載されています。
- OSSセキュリティ技術の会のメンバーにより、@ITで「Berkeley Packet Filter(BPF)入門」が連載されています。
セミナー情報1
2019/02/12 17:00-19:30で、「NGINX MeetUp Tokyo #2」を行います。
日本のNGINXユーザー、また関心をお持ちの方に向けてNGINX, Inc. CTO / Igor Sysoevを 招きNGINX最新情報をお届けします。セッション終了後には懇親会を用意しておりますので、NGINXを利用する方同士で交流もいただけます。
https://nginx-mj.connpass.com/event/116837/がプログラム内容と申し込みの詳細になります。奮ってご参加下さい。
セミナー情報2
2019/02/21 18:30-22:00で、「OSSライセンスMeetup Vol.2 「実録:GPL違反とその対応を振り返る」」を行います。
いまだに国内の事例として紹介されるGPL違反に関して、状況や経緯、解決策、対応後の反響などについて振り返ります。 これまでは、客観的に違反とその対応に関して事例を説明することは多くありましたが、実際に起こった現場の声を反映した 事例の説明は数少なく、今だから言えることなど、知見を共有いたします。
https://sios.connpass.com/event/112157/がプログラム内容と申し込みの詳細になります。奮ってご参加下さい。