Kernel Local Privilege Escalation "Dirty COW" - CVE-2016-5195
この情報は役に立ちましたか?
この情報は役に立ちましたか?
Red Hat セキュリティーレスポンスチームは、Linux カーネルの脆弱性について認識しており、この脆弱性は CVE-2016-5195 で対応されています。この問題は 2016 年 10 月 19 日 に公開され、重要な影響と評価されました。この問題はメディアでは「Dirty COW」として報道されています。
Linux カーネルのメモリーサブシステムが、プライベートな読み取り専用メモリーマッピングのコピーオンライト (COW) の破壊に対処する方法で競合状態が発生することが判明しました。権限のないローカルユーザーがこの不具合を悪用すると、本来は読み取り専用であるメモリーマッピングに対する書き込み権限を取得できるため、システム上での権限の昇格が可能になる場合があります。
攻撃者がこの不具合を悪用すると、既存の setuid ファイルが権限を昇格する指示によって変更される可能性があります。この脆弱性を悪用したケースはすでに報告されています。これは、最近の Linux ディストリビューションのほとんどに影響します。
Red Hat セキュリティーレスポンスチームでは、本件によるセキュリティー上の影響度を重要な影響と評価しています。
Red Hat 製品の次のバージョンに影響します。
この不具合により、ローカルシステムのアカウントを持つ攻撃者は、適切な権限がなければ変更できない標準のパーミッションメカニズムを無視してディスク上のバイナリーを変更することができます。これは、mmap で実行可能ファイルのページをメモリーにマッピングしている状態で madvise(MADV_DONTNEED) システムコールを競合状態にすると実行できます。
影響を受けるバージョンのカーネルを実行する Red Hat のすべてのお客様には、パッチのリリース直後にカーネルを更新することが強く推奨されます。影響を受けるパッケージや推奨される軽減策の詳細は以下を参照してください。カーネルの更新を適用するには、システムを再起動する必要があります。
CVE-2016-5195 に関する修正は、Red Hat Enterprise Linux 7.3 の最新リリースに含まれています。
Red Hat Enterprise Linux 7.2 以降を実行しているお客様は、kpatch を利用できます。kpatch を利用する場合は、サポートケースを作成してください。
kpatch の詳細については、 RHEL 7 はライブカーネルパッチ (kpatch) をサポートしていますか? を参照してください。
製品 | パッケージ | アドバイザリー/更新 |
---|---|---|
Red Hat Enterprise Linux 7 | kernel | RHSA-2016:2098 |
Red Hat Enterprise Linux 7 | kernel-rt | RHSA-2016:2110 |
Red Hat Enterprise Linux 7.1 Extended Update Support (EUS: 延長アップデートサポート)* | kernel | RHSA-2016:2118 |
Red Hat Enterprise Linux 6 | kernel | RHSA-2016:2105 |
Red Hat Enterprise Linux 6.7 Extended Update Support (EUS: 延長アップデートサポート)* | kernel | RHSA-2016:2106 |
Red Hat Enterprise Linux 6.6 Advanced Update Support** | kernel | RHSA-2016:2128 |
Red Hat Enterprise Linux 6.5 Advanced Update Support** | kernel | RHSA-2016:2120 |
Red Hat Enterprise Linux 6.4 Advanced Update Support** | kernel | RHSA-2016:2133 |
Red Hat Enterprise Linux 6.2 Advanced Update Support** | kernel | RHSA-2016:2132 |
Red Hat Enterprise Linux 5 | kernel | RHSA-2016:2124 |
Red Hat Enterprise Linux 5.9 Advanced Update Support** | kernel | RHSA-2016:2126 |
Red Hat Enterprise Linux 5.6 Advanced Update Support** | kernel | RHSA-2016:2127 |
RHEL Atomic Host | kernel | イメージのリスピンを実行 (2016 年 11 月 3 日) |
Red Hat Enterprise MRG 2 | kernel-rt | RHSA-2016:2107 |
Red Hat Virtualization (RHEV-H/RHV-H) | kernel | 保留中 |
*このパッチを取得するには、有効な EUS サブスクリプションが必要です。
お持ちのアカウントに有効な EUS サブスクリプションがない場合は、詳細について Red Hat 営業部門または営業の担当者にお問い合わせください。
Red Hat Enterprise Linux Extended Update Support サブスクリプションとは何ですか?
**RHEL AUS のパッチを入手するには、有効な AUS サブスクリプションが必要です。
Red Hat サポートでは、正式なパッチがリリースされるまでの一時的な措置として SystemTap スクリプトなどの軽減策を提供しています。SystemTap スクリプトのサポート期間は、最終パッチの GA リリース後 30 日間のみです。
systemtap による回避策のビルドおよび使用方法
systemtap による対策では、脆弱なシステムコールを傍受する systemtap スクリプトを使用して (ドライバーなどの) カーネルモジュールを作成します。これは、修正されたカーネルが影響を受けるマシンで起動されるまでの応急処置として使用されます。このソリューションは再起動を必要とせず、RHEL 5、6、および 7 に適用されます。
すべてのカーネルに適用されるモジュールを作成することはできません。ファミリー (RHEL 5、6、または 7 すべて) の場合も同様です。特定のカーネルバージョンごとに、そのカーネル (uname -r) の .ko を生成する必要があります。
要件
sytemtap モジュールをビルドするには、以下のパッケージが必要になります。
警告: 'kernel' パッケージは実行中のカーネルと同じバージョンである必要があります。最新バージョンをダウンロードすると systemtap が動作しなくなります。実行中のカーネルと同じバージョンをダウンロードしてください。
debuginfo パッケージの入手
KB ( https://access.redhat.com/solutions/9907 ) を参照してください。
モジュールのビルド方法
1. 必要なパッケージをインストールした後に、以下の内容が含まれる dirtycow.stp という名前のファイルを作成します。
probe kernel.function("mem_write").call ? { $count = 0 } probe syscall.ptrace { // includes compat ptrace as well $request = 0xfff } probe begin { printk(0, "CVE-2016-5195 mitigation loaded") } probe end { printk(0, "CVE-2016-5195 mitigation unloaded") }
2. ファイルを保存します。以下のコマンドを実行してコンパイルします。
# stap -g -p 4 -m dirtycow_`uname -r|tr -cd [:digit:]` dirtycow.stp dirtycow_26183985.ko
上記の例では、.ko ファイル名にカーネルバージョンを特定する番号があります。この例では 2.6.18-398.el5 になります。このモジュールは、debuginfo および development パッケージをインストールせずに、同じカーネルバージョンの他のシステムで使用することができます。必要なのは systemtap-runtime のみになります。同じカーネルバージョンを持つサーバーにモジュールファイルをコピーし、systemtap-runtime パッケージをインストールして、次の手順に進みます。
3. コマンド staprun -L <.ko file> を実行し、モジュールをロードします。以下は例になります。
# staprun -L dirtycow_26183985.ko
4. ロードされているかどうかを確認します。
# dmesg | grep CVE-2016-5195 CVE-2016-5195 mitigation loaded
5. モジュールをアンロードするには、システムを再起動するか、次に示すようにコマンド「staprun -A dirtycow_26183985」を実行して Ctlr+C で割り込みを行います。
# staprun -A dirtycow_26183985 ^C Message from syslogd@... kernel:CVE-2016-5195 mitigation unloaded
重要
軽減策の詳細な手順は、バグ 1384344 を参照してください。
Comments