CVE-2013-2094 は Red Hat Enterprise Linux および Red Hat Enterprise MRG に影響しますか?

Solution Verified - Updated -

Environment

  • 32 ビットおよび 64 ビットの Red Hat Enterprise Linux 6 (6.1、6.2、6.3、および 6.4)。6.0 は影響を受けません。
  • Red Hat Enterprise MRG Realtime 2

Issue

CVE-2013-2094 (Red Hat Bugzilla 962792) で特定された不具合は、Linux カーネルの Performance Events 実装で、ユーザーがアレイに作成したインデックスが適切に認証されていないため、領域外へのカーネルメモリーアクセスが発生します。この不具合により、非特権のローカルユーザーが上位権限を取得することができます。

Red Hat Enterprise Linux 6 および Red Hat Enterprise MRG 2 に影響するセキュリティ上の脆弱性が存在します。

Resolution

Red Hat Enterprise Linux 4 および 5

この問題を実装したアップストリームのコミット b0a873eb はバックポートしていないため、この問題は Red Hat Enterprise Linux 4 および 5 に含まれるカーネルパッケージには影響しません。

Red Hat Enterprise Linux 6 および Red Hat Enterprise MRG 2

Red Hat Enterprise Linux 6 および Red Hat Enterprise MRG 2 は、セキュリティ上の脆弱性の影響を受けます。この問題を修正するためのアップデートが利用できます。以下のアップデートを適用することを推奨します。

アップデートが利用できない場合は適用するまでの間、以下に提供されている SystemTap スクリプトが Red Hat Enterprise Linux 6 および Red Hat Enterprise MRG 2 の問題を軽減します。

1) 以下の SystemTap スクリプトを .stp 拡張子でホストに保存します。

%{
#include <linux/perf_event.h>
%}
function sanitize_config:long (event:long) %{
        struct perf_event *event;
#if STAP_COMPAT_VERSION >= STAP_VERSION(1,8)
        event = (struct perf_event *) (unsigned long) STAP_ARG_event;
#else
        event = (struct perf_event *) (unsigned long) THIS->event;
#endif
        event->attr.config &= INT_MAX;
%}

probe kernel.function("perf_swevent_init").call {
        sanitize_config($event);
}

2) systemtap パッケージと必要な依存関係をインストールします。必要な -debuginfo パッケージのインストールについては、access.redhat.com/docs/ に保存されている Red Hat Enterprise Linux 6 "SystemTap Beginners Guide" の "2. SystemTap" を参照してください。

3) root で、stap -g [filename-from-step-1].stp コマンドを実行します。このコマンドは何も表示せず、返ってきません。

ホストが再起動したら変更が失われるため、スクリプトを再度実行する必要があります。

開発マシンで SystemTap スクリプトをコンパイルし、コンパイルしたカーネルモジュールを別のマシンにデプロイする場合は、https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/SystemTap_Beginners_Guide/cross-compiling.html を参照してください。これは、他のマシンにコンパイラや -debuginfo パッケージが存在せず、systemtap-runtime しかない場合に便利です。

(sysctl -w kernel.perf_event_paranoid=2 コマンドを root として実行して) sysctl kernel.perf_event_paranoid 変数を 2 に設定することで、公に流布された侵入を防ぐことは出来ますが、この問題そのものは軽減されません。kernel.perf_event_paranoid を 2 に設定したシステム上でも、その公開された侵入が有効になるように変更することは簡単なことです。

Root Cause

CVE-2013-2094 問題は、アップストリームの git コミット b0a873eb によって発生しました。そのコミットは不十分なユーザーが指定したインデックスの認証を引き起こす、整数変換を実装しました。

Diagnostic Steps

未修正のオリジナル "semtex" CVE-2013-2094 であるセキュリティ上の脆弱性が、(Intel 64 および AMD64 アーキテクチャの) Red Hat Enterprise Linux 6 または Red Hat Enterprise MRG 2 で実行されたことが検出される場合があります。

1) 以下のスクリプトを .stp 拡張子でホストに保存します。

global PSE_ADDR=0

probe begin {

        printf("--------------------------------------------------------------------------\n");

        if ((kernel_int(PSE_ADDR-4) != 0) || (kernel_int(PSE_ADDR-8) != 0)) {
                printf("%lx -- %x, %lx -- %x\n", PSE_ADDR-4, kernel_int(PSE_ADDR-4), PSE_ADDR-8, kernel_int(PSE_ADDR-8));

                if (kernel_int(PSE_ADDR-4) == kernel_int(PSE_ADDR-8))
                        printf("CVE-2013-2094 semtex local privilege escalation exploit residue detected!\n");
                else
                        printf("CVE-2013-2094 relevant suspicious value combination detected.\n");

        } else
                printf("CVE-2013-2094 semtex local privilege escalation exploit residue NOT detected!\n");

        printf("--------------------------------------------------------------------------\n");

        exit();
}

2) systemtap パッケージと必要な依存関係をインストールします。必要なパッケージのインストールについては、access.redhat.com/docs/ に保存されている Red Hat Enterprise Linux 6 "SystemTap Beginners Guide" の "2. SystemTap" を参照してください。

3) root で以下のコマンドを実行します。

stap [filename-from-step-1].stp -G PSE_ADDR=0x`grep perf_swevent_enabled /proc/kallsyms | awk '{print $1}'`

4) 表示されたメッセージを確認します。

スクリプトが "semtex" の脆弱性を検出しなくても、サーバーがハッキングされていないわけではありません。未修正のセキュリティ上の脆弱性がこのサーバーでは実行しなかった (または何かが失敗した) ことを意味しています。多くの脆弱性はオリジナルの "semtex" と同じか、それを基にしたものを使用していることを考慮すると、このスクリプトは、少なくても未修正のオリジナルの "semtex" 脆弱性がシステムで実行されたことを検出するためのツールとして使用することができます。

また、この脆弱性を修正して、開発後に一掃することは重要な問題ではありません。ただし、サーバーがハッキングされていないことの証明として検出スクリプトを使用することはできません。

この問題を軽減する方法については、Red Hat サポートチーム https://access.redhat.com/support/contact/technicalSupport.html にご連絡ください。

改訂履歴

2013 年 5 月 16 日更新: このアップデートでは、「システム環境」セクションから Red Hat Enterprise Linux 4 および 5 への参照を削除しました (4 と 5 はCVE-2013-2094 に影響されません)。32 ビットおよび 64 ビットバージョンの Red Hat Enterprise Linux 6 が影響を受けます。また、「解決策」セクションで、SystemTap スクリプトを修正しました。以前、このスクリプトは Red Hat Enterprise Linux 6.1 などの以前のバージョンでは実行しませんでした。

2013 年 5 月 16 日更新: このアップデーでは、Red Hat Enterprise Linux 6 でこの問題に対処する Red Hat Security Advisory RHSA-2013:0830 のリリースを反映しました。

2013 年 5 月 18 日更新: このアップデートでは、Red Hat Enterprise Linux 6.3 Extended Update Support でこの問題に対処する Red Hat Security Advisory RHSA-2013:0832 のリリースを反映しました。

2013 年 5 月 21 日更新: このアップデートでは、Red Hat Enterprise Linux 6.1 Extended Update Support でこの問題に対処する Red Hat Security Advisory RHSA-2013:0841、Red Hat Enterprise Linux 6.2 Extended Update Support での問題に対処する RHSA-2013:0840、および Red Hat Enterprise MRG 2 での問題に対処する RHSA-2013:0829 のリリースを反映しました。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.