最近公開された脆弱性は、PolKitコンポーネントに影響を与えるものだが、12年以上にわたっていくつかのLinuxディストリビューションに存在している。この脆弱性は簡単に悪用できてしまうと、それを発見したQualys Research TeamのディレクタBharat Jogi氏は言っている。特権のないユーザが脆弱なホストで完全なroot権限を取得できてしまう。
PolKitでは、非特権プロセスが特権プロセスと通信できるようにするメカニズムが提供される。そのため、ユーザがコマンドpkexecを使用してroot特権でコマンドを実行できるようになる。pkexec
の機能は、普及しているsudo
と本質的に類似している。
Qualysのセキュリティ研究者は、脆弱性を独自に検証し、セキュリティー上の弱点を突く手段を開発し、Ubuntu、Debian、Fedora、CentOSのデフォルトインストールで完全なルート権限を取得することができました。他のLinuxディストリビューションもおそらく脆弱であり、悪用できるでしょう。
脆弱性の根本にあるのは、pkexec
がコマンドライン引数を処理する方法でのメモリ破損の問題だ。具体的には、引数なしで実行された場合、つまりargc
が0の場合、そのmain
関数の一部が範囲外の書き込みができてしまい、特定の条件下で次の連続するメモリを上書きする。これはたまたまenvp[0]
であり、悪用に使う環境変数をpkexec
の環境に簡単に挿入できることを意味する。
Qualysは、この脆弱性を悪用するコードを開示しなかった。しかし、この脆弱性は非常に簡単に悪用されるため、公開から1日以内でオンラインで脆弱性を突く機能が公開され、利用できた。
この脆弱性はリモートで悪用されることはない。システムに物理的にアクセスする必要がある。Qualysは、特権をまったく持たないユーザnobody
がすべてのパッチが適用されたLinuxディストリビューションで、PwnKitを悪用する方法を示した。
PwnKitがリモートで悪用できないという事実によって、Redditでいくつかのコメントが挙がり、そのことに関してを軽視する傾向があった。実際、PwnKitだけではリモートシステムを制御するのに十分ではないことは事実である。しかし、攻撃者は通常、脆弱性チェーンと呼ばれる複数の脆弱性を連続して悪用して、最終的にシステムのコントロールを握ることが知られている。これは、影響を受けるすべてのシステムにできるだけ早くパッチを適用すべきであることを意味する。
良い面としては、一時的な緩和策がある。これは、適用するのが非常に簡単で、実行中のpkexec
からSUIDビットを削除することである。
chmod 0755 /usr/bin/pkexec
残念ながら、パッチが適用されたバージョンがインストールされているかどうかを確認するのは簡単とは限らない。システムで自動セキュリティ更新が有効になっている場合には、システムにすでにパッチが適用されている可能性がある。あるいは、ディストリビューションのセキュリティアドバイザリあるいはシステムに現在インストールされているpolkit
パッケージの変更ログを確認する必要がある。
または、Qualys自体が、PwnKitなどの重大な脆弱性を特定するためのツールQualys VMDRを作成している。オープンソースの脆弱性検出ツールのFalcoを使いたい場合には、セキュリティ会社Sysdigが、PwnKitを検出するようにFalcoを設定するルールをリリースしている。
Linuxベースのディストリビューションに加えて、この脆弱性は、Polkitを利用できる他のUNIXライクなオペレーティングシステムにも影響を与える可能性があるとJogi氏は言っている。ただし、Qualysの研究者は、OpenBSDを除いて、悪用可能かどうかを調査しなかった。OpenBSDは、argc
が0の場合にカーネルがプログラムのexecve()
を拒否するために脆弱ではない。