Linux Kernelの脆弱性(Dirty Cred:CVE-2021-4154, CVE-2022-2588, and more in future)

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

08/17/2022にLinux Kernelの脆弱性(Dirty Cred:CVE-2021-4154, CVE-2022-2588)が公開されました。Dirty COW (CVE-2016-5195)と似たような脆弱性で、cred(LSMなどのセキュリティ系で特権情報をLinux Kernel内で扱う際に使用する構造体及びシステム)が対象となります。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について纏めます。

情報が錯綜していますので、逐次更新します。

詳細な説明はBlack Hatでの発表の記事を抜き書きさせていただきました(発表スライドの出来があまりにもわかりやすくて良かったもので・・)。

将来的には、上記のCVEだけではなく新たなCVEもアサインされる可能性があります。

20220828追記:PoC動画(CVE-2021-4154の方のみ, CentOS 8.4上でSELinux有効)をアップしました。




Priority

CVE番号 影響するバージョン 一次情報源 Priority CVSS Score / CVSS Vector
CVE-2021-4154

https://i.blackhat.com/USA-22/Thursday/US-22-Lin-Cautious-A-New-Exploitation-Method.pdf

https://github.com/Markakd/DirtyCred

New Linux Exploit 'Dirty Cred' Revealed at Black Hat

Red Hat: 8.8 Important

Red Hat: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

NVD: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

CVE-2022-2588

https://i.blackhat.com/USA-22/Thursday/US-22-Lin-Cautious-A-New-Exploitation-Method.pdf

https://github.com/Markakd/DirtyCred

New Linux Exploit 'Dirty Cred' Revealed at Black Hat

Red Hat: 7.8 Moderate

Red Hat: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H


PoC動画

PoCの環境にはSELinuxを有効にしたCentOS 8.4を使っています。本脆弱性の性質上、SELinuxによるアクセス制限はかかりません。

Dirty Cred (CVE-2021-4154, CVE-2022-2588) PoC on CentOS 8.4 (SELinux Enabled) (CVE-2021-4154 only).

修正方法

各ディストリビューションの情報を確認してください。

脆弱性概要(詳細はこちらのBlackHatでの講演PDFがわかりやすいです)

Linux KernelのCredentialに関しては、こちらのLinux Kernelドキュメントに纏まっています。

Dirty Credは、「非特権のcred(credential)を特権のcredと入れ替えることが出来ないか」というアイデアから見つけられた脆弱性のようです。

前述の通り、Linux Kernelのcred(Credential)はセキュリティ関連で特権などを扱うときに使われています。

credには下記のように大きく分けて二種類が存在しています。

  1. task credential(struct cred)

  2. open file credential(struct file)

Dirty Credは、kernel heap内に展開されたこの2種類のcredをそれぞれ

  1. task credential(struct cred)

  2. open file credential(struct file)

と、それぞれ特権を持つものと入れ替えようというのがコンセプトとなっています。

これには、まず

  1. Credential部分をフリーにするには
    1. 不正なフリー(Double-Free)
    2. 不正書き込み(OOB/UAF)

    をそれぞれ使う

  2. フリーにした部分を特権のTask Credentialで埋めるには
    1. SUIDで動作するプロセスを使う(su, mount)
    2. rootで動作しているプロセスを使う(sshd)
    3. 特権のKernelスレッドを利用する(Kernel Workqueue, Usermode helper)
  3. ファイルを書き込んで安定させる

    1. UserfaultfdとFUSEを使う
    2. file lockを用いる

のステップを行う必要があります。

ここで、上記のステップが下記の脆弱性

  1. CVE-2021-4154
  2. CVE-2022-2588

を用いて検証できた、という話になります。

PoCはUbuntu/CentOS8で行い、どちらでも特権を取得することが出来た様です。

PoCデモはZhenpeng Lin氏のTwitterで見ることが出来ます。

将来的には、上記のCVEだけではなく新たなCVEもアサインされる可能性があります。


対処方法

各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteKatello、Spacewalk等を使うと管理が便利でしょう。

また、OSの再起動が発生しますので、pacemakerなどOSSのクラスタ製品やLifeKeeperなどの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます。

日々のメモを更新しています。

セキュリティ関係ニュースを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。

CFP情報 1

CSS2022の論文投稿およびデモ展示・ポスター発表募集のご案内です。みなさまからのご投稿・ご発表をお待ちしております。

コンピュータセキュリティシンポジウム2022 (CSS2022)

■開催期間 2022年10月24日(月) ~ 2022年10月27日(木)

■会場 熊本城ホールとオンライン(ZOOM)のハイブリッド開催

■募集スケジュール

  • 2022年08月12日(金) 論文発表申込締切(アブストラクト)
  • 2022年08月23日(火) 17:00 デモ展示・ポスター発表申込締切
  • 2022年08月23日(火) 17:00 最終原稿締切(カメラレディ)

主催 一般社団法人 情報処理学会 コンピュータセキュリティ研究会(CSEC)

共催 一般社団法人 情報処理学会 セキュリティ心理学とトラスト研究会(SPT)

合同開催

  • マルウェア対策研究人材育成ワークショップ2022(MWS2022)
  • プライバシーワークショップ2022(PWS2022)
  • ユーザブルセキュリティワークショップ2022(UWS2022)
  • OSSセキュリティ技術ワークショップ2022(OWS2022)
  • ブロックチェーンセキュリティワークショップ2022(BWS2022)

前へ

zlibの脆弱性(Moderate: CVE-2022-37434 )

次へ

PostgreSQLの脆弱性情報(Moderate: CVE-2022-2625)と新バージョン(14.5, 13.8, 12.12, 11.17, 10.22)