ノーマルビュー

Polkit に 12 年前の最初のバージョンから存在した脆弱性「Pwnkit」

著者: headless
2022年1月30日 10:01
主な Linux ディストリビューションに標準でインストールされるツールキット Polkit (旧名: PolicyKit) の最初のバージョン (12 年前) から存在したメモリ破損の脆弱性 (CVE-2021-4034) について、発見した Qualys が解説している (Qualys Security Blog の記事Red Hat のアドバイザリーNeowin の記事Ars Technica の記事)。

Qualys が Pwnkit と名付けた脆弱性は非特権ユーザーがrootの権限でコマンドを実行できるようにする Polkit の コマンドラインツール pkexec に存在する。pkexec の main() 関数ではコマンドライン引数の数 (argc) を適切に処理せず、常に 1 以上として扱うため、引数リスト (argv) が空の状態でも境界外のメモリを引数 (argv[1]) として読み書きしてしまう。

境界外の直近にあるのは 1 つ目の環境変数 (envp[0]) であり、pkexec は読み取った値を実行ファイルの名前として PATH 環境変数で指定されたディレクトリを探し、一致する実行ファイルが見つかったらパスを付加して envp[0] を上書きする。これにより、通常は main() 関数実行前に除去される「安全でない」変数を pkexec の環境に再導入することが可能であり、悪用することでローカルでの権限昇格が可能になる。

Polkit では argc が 1 未満の場合に処理を終了する修正を行っており、修正済みの Polkit パッケージが入手可能になり次第更新することが推奨される。

すべて読む | セキュリティセクション | Linux | オープンソース | セキュリティ | バグ | この記事をTwitterでつぶやく この記事をFacebookで共有 この記事をGoogle Plusで共有 このエントリーをはてなブックマークに追加

関連ストーリー:
HP / Samsung / Xerox のプリンタードライバーに 16 年前から存在した脆弱性 2021年07月25日
Linuxでプロセスの権限を設定するpolkit、7年以上前から存在した特権昇格の脆弱性が見つかる 2021年06月12日
Windows Serverに17年前から存在していたバグが修正される 2020年07月18日
Linuxカーネルに11年以上前から存在する特権昇格の脆弱性「Dirty COW」が修正される 2016年10月22日
TLS/SSL実装に20年前からの脆弱性、影響範囲は広範 2015年03月11日
Microsoft、18年にわたってWindowsに存在した脆弱性を修正 2014年11月15日
FFmpegのLZO実装コードに脆弱性、20年前から存在 2014年07月02日

❌