DirtyPipe (CVE-2022-0847)は新たなDirtyCoW?

数日前,セキュリティリサ,チャ,のMax Kellermann(マックス·ケラ,マン)氏がDirtyPipeという脆弱性を公表し,cve-2022-0847として新たに指定されました。この脆弱性はLinuxカーネルに影響を与え,悪用された場合はローカルの攻撃者が根権限を取得することが可能です。この脆弱性はカーネル5.8以降を搭載したすべてのLinuxベースのシステムに影響を与え,特に悪用するための前提条件もないため,多くのメディアで取り上げられました。
本ブログではDirtyPipe脆弱性の概要と修正方法に関するガイダンスおよび本脆弱性に関する調査の一環として発見した緩和策について説明します。
DirtyPipe脆弱性(CVE-2022-0847)とは?
DirtyPipeはLinuxカーネルにおけるローカル権限昇格の脆弱性であり,ローカルの攻撃者は特定の条件下で任意のファイルのパーミッションをバイパスし,任意のデータを書き込むことができます。この脆弱性はLinuxカーネルバージョン5.8以降に影響を与え,最新のカーネルバージョン(5.16.11、5.15.25 5.10.102)で修正されています。
本脆弱性は読み取り専用のリソ,スにデ,タを書き込むことができるという点で,2016年に発見されたDirtyCoW脆弱性に類似しています。ただし,DirtyPipeでは攻撃者が読み取り専用のファイルに書き込むことができるのに対し,DirtyCoWでは読み取り専用のメモリマップに書き込むことができる点が大きな違いです。
cve-2022-0847の技術的概要
はcve - 2022 - 0847接头()システムコールを使用している際に発見されました。基本的に,このシステムコールはファイル記述子とパイプの間でデータを移動しますが,データがユーザーモード/カーネルモードアドレス空間の境界を越える必要がないため,マシンのパフォーマンスを向上させることができます。通常,ファイルを送信する際にはメモリページ(通常4 kbの大きさ)がペ,ジキャッシュと呼ばれるメモリ管理された空間にコピ,されます。そこからデータはユーザ空間にコピーされ,不要なハードディスクI / Oを避けるためにキャッシュに残ります。
ファ▪▪ルをパ▪▪プに読み込む際(接头()システムコールを使用),同時に任意のデータをパイプに書き込むと,このバグによる誤った状態により,ファイルが使用しているのと同じページキャッシュにデータが残ってしまい,その結果,ファイルが読み取り専用モード(O_RDONLY)で開かれたとしても,パ,。詳細にいては技術的な記述をご参照ください。
この脆弱性を利用することで,以下の条件下でローカルの攻撃者はパーミッションに関係なく任意のファイルに任意のデータを書き込めます。
- 攻撃者が読み取ることができるファ@ @ルであること
- 上書きされたオフセットがペジ境界であってはならない(ペジサズは通常4096)
- ペ,ジ境界を越えて書き込むことはできない
- ファ▪▪ルサ▪▪ズを変更することはできない
誰がcve-2022-0847の影響を受けるのか?
cve - 2022 - 0847 5.8はから5.16.11,5.15.25,5.10.102より前のバージョンのLinuxカーネルに影響を及ぼします。この問題はLinuxカーネルの一般的に使用されるコードに関係するため,デフォルト設定ではUbuntuやDebianを含むすべての主要なLinuxディストリビューションに影響を及ぼします。
クラウドサビスのプロバタはcve-2022-0847の影響を受けるのか?
現在,主要なクラウドプロバイダーはすべて影響を受けており,部,的,GCPからプロビジョニングされたインスタンスで脆弱性を悪用される可能性があります。
cve-2022-0847のescンパクトは?
この脆弱性を利用した場合,例えばロ,カル攻撃者は”“/ etc / passwd”“のような機密ファ@ @ルを書き換えたり,精灵を悪意のあるコ@ @ドで上書きして任意の。setuid root二进制をハ@ @ジャックするなど,簡単にル@ @ト権限を獲得できます。
cve-2022-0847はコンテナから取得するために使用できるか?
通常,コンテナ内にマウントされたファイルはホストに保存されないため,通常の条件下では本脆弱性によって攻撃者がコンテナから取得することはできないと考えられます。しかし,機密性の高いホストファイルがコンテナ内に読み取り専用でマウントされている場合,本脆弱性により,コンテナ内の攻撃者がファイルを変更し,コンテナから取得できる可能性があります(これらのファイルの使用状況に依存します)。
cve-2022-0847の修正方法
Linux内核を5.16.11、5.15.25 5.10.102以降のいずれかのバージョンにアップグレードすることを推奨します。また,それが不可能な場合はこらのパッチを用いてLinuxカ,ネルにパッチを適用することを強く推奨します。
| ディストリビュ,ション | 脆弱性バ,ジョン | 修正バ,ジョン |
| Ubuntu | 20.04.2以降 | パッチなし |
| Debian | 牛眼灯5.10.84-1 | 牛眼灯5.10.92-2 书虫とsid 5.16.11-1 |
| 红色的帽子 | 影響なし* | パッチなし |
なおRHEL8 (Linuxカーネル4.18を使用)はcve - 2022 - 0847(初期化の欠落)の根本的な問題がバジョン4.9からカ,ネルに存在しているため,红帽により影響を受けると書かれています。しかし、現在知られている唯一の悪用経路(PIPE_BUF_FLAG_CAN_MERGEの使用)はバ,ジョン5.8で導入されました。5.7そのため4.9からまでのLinuxカーネルバージョンは将来的に別途悪用される可能性がありますが,現状はこれらのバージョンでは機能しません。
Cve-2022-0847に対して,どのような緩和策があるのか?
カ,ネルのアップグレ,ドやパッチ適用が不可能な場合,拼接システムコルを無効にするseccompプロファルを導入することができます。これは一部のソフトウェアパッケージで問題を引き起こすかもしれませんが,このシステムコールの使用は比較的まれであるため,通常,このシステムコールをブロックしても,正当なアプリケーションに影響を与えることはありません。
具体的にはDockerコンテナを保護するために,Dockerのデフォルトのseccompプロファescルを変更し,許可されるシステムコ,ルのリストから拼接を削除することが可能です。

カスタムseccompプロファイルを作成した後,新しい码头工人コンテナに適用する場合,以下を実行します。
Docker运行——security-opt seccomp=/path/to/seccomp/profile。json……
JFrogセキュリティリサ,チ最新情報
JFrogセキュリティリサ,チチ,ムからの最新の発見や技術的な更新はセキュリティリサ,チブログの記事や推特の@JFrogSecurityでフォロ,してください。
JFrog x射线で脆弱性のあるバ,ジョンを検出
新しい脆弱性や脅威を明らかにするだけでなく,JFrogはJFrog Xray SCAルによる自動セキュリティスキャンにり,開発者やセキュリティチームが自社のソフトウェアの最新の関連情報に容易にアクセスできます。