runcの脆弱性情報(Important: CVE-2019-5736)

こんにちは。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の情報を追加しました。






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

緩和策

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 追記。) 影響が大きかったため、予定よりも早くエクスプロイトが公開されました。

CVE-2019-5736: runc container breakout exploit code

Youtube 動画


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 SatelliteKatello、Spacewalk等を使うと管理が便利でしょう。

また、サービスの再起動が発生しますので、peacemakerなどOSSのクラスタ製品やLifeKeeperなどの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます。

[参考]


セキュリティ系連載案内


セミナー情報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/がプログラム内容と申し込みの詳細になります。奮ってご参加下さい。


タイトルとURLをコピーしました