eSecurity Planetは8月17日、「New Linux Exploit 'Dirty Cred' Revealed at Black Hat」において、Linuxカーネルに対する新しい攻撃手法「Dirty Cred」について伝えた。Dirty Credは、米国で開催されたセキュリティカンファレンス「Black Hat」の場で発表された。

この攻撃手法では、Linuxカーネルの既知の脆弱性と新しい脆弱性を悪用することで、Linuxカーネルの資格情報を置き換えて、権限の低いユーザーを特権ユーザーとして操作できるようになるという。

Dirty Credの発表資料は、次のPDF文書として公開されている。

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

Dirty Credは、「非特権の資格情報(Credential)を特権の資格情報と入れ替えることによって、非特権ユーザーの権限を昇格させる」というアイデアに基づいている。カーネルの資格情報には、大きく分けて「Task Credential」と「Open File Credential」の2つのタイプがある。これらの資格情報のオブジェクトは専用のキャッシュに格納される。Dirty Credでは、キャッシュに展開されたこれらの資格情報オブジェクトにおいて、非特権の資格情報を解放し、解放されて空いた領域に特権の資格情報を割り当てることで、最終的に特権ユーザーとして操作する。

非特権資格情報と特権資格情報を入れ替えて権限を昇格させる

この一連のプロセス、特に解放された領域に特権の資格情報を割り当てる操作は、通常の方法では実現できないが、研究チームではLinuxカーネルの既知の脆弱性「CVE-2021-4154」と、新たに発見した脆弱性「CVE-2022-2588」を使用することで可能になることを実証したとのことだ。ただし、関連する脆弱性のCVEは、今後追加される可能性があるという。

研究チームによる検証はCentOS 8とUbuntuのそれぞれで行われた。PoC(概念実証)はGitHubで公開されている。

Dirty Credからシステムを守るには、各ディストリビューションの案内に従ってLinuxカーネルを最新バージョンにアップデートする必要がある。また、研究チームが公開しているGitHubのリポジトリでは、仮想メモリを使用して権限のない資格情報から特権資格情報を分離することで、Dirty Cred攻撃を不可能にするパッチが公開されている。

DirtyCred/vmalloc_isolation.patch at master · Markakd/DirtyCred