ssh-agentのロックにより、OpenSSH 10.5まではローカル限定であるはずの鍵が露出していた問題

ssh-agentをロックすれば、解除するまで一切の署名要求を拒否する状態になるはずです。しかしOpenSSH10.4では、ロック時に、要求が自分自身のマシンから来たものか、それともリモートサーバーからのフォワード接続経由で届いたものかを判定するチェック機能まで無効化されてしまっていました。この問題を修正したパッチは、本日リリースされたOpenSSH 10.5に収録されています。

Image

エージェントは復号済みの秘密鍵を保持しており、これにより数分おきにパスフレーズを入力し直す手間を省けます。また、エージェントフォワーディングを使えば、リモートホスト上のプログラムがこれらの鍵を借りてログイン時の署名を行うことができます。この2つのケースを区別するため、sshはフォワードされたエージェントを識別する[email protected]要求を送信する仕組みになっています。

ロックされたエージェントはこうした要求を拒否するはずですが、バインドされていない要求はローカルからのものに見えてしまいます。その結果、本来ローカル利用に限定されるべき操作がリモートから実行可能になっていました。これにはPKCS#11トークンの追加や、特定の1台のホストにしか使用できないよう制限された「宛先制限」付き鍵の使用も含まれます。つまり、ノートPCの前を離れる際にエージェントをロックした人は、実際にはセキュリティを強化するどころか、かえって危険な状態にしていたことになります。

その他2件のセキュリティ修正

OpenSSH 10.5では、sshクライアントにおけるreallocまわりのuse-after-free(解放済みメモリの再利用)の可能性がある問題も修正されました。この問題は、複数のsshセッションが1つの接続を共有できる仕組みであるローカルセッション多重化ソケットを通じてリモートフォワーディングが追加され、なおかつリモートフォワーディングのオープン要求がサーバー側でまだ保留中の状態にある場合に発生し得るものです。

ある研究者は、authorized_keysファイル内の「restrict」キーワード(本来、ある鍵についてすべてのフォワーディング機能を無効化するはずの包括的な指定)が、トンネルフォワーディングには適用されていなかったことを発見しました。トンネル機能はデフォルトで管理上無効化されているため、この問題が影響するのは管理者が明示的にトンネル機能を有効にしている場合に限られます。

今後リリース頻度が増える見込み

ここ最近、セキュリティ上の不具合報告が大量に寄せられており、「その多くはAIモデルによる発見、あるいはAIの支援を受けて作成されたもの」だといいます。現実的な脅威モデルを当てはめれば、そのうちの多くはセキュリティ上の影響が全くないと判断されるものです。それでも開発チームはこうした報告を歓迎しており、それに加えて人間による選別・分析・テストケース・修正案の提示も求めています。</p

今回リリーススケジュールが変更された背景には、あるルートで最初に指摘された不具合が、その後別の研究者によって独立に発見されるというケースが相次いだことがあります。これは、オープンソースプロジェクトに何も報告してこない攻撃者側もこうした不具合を発見できる可能性を示唆しています。そこで開発チームは、次回の計画リリースまで修正をまとめて溜め込むのではなく、当面はより早いタイミングで修正を出していく方針です。

sshdは現在、接続相手から送られてきた公開鍵を解析するより前に、その鍵の種類を許可されたアルゴリズムと照合するようになりました。これにより、少なくとも一部の解析・検証コードを、未認証のクライアントの手が届かない領域に追いやることができます。今回のリリースでは、テストハーネス外では再現不可能だったssh-keygenの二重解放(double free)の問題も修正されています。

このほか今回のリリースでは、「ssh -Z user@host」を実行すると、クライアントが公開鍵認証で試行する鍵の一覧を優先順位付きで表示するようになりました。sshは、タッチ操作を必要としないFIDO鍵を優先し、PINや生体認証を必要とする鍵は最後に回すようになっています。また、ssh-keygenでは、パスフレーズをリセットする際に、FIDO秘密鍵のtouch-required(タッチ必須)フラグとverify-required(検証必須)フラグを設定・解除できるようになりました。

ポータブル版OpenSSHは現在、ビルド対象のlibcryptoに対して、NISTP521カーブを含むECC(楕円曲線暗号)サポートを必須としています。LibreSSL、OpenSSL、BoringSSL、AWS LCはいずれもデフォルトビルドでこれをサポートしており、「–without-openssl」構成でビルドする場合は今回の変更による影響を受けません。

翻訳元: https://www.helpnetsecurity.com/2026/08/11/openssh-10-5-ssh-agent-flaw/

ソース: helpnetsecurity.com