Linux関連のセキュリティ脆弱性がまたしても発見された。Linuxカーネルのfs/fs_context.cプログラムに潜んでいたヒープオーバーフローのバグという問題が発見、修正された後、一息つく間もなく新たなセキュリティの問題が見つかった。Qualysが、Polkit(旧称「PolicyKit」)のpkexecに存在する危険なメモリー破壊の脆弱性(CVE-2021-4034)「PwnKit」を発見したと報告している。
この脆弱性の悪用は簡単だという。そして、デフォルト設定の状態で利用できるこの脆弱性を悪用することで、一般ユーザーであっても脆弱なコンピューターで完全なルート権限が得られるようになる。Qualysは概略説明の中で、「この脆弱性は、攻撃者の夢をかなえるものだ」と書いている。
なぜそれほど大きな問題と言えるのだろうか。理由を以下に挙げる。
- pkexecは主なLinuxディストリビューションにデフォルトでインストールされている。
- Qualysによると、「Ubuntu」「Debian」「Fedora」「CentOS」の各ディストリビューションに対するテストで問題が認められており、他のディストリビューションにも問題があるのは間違いないという。
- Qualysによると、pkexecは2009年5月に作り出されて以来(commit c8c3d83, "Add a pkexec(1) command")、脆弱性を抱えた状態になっている。
- この脆弱性を悪用することで、特権を有していないローカルユーザーであっても完全なルート権限を取得できる。
- この脆弱性は技術的にはメモリー破壊に分類されるものだが、アーキテクチャーに関係なく、確実かつ即座に悪用できる。
- Polkitデーモン自体が稼働していない場合であっても攻撃が可能になっている。
pkexec自体は、UNIX系OSのシステム全域にわたって権限をコントロールするための非常にパワフルなコンポーネントであるため、危険性も非常に高いものになると考えられる。Linuxへの攻撃が可能だと判明したことで、「Solaris」をはじめとする他のUNIX系OSも脆弱である可能性があるが、Qualysはこれらの悪用可能性を調査していない。ただOpenBSDは、この脆弱性を悪用した攻撃の影響を受けないとQualysは述べている。
Red Hatは、PwnKitを「共通脆弱性評価システム(CVSS)」で7.8としている。
Polkitは正しく使えば、権限を有していないプロセスと権限を有したプロセスを通信させるための手段が提供される。またPolkitによって、昇格した権限でのコマンド実行も可能になる。
要するに、pkexecはsudoコマンドのようなものだといえるかもしれない。実際のところDebianの開発者らはこれを「systemdのsudo」と形容している。
この脆弱性は12年以上にわたって気付かれずにいた。
Qualysは、デモのエクスプロイトをリリースしないが、エクスプロイトが入手可能になるまでにそれほど時間はかからないだろうとしている。PwnKitによる攻撃を実現するのはさほど難しいことではなさそうだ。
そのため、ユーザーは利用しているLinuxのディストリビューターからできるだけ早くパッチを入手し、適用するべきだ。Qualysは、ユーザーのOSでパッチが入手できない場合の緩和策などについても説明している。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。