Skip to main content

PwnKitのローカル権限昇格エクスプロイトを分析する

著者

Kyle Suero

blog feature security alert purple

2022年1月29日

0 分で読めます

Linuxの脆弱性と自然災害に共通するものは何でしょうか?一見休眠しているように見えるものが突然活動を始め、表面下の動きを露呈させることがあります。数日前、あるセキュリティ研究者が、主要なLinuxディストリビューションのほとんどに影響する重大な脆弱性「PwnKit」を公表しました。恐ろしいのは、この脆弱性が2009年5月から存在していたことです。

Polkitは、Unix系オペレーティングシステムで権限を管理するコンポーネントで、主要なLinuxディストリビューションのほとんどに標準で含まれています。Polkitに含まれるpkexecコマンドは、昇格した権限でコマンドを実行するために使われ、systemdのsudoとも呼ばれています。

今回のPolkitの脆弱性は、もはや休眠状態の脅威ではありません。Linuxベースのオペレーティングシステムで広く使われているこのコンポーネントには、2009年の登場以来、長年にわたって脆弱性が潜んでいました。Fedoraで初めて使われたこのポリシー制御の仕組みは、その後、さまざまなオペレーティングシステムに広く普及しました。

この脆弱性を悪用すると、ローカルで実行する一般ユーザーがバッファオーバーフローを通じてメモリを破損できます。Qualysチームが実証したように、このオーバーフローを悪用すれば、完全なroot権限を取得できます。2013年にはRyan Mallonがこの脆弱性を報告し、メンテナーにパッチを提出しました。しかし、Mallonは脆弱性の悪用方法を見つけられず、パッチが適用されることもありませんでした。

この不具合の根本原因は、コマンドライン引数の処理にあります。LinuxのCプログラムでは、最初の引数(argv[0])は通常、実行ファイル名です。しかし、execve関数を呼び出すと、実行ファイル名を含まない空のリストを指定できます。このような場合、コードがargv[0]は常に存在すると想定していると、メモリ破損の脆弱性につながる可能性があります。この引数処理の根本的な問題はほかのバイナリにも存在しますが、pkexecはSUIDであり、特殊なファイル権限によって、実行したユーザーではなくファイルの元の所有者として実行されます。そのため、特別なケースです。  

ここでは詳しい説明は省きます。詳細は元の開示情報に記載されています。pkexecコマンドに引数がないと、引数リストが空になり、メモリが破損します。その結果、攻撃者は対象ホストで完全なroot権限を取得できます。

PwnKitからシステムを守るためにパッチを適用する

PwnKitのエクスプロイトは非常に簡単で、すでに実際に悪用されています。幸い、パッチは非常に迅速に提供されました。すぐにオペレーティングシステムの更新をすべてインストールしてください。

オペレーティングシステムの更新をインストールできない場合は、pkexecコマンドを使ってchmodからSUIDビットを手動で削除する方法が適切な回避策です。

chmod 0755 /usr/bin/pkexec

このエクスプロイトは、広く使われ、多くの人が長年にわたってソースコードを確認してきたオープンソースアプリケーションであっても、深刻な脆弱性が長期間検出されずに存在する可能性があることを改めて示しています。

セキュリティの脅威を軽減するには、セキュリティパッチを常に最新の状態に保つことが欠かせません。ソフトウェアのデプロイにコンテナを利用している場合は、これらのオペレーティングシステムのパッチを含む更新済みイメージへの切り替えを検討してください。Snyk Containerを利用すれば、PwnKitのような脆弱性をコンテナ内で簡単に検出し、修正できます。Snykは問題を修正した更新済みベースイメージや、自分で適用できる修正またはパッチを案内します。

開発者ファーストのコンテナセキュリティ

Snykは、コンテナイメージとKubernetesワークロードの脆弱性を検出し、自動的に修正します。

脆弱性のあるオペレーティングシステム

RedHat

  • Red Hat Enterprise Linux 6

  • Red Hat Enterprise Linux 7

  • Red Hat Enterprise Linux 8

  • Red Hat Virtualization 4

Ubuntu:

  • Ubuntu 21.10

  • Ubuntu 20.04

  • Ubuntu 18.04

  • Ubuntu 16.04

  • Ubuntu 14.04

Suse:

  • HPE Helion Openstack 8

  • SUSE CaaS Platform 4.0

  • SUSE Enterprise Storage 6

  • SUSE Enterprise Storage 7

  • SUSE Linux Enterprise High Performance Computing 15

  • SUSE Linux Enterprise Micro 5

  • SUSE Linux Enterprise Module for Basesystem 15

  • SUSE Linux Enterprise Server 12

  • SUSE Linux Enterprise Server 15

  • SUSE Linux Enterprise Server for SAP Applications 12

  • SUSE Linux Enterprise Server for SAP Applications 15

  • SUSE Linux Enterprise Software Development Kit 12

  • SUSE Manager Proxy 4

  • SUSE OpenStack Cloud 8

  • SUSE OpenStack Cloud 9

  • SUSE OpenStack Cloud Crowbar 8

  • SUSE OpenStack Cloud Crowbar 9

  • openSUSE Leap 15

注: SUSE Linux Enterprise 11は旧世代のPolicyKit-1を使用しているため、影響を受けません。

セキュリティ勧告

続きを読む

blog feature ai lilac
Blog

エージェント型修正で脆弱性バックログをプルリクエストに変える

Evo Remediation Agentがオープンプレビューで利用可能になり、Evo Agentic AppSecに依存関係の自動解決機能が加わりました。AppSecチームは継続的な修正キャンペーンを実施できるようになりました

illustration hero ai
Blog

PHPが重大な未認証RCEの脆弱性2件を修正(CVE-2026-109618、CVE-2026-109619):今すぐアップデート

PHPのリクエスト処理に重大な脆弱性が2件あり、未認証のリモートコード実行につながるおそれがあります。修正版にアップグレードするか、旧バージョンにはベンダー提供のバックポートを適用してください。

AI Background min crop
Blog

AIが、あなたが受け入れてきたあらゆるリスクを一気に顕在化させる:AI Security Panel: Unfilteredから得た7つの洞察

AIによって攻撃はより安価かつ高速になり、組織がすでに抱えているリスクが露呈しています。4人のセキュリティリーダーが、機械の速度に対応する防御と迅速な修復が今不可欠である理由を語ります。