OpenSSHのGSSAPI脆弱性はSSH子プロセスをクラッシュさせるために悪用される可能性

OpenSSHのGSSAPI Key Exchangeパッチで新たに発見された脆弱性は、複数のLinuxディストリビューションをリスクにさらしています。

CVE-2026-3497として追跡されるこの欠陥は、認証されていない攻撃者が単一の細工されたパケットを使用してSSH子プロセスをクラッシュさせることを可能にします。

これにより、信頼できるサービス拒否(DoS)状況と特権分離境界違反が発生します。

この問題はセキュリティ研究者Jeremy Brownによって発見され、最近Canonicalから Marc Deslauriersによってオープンソースセキュリティコミュニティに開示されました。

CVE-2026-3497の根本原因

この脆弱性は、GSSAPIキー交換(KEX)サーバーループのエラーハンドリングロジック内の基本的なコーディングエラーに由来しています。

エラー条件を処理するとき、コードは誤って意図した終了関数 ssh_packet_disconnect() の代わりに、非終了関数 sshpkt_disconnect() を呼び出します。

不正な関数はプロセスを終了するのではなく、切断メッセージをキューに入れて戻すだけなので、プログラムはデフォルトのエラーハンドリングケースに落ちます。

これにより、システムは recv_tok という名前の初期化されていないスタック変数を読むことができます。次に、システムはこの初期化されていない変数の内容を gss_release_buffer() に渡す前に、プロセス間通信(IPC)を介して特権付きrootモニタープロセスに送信します。

最後に、この関数はガベージポインタに対して free() を呼び出そうとし、重大なメモリ破損につながります。

初期化されていない変数に含まれる残余スタックデータは、ビルドプロセス中に使用されるコンパイラ、最適化レベル、およびフラグに大きく異なります。

このばらつきにもかかわらず、この欠陥は重大なセキュリティリスクをもたらします。

主要な技術的影響と悪用の詳細は以下を含みます:

  • ゼロクリックトリガー: 攻撃者はこの欠陥を悪用するために有効な認証情報や認証を必要としません。約300バイトの悪意のある細工されたSSHパケットを送信することで起動します。
  • 確実なプロセスクラッシュ: このバグはSSH子プロセスの100%確実なクラッシュを保証します。これは通常、x86_64アーキテクチャ上でのメモリセグメンテーションフォルト(SIGSEGV)またはプログラム中止(SIGABRT)をもたらし、90秒のSSHロックアウトをトリガーします。
  • 特権分離違反: 最大127KBの潜在的に機密なヒープデータをIPC経由で特権境界を越えてrootモニターに直接送信できます。
  • 影響を受ける環境: この脆弱性は、標準OpenSSHパッケージの上にGSSAPI Key Exchangeパッチを含むLinuxディストリビューション、主にUbuntuとDebianに影響を与えます。サーバーは設定で GSSAPIKeyExchange が有効な場合、脆弱です。

Canonicalメンテナーは欠陥を解決するためのパッチを提供しました。修正は簡単です:kexgsss.cファイルの3つの脆弱なサーバー側呼び出しサイトで、誤った sshpkt_disconnect() 関数を ssh_packet_disconnect() に置き換えます。

DebianまたはUbuntuサーバーを実行しているシステム管理者は、OpenSSHパッケージを直ちに更新する必要があります。

すぐにパッチを適用できない組織では、SSHデーモン設定で GSSAPIKeyExchange 機能をオフにすることで、脅威を効果的に軽減できます。

翻訳元: https://gbhackers.com/openssh-gssapi-flaw-can-be-exploited/

ソース: gbhackers.com