CVE-2018-14634

Impact:
Important
Public Date:
2018-09-25
CWE:
CWE-190
Bugzilla:
1624498: CVE-2018-14634 kernel: ILinux の create_elf_tables 関数における整数オーバーフロー
整数オーバーフローの脆弱性が Linux カーネルの create_elf_tables() 関数で見つかりました。SUID バイナリーへのアクセスがある権限のないローカルユーザー (もしくは権限のあるユーザー) はこの脆弱性を使用して、システム上で権限をエスカレートさせることが可能になります。

Find out more about CVE-2018-14634 from the MITRE CVE dictionary dictionary and NIST NVD.

Statement

32-bit システムにはこの脆弱性で悪用されるような広さのアドレス空間がないため、影響を受けません。

メモリーが 32GB 以下のシステムは、悪用に必要なメモリーデマンドのために、影響を受ける可能性が低くなります。

Red Hat Enterprise Linux 5 の Linux カーネルはこの問題の影響を受けません。

この問題は、Red Hat Enterprise Linux6、7 および Red Hat Enterprise MRG 2 に同梱されている Linux カーネルのバージョンに影響を与えます。Red Hat Enterprise Linux 6、7 および Red Hat Enterprise MRG 2 の今後のカーネル更新でこの問題に対処する予定です。

CVSS v3 評価基準

CVSS3 基本値 7.8
CVSS3 基本評価基準 CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
攻撃元区分 Local
攻撃条件の複雑さ Low
必要な特権レベル Low
ユーザ関与レベル None
スコープ Unchanged
機密性 High
完全性への影響 High
可用性への影響 High

Red Hat Security Errata

Platform Errata Release Date
Red Hat Enterprise Linux Advanced Update Support 6.4 (kernel) RHSA-2018:3643 2018-11-20
Red Hat MRG Grid for RHEL 6 Server v.2 (kernel-rt) RHSA-2018:3586 2018-11-13
Red Hat Enterprise Linux Extended Update Support 7.3 (kernel) RHSA-2018:3591 2018-11-13
Red Hat Enterprise Linux Advanced Update Support 6.5 (kernel) RHSA-2018:2933 2018-10-16
Red Hat Enterprise Linux Server TUS (v. 7.2) (kernel) RHSA-2018:3590 2018-11-13
Red Hat Enterprise Linux Advanced Update Support 6.6 (kernel) RHSA-2018:2924 2018-10-16
Red Hat Enterprise Linux for Real Time for NFV (v. 7) (kernel-rt) RHSA-2018:2763 2018-09-25
Red Hat Enterprise Linux 7 (kernel) RHSA-2018:2748 2018-09-25
Red Hat Enterprise Linux 6 (kernel) RHSA-2018:2846 2018-10-09
Red Hat Enterprise Linux Advanced Update Support 7.2 (kernel) RHSA-2018:3590 2018-11-13
Red Hat Enterprise Linux Extended Update Support 6.7 (kernel) RHSA-2018:2925 2018-10-17
Red Hat Enterprise Linux Extended Update Support 7.4 (kernel) RHSA-2018:3540 2018-11-13
Red Hat Enterprise Linux Server TUS (v. 6.6) (kernel) RHSA-2018:2924 2018-10-16
Red Hat Enterprise Linux Server Update Services for SAP Solutions 7.2 (kernel) RHSA-2018:3590 2018-11-13

Affected Packages State

Platform Package State
Red Hat Enterprise Linux 7 kernel-alt 影響なし
Red Hat Enterprise Linux 5 kernel 影響なし
Unless explicitly stated as not affected, all previous versions of packages in any minor update stream of a product listed here should be assumed vulnerable, although may not have been subject to full analysis.

Acknowledgements

Red Hat は、この問題をご報告いただいた Qualys Research Labs に謝意を表します。

軽減策

以下の方法でこの問題を軽減できます。

https://access.redhat.com/solutions/666123 の指示に従って、kernel-debuginfo パッケージをインストールして有効にします。

1) ホスト上で、以下を ".stp" の拡張子を付けたファイルに保存します。

// CVE-2018-14634
//
// Theory of operations: adjust the thread's # rlimit-in-effect around
// calls to the vulnerable get_arg_page() function so as to encompass
// the newly required _STK_LIM / 4 * 3 maximum.

// Complication: the rlimit is stored in a current-> structure that
// is shared across the threads of the process. They may concurrently
// invoke this operation.

function clamp_stack_rlim_cur:long ()
%{
  struct rlimit *rlim = current->signal->rlim;
  unsigned long rlim_cur = READ_ONCE(rlim[RLIMIT_STACK].rlim_cur);

  unsigned long limit = _STK_LIM / 4 * 3;
  limit *= 4; // multiply it back up, to the scale used by rlim_cur

  if (rlim_cur > limit) {
    WRITE_ONCE(rlim[RLIMIT_STACK].rlim_cur, limit);
    STAP_RETURN(limit);
  } else
    STAP_RETURN(0);
%}

probe kernel.function("copy_strings").call
{
  l = clamp_stack_rlim_cur()
   if (l)
     printf("lowered process %s(%d) STACK rlim_cur to %p\n",
            execname(), pid(), l)
}

probe begin {
printf("CVE-2018-14634 mitigation loaded\n")

}

probe end {
printf("CVE-2018-14634 mitigation unloaded\n")
}

2) "systemtap" パッケージと必要な依存関係をインストールします。必要な -debuginfo および適合する kernel-devel パッケージのインストールについての情報は、Red Hat Enterprise Linux "SystemTap Beginners Guide" の
"2. Using SystemTap"
の章を参照してください。docs.redhat.com でご覧になれます。

3) "stap -g [filename-from-step-1].stp" コマンドを root で実行します。

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

別の方法では、開発システム上で
"stap -g -p 4 [filename-from-step-1].stp" を使って systemtap スクリプトを構築し、そこでできた
kernel モジュールを影響を受ける全システムに配布して、それらのシステム上で "staprun -L " を実行します。
このアプローチを使用する際には、影響を受けるシステムで systemtap-runtime パッケージのみが必要になります。
カーネルのバージョンが
全システムで同一である必要があることに注意してください。

お使いのアプリケーションが膨大なスタックスペースを使用する場合には、この回避策は適切でない可能性があります。この軽減策を実行する際にマイナスの影響がある場合は、この点を考慮してください。

参考情報 (外部リンク)

Last Modified