Black Hatで新たなLinuxエクスプロイト「Dirty Cred」が明らかに

先週開催されたセキュリティカンファレンス「Black Hat」で、Dirty Credと呼ばれる新たなLinuxカーネルエクスプロイトが明らかになった。博士課程の学生であるZhenpeng Lin氏と研究チームは、Linuxカーネル8以降に影響を及ぼした悪名高いDirty Pipe脆弱性に対する別のアプローチに取り組んだ。Dirty Pipeは、攻撃者が […]

執筆者
Julien Maury
Julien Maury
Aug 17, 2022
4 minute read
eSecurity Planet のコンテンツおよび製品のおすすめは、編集上の独立性を保っています。パートナーへのリンクをクリックすると、当社が報酬を得る場合があります。 詳細を見る

先週開催されたセキュリティカンファレンス「Black Hat」で、Dirty Credと呼ばれる新たなLinuxカーネルエクスプロイトが明らかになった。

博士課程の学生であるZhenpeng Lin氏と研究チームは、悪名高いDirty Pipe脆弱性に対する別のアプローチに取り組んだ。

Dirty Pipeは、カーネルがパイプを使ってデータを受け渡す仕組みを悪用し、攻撃者が最小権限のアカウントをroot権限まで昇格させられる重大な欠陥だ。攻撃者はこれを利用してシステムファイルを変更し、脆弱なマシン上でroot権限で実行される任意のコードを注入できる。

Lin氏のチームは、既報の脆弱性(CVE-2021-4154)と新たな脆弱性(CVE-2022-2588)に対して脆弱なシステムで、Linuxカーネルの認証情報を入れ替える手法を発見し、今後は互換性のあるCVEをさらに追加する予定だという。公開されているPOC(概念実証)はGitHubで提供されており、攻撃に対する有効な防御策となる。

研究者らはこのアプローチを、コンテナ(Dirty Pipeとは異なり)やAndroidにも適用できる汎用的な手法であり、「さまざまなバグをDirty Pipeのように機能させる」ものだと説明している。実際、生成されたエクスプロイトは「コードを変更せずに異なるカーネルやARCHで動作する」という。

こちらも読む:CI/CDパイプラインはソフトウェアサプライチェーンの重大なリスク:Black Hatの研究者ら

Dirty Credの仕組み

Lin氏はTwitterで、同じエクスプロイトコードを使い、CentOS 8やUbuntuなど異なる2つのシステム上で低権限ユーザーの権限を昇格させる方法を実演するデモを公開した。

攻撃の実体はカーネルヒープの破壊だ。特権認証情報は非特権の認証情報から分離されていないため、攻撃者は両者を入れ替えようとする可能性がある。

カーネルの認証情報には主に2種類ある:

  • タスク認証情報
  • オープンファイル認証情報

簡単に説明すると、カーネルは「struct cred」と「struct file」という2種類のオブジェクトを使用する。これらのオブジェクトは専用のキャッシュに格納される。前者にはタスク認証情報、つまりプロセスの特権、機能、権限に関する情報が保持される。

このようなデータを変更できる攻撃は、権限昇格につながる可能性がある。Dirty Credは、使用中の非特権認証情報を解放し、空いたメモリ領域に特権認証情報を割り当て、最終的に特権ユーザーとして操作する:


ただし、この攻撃は完璧ではない。特権ユーザーがタスク認証情報を割り当てるまで待つ必要があるためだ。例えば、root SUIDを持つプロセスを起動させることは可能だと考えられる。

オープンファイル認証情報とstruct fileオブジェクトの場合も、アプローチはほぼ同じだ。攻撃者は権限チェックの後、ファイルがディスクに書き込まれる前にファイルを解放する。これにより、攻撃者はそのメモリ領域に読み取り専用のファイルオブジェクトを割り当て、特権ユーザーとして操作できる可能性がある:

ファイルエクスプロイトを安定させるための最後の手順は、簡単に実現できるものではない。入れ替えは権限チェックとディスクへの書き込みの間に行う必要があり、時間枠が極めて狭いためだ。

研究者らは、その時間枠を延ばすため、カーネルの実行を一時停止させる複数の解決策(FUSEやファイルロックなど)を示した。

詳しくは、最適な特権アクセス管理(PAM)ソフトウェアを参照。

Dirty Cred攻撃から身を守る方法

特定の脆弱性など一定の条件下ではすでに動作しているものの、POCはまだ開発途上である点には注意が必要だ。CVE-2021-4154はLinuxカーネルで修正済みだが、研究者らによれば「このエクスプロイトは、linux-4.18.0-305.el8より新しいCentOS 8カーネルの大半と、5.4.0-87.98および5.11.0-37.41より新しいUbuntu 20カーネルの大半で動作する」という。

オブジェクトは特権ではなく種類に基づいて分離されているため、研究者らは、キャッシュをまたぐ攻撃を防ぐために仮想メモリを使って特権認証情報を非特権の認証情報から分離することを推奨している。

パッチはGitHubで公開されており、vmalloc(仮想的に連続したメモリ)を使ってタスク認証情報を分離するものだ。

次に読む:最適なゼロトラストセキュリティソリューション

Julien Maury

eSecurity Planet contributor Julien Maury writes about penetration testing, code security, open source security and more. He is a backend developer, a mentor and a technical writer who enjoys sharing his knowledge and learning new concepts.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

TechnologyAdvice が所有・運営しています。 © 2026 TechnologyAdvice. 無断転載を禁じます

広告主に関する開示:このサイトに掲載されている製品の一部は、TechnologyAdvice が報酬を受け取っている企業のものです。この報酬は、製品がこのサイトのどこにどのように表示されるか(表示される順序など)に影響する場合があります。TechnologyAdvice は、市場で入手可能なすべての企業やすべての種類の製品を掲載しているわけではありません。