Local kernel privilege escalation in the HDLC TTY line discipline implementation - CVE-2017-2636

Public Date: June 15, 2017, 15:05
更新 June 15, 2017, 15:05 - 英語
Resolved 状態
Important Impact

Red Hat セキュリティーレスポンスチームは、HDLC (High-Level Data Link Control) TTY の回線制御規則 (line discipline) の Linux カーネル実装に影響する脆弱性について認識しており、この脆弱性は CVE-2017-2636 で対応されています。この問題は 2017 年 3 月 7 日に公開され、この脆弱性による影響度は重要な影響 と評価されています。

背景情報

カーネルの TTY サブシステムは、物理および仮想接続されているコンソールと一部のプログラムに対する端末および端末に準じた入出力に使用されます。カーネルでサポートされる端末タイプにはその基礎としてサポートしているハードウェア要件のあるものが多くありますが、さまざまな端末タイプにわたって使用できる汎用機能もあります。

この脆弱性は、送信バッファー n_hdlc の管理と処理に関係するものです。送信バッファーにアクセスすると、同時に非同期のアクセスも可能になり、カーネルがメモリーの同じ領域の解放を 2 回試行する二重解放を引き起こす可能性があります。ローカルの攻撃者は特定サイズのメモリー割り当てが行われるようにしてこのメカニズムを悪用し、悪意のある命令でカーネル関数ポインターを配置し、攻撃者に代わって実行できるようにする可能性があります。

謝辞

Red Hat は、この問題をご報告いただいた Alexander Popov 氏に謝意を表します。

Red Hat セキュリティーレスポンスチームは、本件によるセキュリティー上の影響度を重要な影響と評価しています。

影響を受ける製品

以下の Red Hat 製品バージョンが影響を受けます。

  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise MRG 2
  • Red Hat Openshift Online v2
  • Red Hat Virtualization (RHEV-H/RHV-H)
  • RHEL Atomic Host

攻撃の詳細と影響

この不具合では、ローカルシステムのアカウントを持つ攻撃者による特権昇格が可能になります。このような脆弱性は通常 UAF (Use After Free) と呼ばれ、以前に行われた free() 操作が原因で使用中の割り当てを参照しなくなったポインターを介してメモリーにアクセスするコードパスを実行して悪用されます。これはリモート攻撃ではなく、攻撃者はシステムのローカルアカウントにアクセスできなければなりません。

脆弱性の診断


システムの脆弱性を判断する

以下の診断スクリプトを使用して、現在ご使用のシステムにこの不具合による脆弱性があるかどうかを判断します。スクリプトを検証するには 、分離されている GPG 署名 をダウンロードすることもできます。スクリプトの現在のバージョンは 1.0 です。

対処方法

影響を受けるバージョンのカーネルをご使用のお客様は、パッチのリリース直後にカーネルを更新することが強く推奨されます。影響を受けるパッケージや推奨される軽減策の詳細は以下を参照してください。カーネルの更新を適用するには、システムを再起動する必要があります。

製品パッケージアドバイザリー
Red Hat Enterprise Linux 7kernelRHSA-2017:0931
Red Hat Enterprise Linux 7kernel-rtRHSA-2017:0931
Red Hat Enterprise Linux 7.2 Extended Update Support (EUS: 延長アップデートサポート)*kernelRHSA-2017:1125
Red Hat Enterprise Linux 6kernelRHSA-2017:0892
Red Hat Enterprise Linux 6.7 Extended Update Support (EUS: 延長アップデートサポート)*kernel保留中
Red Hat Enterprise Linux 6.6 Advanced Update Support**kernel保留中
Red Hat Enterprise Linux 6.5 Advanced Update Support**kernel保留中
Red Hat Enterprise Linux 6.4 Advanced Update Support**kernelRHSA-2017:0986
Red Hat Enterprise Linux 6.2 Advanced Update Support***kernelRHSA-2017:1126
RHEL Atomic Hostkernel保留中
Red Hat Enterprise MRG 2kernel-rtRHSA-2017:0932
Red Hat Virtualization (RHEV-H/RHV-H)kernel保留中

影響を受ける製品の更新

*このパッチを取得するには、有効な EUS サブスクリプションが必要です

お持ちのアカウントに有効な EUS サブスクリプションがない場合は、Red Hat 営業部門または営業の担当者にお問い合わせください。

Red Hat Enterprise Linux Extended Update Support サブスクリプションとは何ですか?

**RHEL AUS のパッチを入手するには、有効な AUS サブスクリプションが必要です

軽減策

n_hdlc カーネルモジュールは、アプリケーションが HDLC の回線制御規則 (line discipline) をユーザー領域から使おうとすると、自動的にロードされます。このモジュールがロードされないようにするには、システム全体の modprobe ルールを使用します。以下のコマンドを root として実行すると、モジュールは意図的または非意図的にロードされなくなります。Red Hat セキュリティーレスポンスチームは、この方法を、特権ユーザーによる場合でも意図せずにモジュールがロードされないようにするための強固な方法であると判断しています。

 # echo "install n_hdlc /bin/true">> /etc/modprobe.d/disable-n_hdlc.conf

n_hdlc モジュールがすでにロードされている場合は、システムを再起動する必要があります。ほとんどの場合で、n_hdlc カーネルモジュールが使用中であり、現在のプロセスのいずれかでこの回線制御規則の使用が必要な場合は n_hdlc カーネルモジュールをアンロードできなくなります。

この脆弱性は、ハードウェア Microgate または SyncLink が使用中でなくても悪用される可能性があります。

ヘルプが必要な場合は、この KCS アーティクルを参照するか、または Red Hat グローバルサポートサービスにお問い合わせください。

Ansible Playbook

Ansible  playbook を使用すると、脆弱性が軽減されます。「偽装インストール」が実行され、 ブラックリストファイルが /etc/modprobe.d/disable-n_hdlc.conf に作成されることで、脆弱性のあるモジュールがロードされなくなります。実行中のカーネルに HDLC モジュールがすでにロードされている場合は、システムを再起動します。ブラックリストファイルが所定の場所にあれば、このモジュールはロードされなくなります。修正済みパッケージが利用可能な場合でこれをインストールした後に、必要に応じて /etc/modprobe.d/disable-n_hdlc.conf のファイルを削除できます。

この Playbook は、HOSTS という名前の変数に対して実行されます。次のように起動できます (「hostname」がインベントリーファイルに定義されていることが前提です)。 

# ansible-playbook -e HOSTS=hostname mitigate_fixit.yml

 この Playbook には root 権限が必要であり「become: true」を指定するので、適切な権限が設定されているアカウントを使用する必要があります。


Comments