
Linux ユーザーの皆さん、注意してください。ほぼすべての主要ディストリビューションで新たに発見された脆弱性により、権限のないユーザーがターゲットのルート アクセスを取得できてしまうのですが、この脆弱性は 12 年間もの間、人目につかないところに潜んでいました。
Qualys のセキュリティ研究者によって発見され、彼らが「PwnKit」と名付けたこの脆弱性は、ユーザーが他のユーザーとしてコマンドを実行できるようにする pkexec コマンドを悪用します。このコマンドは、ベンダー固有のものもオープンソースのものも含め、(実質的には) すべてのディストリビューションにインストールされている PolKit 権限制御モジュールの一部として存在します。
参照: Google Chrome: 知っておくべきセキュリティと UI のヒント(TechRepublic Premium)
誤解しないでください。これは深刻な脆弱性です。実際の実行はそれほど複雑ではなく、環境変数、ユーザー権限、引数付きアプリケーションの起動方法を十分に理解しているLinuxユーザーであれば、PwnKitの脆弱性を悪用するエクスプロイトを作成することは可能です。この脆弱性を発見した研究チームは、Ubuntu、Debian、Fedora、CentOSのデフォルトインストールでエクスプロイトを開発し、ルートアクセスを取得することに成功しました。
「他のLinuxディストリビューションも脆弱性を抱えており、おそらく悪用される可能性があります。この脆弱性は12年以上もの間、人目につかない場所に潜んでおり、2009年5月の最初のバージョン以来、pkexecのすべてのバージョンに影響を与えています」と、Qualysの脆弱性・脅威調査ディレクターであるBharat Jogi氏は、今回の発見について説明する投稿で述べています。
PwnKitがLinuxシステムを破壊する仕組み
この脆弱性は、境界外書き込みを利用してpkexecを欺き、悪意を持って細工されたPATH環境変数を検索させることに起因します。Qualysの説明を参考にするのが良いでしょう。「PATHが「PATH=name=.」であり、ディレクトリ「name=.」が存在し、そこに「value」という名前の実行ファイルが含まれている場合、文字列「name=./value」へのポインタがenvp[0]に境界外書き込みされます。」
これはpkexecの環境に安全でない変数を再導入し、攻撃者が自身の権限を昇格させてアプリケーションをrootとして実行することを可能にします。pkexecはLinuxアプリケーションを別のユーザーとして実行するために合法的に使用されます。これは非常に一般的な行為であり、特にLinux管理者や、管理者アカウントを持たずに特定のプログラムを実行する必要があるユーザーにとっては顕著です。
つまり、悪意のある PATH 変数を作成できるほど賢い人なら誰でも、PwnKit を使用してルート権限を取得できることになります。
痛くても今すぐパッチを当てましょう
たとえ 1 台の本番稼働に不可欠なマシンをオフラインにすることなど考えたくもないことですが、この場合は、潜在的に深刻な脆弱性を未然に防ぎ、重要な Linux マシンをしばらくオフラインにすることに対処するのが得策です。
Qualysによると、主要なLinuxディストリビューションすべてにパッチがリリースされており、ほぼすべての主要ディストリビューションが影響を受けるため、今すぐパッチを適用することが不可欠です。OEM配布のLinuxシステムでは、脆弱性が依然として存在する場合や、影響を受けるマシンへのパッチ適用がより複雑になる場合があります。そのため、ベンダーに連絡して必要なパッチを入手していることを確認してください。
参照: パスワード侵害:ポップカルチャーとパスワードが混ざらない理由(無料PDF) (TechRepublic)
ZDNet の Steven Vaughan-Nichols 氏が PwnKit に関する記事で述べたことにも注目すべきです。次の root 権限のシェル コマンドを使用して、すぐにパッチを見つけたりインストールしたりできない場合は、実際に chmod を実行して問題を解決できます。
# chmod 0755 /usr/bin/pkexec
chmod の番号付けに慣れていない方のために説明すると、このコマンドは、所有者(この場合は root)以外のユーザーが pkexec にデータを書き込めないようにします。これは、実際のパッチがインストールされるまでの一時的な対策としてのみ使用してください。
DevOpsソフトウェア企業JFrogは、LinuxユーザーがPwnKitに対する脆弱性があるかどうかを判断できるツールをリリースしました。このツールはGitHubからダウンロードできます。Linuxシステムが脆弱であると想定するのは間違いありませんが、確認できるのは良いことです。