Linuxの最新のカーネル欠陥には派手な名前はなく、単に「ssh-keysign-pwn」と呼ばれている。ここ数週間でLinuxを襲った4つ目の注目すべきローカルセキュリティホールだ。これにより、一般ユーザーがシステム上の最も機密性の高いファイル、Secure Shell(SSH)ホスト秘密鍵やシャドウパスワードファイルなどを静かに読み取ることができる。
この脆弱性は、主な悪用経路の1つであるOpenSSHのssh-keysignヘルパーバイナリの悪用から「ssh-keysign-pwn」というニックネームを得ている。Keysignはホストベース認証に使用され、通常はsetuid rootで実行され、システムのSSHホスト鍵を開いてから特権を放棄して作業を完了する。
セキュリティ企業Qualysの研究者は、CVE-2026-46333、Linuxカーネルのptraceアクセスチェックにおける情報漏洩脆弱性を開示した。Qualysは、これが何らかの形で約6年間存在していたと主張している。
この欠陥は、プロセスが終了する際に実行される__ptrace_may_access()ロジックにある。特定の条件下では、プロセスがメモリマッピングをドロップすると、カーネルは通常の「ダンプ可能」チェックをスキップする。これにより、別のプロセスがそのファイル記述子を盗むための短いウィンドウが開かれる。
ssh-keysign-pwnはそれ自体で完全なルートシェルを提供するわけではないが、ホスト鍵とパスワードハッシュを流出させる能力は、横方向の移動と長期的な永続化のための強力な構成要素となる。さらに、盗まれたSSHホスト鍵を使用して、攻撃者はホストベースの信頼関係においてマシンを偽装できる。シャドウパスワードディレクトリにアクセスできれば、オフラインでのパスワードクラッキングを試み、それらの認証情報をシステム間で再利用できる。
彼のパッチで、Linus Torvaldsは問題の存在を次のように説明している:「ptrace_may_access()は、MMとは完全に独立して(通常はPTRACE_MODE_READ_FSCREDSのようなフラグを明示的に使用して)さまざまな他のことをチェックするために「dumpable」を使用するという、1つの奇妙な特殊ケースがあります。これには、もはやVMを持たないスレッド(ほとんどのカーネルスレッドのように、そもそも持っていなかった可能性もある)も含まれます。このフラグはそのために設計されたものではありませんが、現状はそうなっています。」
これがあなたや私にとって何を意味するかというと、このロジックエラーをpidfd_getfd(2)システムコールと組み合わせることで、特権のないユーザーがシャットダウン中の特権プロセスに侵入し、そのまだ開いているファイル記述子を取得し、通常はrootのみがアクセスできるファイルから読み取ることができるということだ。
良いニュースは、修正が行われたことだ。Linux安定版メンテナのGreg Kroah-Hartmanは、7.0.8、6.18.31、6.12.89、6.6.139、6.1.173、5.15.207、5.10.256などの新しいリリースを含む複数のサポートブランチにわたってアップデートを既に展開しており、これらすべてにssh-keysign-pwn修正が含まれている。できるだけ早くこれらのカーネルのいずれかに移行することをお勧めする。このホールは、2026年5月14日より前にリリースされたすべてのLinuxカーネルに影響を与える。
パッチが適用されたカーネルが広く利用可能になるまで、セキュリティチームにはいくつかの緩和オプションがあるが、それぞれにトレードオフがある。1つの迅速で汚い回避策は、LinuxのYama ptrace制限を強化することだ。これにより、非rootユーザーのptraceが無効になり、エクスプロイトがブロックされるが、多くのデバッグおよび監視ワークフローも壊れる。また、必要のないシステムでホストベースのSSH認証とssh-keysignヘルパーを完全に無効にすることで露出を減らすこともできるが、それはSSHを完全に停止させる。
Manjaro Linuxチームの疲れたメンバーの一人が言ったように、「PCが必要ないなら動かすな。自分を閉じ込めて、肩越しに見ろ。」まあ、それも確かに対処法の一つだ!