Linux Kernel cgroups に存在するコンテナ・エスケープの脆弱性 CVE-2022-0492 が FIX

CVE-2022-0492 flaw in Linux Kernel cgroups feature allows container escape

2022/03/06 SecurityAffairs — Linux カーネルの脆弱性 CVE-2022-0492 (CVSS: 7.0) にパッチが適用されたが、この脆弱性の悪用に成功した攻撃者には、コンテナをエスケープし、コンテナ・ホスト上で任意のコマンドを実行する可能性が生じる。この問題は、cgroups (control groups) と呼ばれるプロセスの集合体に関するリソース使用量 (CPU/メモリ/ディスクI/O/ネットワーク) を算出/分離/制限するための、Linux カーネルの機能に影響をおよぼす特権昇格の欠陥である。

この欠陥について公開されたアドバイザリには、「Linux カーネルの kernel/cgroup/cgroup-v1.c 関数の cgroup_release_agent_write に脆弱性が発見された。この欠陥は、特定の状況下で、cgroups v1 release_agent 機能を使用すると、想定外の特権昇格と名前空間の分離のバイパスが生じる」と記されている。

Suse/Ubuntu/Redhat などの、主要 Linux ディストリビューターも、独自のアドバイザリを公開している。

この欠陥は、グループ内の任意のプロセス終了後に実行される、cgroups v1 release_agent の機能に存在する。この問題の根本的な原因は、Linux カーネルにおける cgroups の実装が、この機能へのアクセスを適切に制限していなかったことにある。ローカル攻撃者は、この脆弱性を悪用して、管理者権限を得ることが可能となる。

この脆弱性は、セキュリティ研究者である Yiqi Sun とKevin Wang により発見された。

Palo Alto Networks Unit 42 の研究者である Yuval Avrahami は、「2月4日に、Linux カーネルにおける新たな特権昇格の脆弱性 CVE-2022-0492 が発表された。CVE-2022-0492 は、コンテナの基本的な構成要素である、Linux の cgroups (control groups) 機能の論理的なバグである。この問題は、最近に発見された、最も単純な Linux の特権拡大の1つとして際立ったものである。Linux カーネルが誤って、特権的な操作を、非特権ユーザーに対して公開してしまった」と発表された分析を伝えている。

Palo Alto Networks によると、CVE-2022-0492 は、release_agent ファイルを設定するプロセスが管理者権限 (CAP_SYS_ADMIN) を持っているかどうかをチェックしていないことに原因があるとしている。

release_agent ファイルへの書き込みが可能な攻撃者は、カーネルを強制的に昇格させた特権で任意のバイナリを起動させ、マシンを乗っ取ることが可能となる。このファイルへの書き込みは、root 権限を持つプロセスに対してのも許されている。

彼らの分析によると、「Linux は release_agent ファイルの所有者を root に設定しているため、 root のみが書き込み可能となる (CAP_DAC_OVERRIDE 機能によりファイルのパーミッション・チェックを回避するプロセスもある)。そのため、この脆弱性は、root プロセスによる特権昇格のみを可能にする」とされる。

Palo Alto Networks は、「一見したところ、root ユーザーだけが悪用可能という特権昇格の脆弱性は、奇妙に思えるかもしれない。ただし、root として実行していても、必ずしもマシンを完全に制御できるわけではない。root ユーザーと完全な特権の間には、機能/名前空間/コンテナなどを含むグレーゾーンが存在する。root プロセスがマシンを完全に制御できない、このようなシナリオでは、CVE-2022-0492 が深刻な脆弱性となる」と付け加えている。

ユーザーに対しては、可能な限り早急なセキュリティ修正プログラムの適用が推奨されている。AppArmor または SELinux セキュリ・ティシステムを実行しているコンテナには、影響はおよばない。

この記事に書かれている、root 権限と完全な特権の違いは興味深いですね。今年に入ってからの Linux の問題としては、1月25日の「Linux カーネルのバグが Kubernetes コンテナからの脱出を許す?」と「Linux Polkit の深刻な脆弱性 CVE-2021-4034:PoC エクスプロイトが登場?」、そして、2月18日の「Linux に新たな権限昇格の脆弱性:Snap に存在する CVE-2021-44731 が FIX」などがあります。

%d bloggers like this: