runc - 悪意のあるコンテナーブレイクアウト - CVE-2019-5736
この情報は役に立ちましたか?
ホストマシン上で悪意のあるコンテナーが root レベルの権限を取得できる不具合が runc で検出されました。この問題には CVE-2019-5736 が割り当てられ、セキュリティー上の影響度は「重要な影響 」として評価されています。
背景情報
runc で見つかった脆弱性により、コンテナーからのブレイクアウトが可能になり、ホストマシンで root レベルの権限を取得できるようになります。
この脆弱性は、Extras チャンネルより提供される Red Hat Enterprise Linux 7 で利用可能な docker および runc パッケージの両方に影響します。Red Hat Enterprise Linux 7 Extras から提供されるこれらのパッケージに依存する OpenShift Container Platform (OCP) 3.x も影響を受けます。
SELinux が Enforcing モードである場合、この脆弱性は Red Hat Enterprise Linux 7 で軽減されます。OpenShift Container Platform 3.x では SELinux を Enforcing モードで実行することが前提条件となります。
対処方法
影響を受けるバージョンの Red Hat 製品をご使用のお客様は、エラータが入手可能になり次第、RHEL 7 Extras チャンネルから RPM の更新を適用することが強く推奨されます。OpenShift Online または OpenShift Dedicated をご使用のお客様は、全クラスターの各ホストで SELinux が Enforcing モードで有効になっています。OSO/OSD のセキュリティーリスクは軽減されていることが想定され、今後のメンテナンスウィンドウでセキュリティーパッチが適用されます。
謝辞
Red Hat は、本問題を報告したアップストリームの Open Containers Security Team に感謝いたします。アップストリームは、この不具合の発見者が Adam Iwaniuk 氏および Borys Popławski 氏であると認識しています。
その他のリソース
影響を受ける製品
Red Hat Product セキュリティーチームは、CVE-2019-5736 によるセキュリティー上の影響度を重要と評価しています。
影響を受ける Red Hat 製品のバージョンは以下のとおりです。
Red Hat Enterprise Linux 7
Red Hat OpenShift Container Platform 3.x
Red Hat OpenShift Online*
Red Hat OpenShift Dedicated*
*SELinux を Enforcing モードで使用しているため、OpenShift Online および Dedicated は不正アクセスに対して脆弱ではありません。
不正アクセス試行の検出
SELinux を Enforcing モードで使用しているお客様は、以下のコマンドなどを使用すると、監査ログの AVC イベントで不正アクセスの試行状況を確認することができます。
$ aureport -a
AVC Report
===============================================================
# date time comm subj syscall class permission obj result event
===============================================================
1. 11/02/19 00:00:00 script system_u:system_r:container_t:s0:c530,c886 2 file write system_u:object_r:container_runtime_exec_t:s0 denied 81359
…
上記のイベントは、system_u:system_r:container_t context のプロセスが system_u:object_r:container_runtime_exec_t context のファイルに書き込みを実行しようとし、Red Hat Enterprise Linux 7 のデフォルトポリシーによって拒否されたことを表しています。
注意: SELinux が Permissive モードの場合でも AVC イベントは監査ログに記録されますが、root レベルの権限を持つ攻撃者はマシンのログを変更できるため、ログの内容は信用できません。
脆弱性の診断
Red Hat Enterprise Linux Extras チャンネルに修正が提供されています。OpenShift Container Platform 3.4 以上のバージョンをお使いのお客様はこれらの修正を適用してください。
この脆弱性は、SELinux を Enforcing モードで使用すると軽減され、この脆弱性の悪用を完全に防ぐことができます。Red Hat Enterprise Linux 7 における SELinux のデフォルトモードは Enforcing モードです。
SELinux をデフォルトの Enforcing モードから Permissive モードに変更した場合は、以下の手順に従って Enforcing モードに戻すことができます。
最新バージョンに更新したユーザーはさらなる軽減策を適用する必要はありません。しかし、更新を適用できない場合は、問題を軽減することが推奨されます。
OpenShift Online および OpenShift Dedicated の軽減策は適用済みです。セキュリティーパッチは今後のメンテナンスウインドウで適用されます。
OpenShift Container Platform 3.x では、SELinux を Enforcing モードで実行することが前提条件となります。
影響を受ける製品の更新
製品名 | パッケージ名 | アドバイザリー/更新 |
---|---|---|
Red Hat Enterprise Linux 7 Extras | docker | RHSA-2019:0304 |
Red Hat Enterprise Linux 7 Extras | docker (1.12.x) | 保留中 |
Red Hat Enterprise Linux 7 Extras | runc | |
Red Hat Enterprise Linux 7 Atomic Host | docker | 保留中 |
Red Hat Enterprise Linux 7 Atomic Host | runc | 保留中 |
docker (または docker-latest*) をお使いのお客様は、独自のバージョンの runc をバンドルする docker パッケージを更新する必要があります。CRI-O をお使いのお客様や、runc に依存するその他のコンテナーエンジンをお使いのお客様は runc パッケージを更新する必要があります。docker および runc 両方への更新は、Red Hat Enterprise Linux 7 Extras チャンネルから提供されます。
OpenShift Container Platform (OCP) バージョン 3.9 以上は、デフォルト設定で docker バージョン 1.13 を使用しますが、この代わりに CRI-O を使用することもできます。OCP 3.9 以上をお使いのお客様は、Red Hat Enterprise Linux 7 Extras チャンネルから該当する docker または runc の更新を適用してください。
OCP 3.4 から 3.7 のバージョンは Red Hat Enterprise Linux 7 Extras チャンネルの docker バージョン 1.12 を使用します。docker バージョン 1.12 のセキュリティーエラータは現在保留中です。
Red Hat Enterprise Linux Atomic Host 7 は、Red Hat Enterprise Linux 7 Extras の同じ 'docker' および 'runc' パッケージを使用しますが、不変オペレーティングシステムツリー (ostrees) を介して提供されます。Atomic Host のユーザーは、ostrees を介して更新された 'docker' および 'runc' パッケージが提供されるまで、以下のガイドに従って Extras チャンネルの最新バージョンでこれらのパッケージをオーバーライドしてください。
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/installation_and_configuration_guide/managing_atomic_hosts#overriding_an_existing_rpm_package
*注記: docker-latest は Red Hat Enterprise Linux 7.5 で非推奨となり、サポートされていません。docker-latest パッケージをご使用のお客様は、Red Hat Enterprise Linux 7 Extras に同梱される docker パッケージにアップグレードしてください。詳細は https://access.redhat.com/solutions/3092401 を参照してください。
**注記: OpenShift Container Platform 3.9 は当初 OCP 3.9 リポジトリーに独自のバージョンの runc パッケージを同梱していました。Red Hat Enterprise Linux 7 Extras の runc バージョンは OCP 3.9 のバージョンよりも優先されます。OCP 3.9 クラスターを実行している場合は、 runc を Red Hat Enterprise Linux Extras チャネルから更新してください。
Ansible Playbook
パッケージがすでにインストールされている場合はパッケージを更新する Ansible playbook を利用できます。docker-latest のサポートは終了したため、docker-latest に対するスクリプトの実行は失敗します。正規のスクリプトであることを確認するため GPG 分離署名 をダウンロードすることもできます。
この Playbook は、HOSTS という名前の変数に対して実行され、次のように起動できます (「hostname」がインベントリーファイルに定義されていることが前提です)。
# ansible-playbook -e HOSTS=hostname cve-2019-5736-update_fixit.yml
この Playbook には root 権限が必要であるため、適切なパーミッションが設定されているアカウントを使用する必要があります。
Comments