Terrapin - 接続のセキュリティを低下させる SSH プロトコルの脆弱性

ボーフム (ドイツ) のルール大学の研究者グループは、プロトコルの脆弱性 (CVE-2023-48795) を悪用する、SSH に対する新しい MITM 攻撃手法、Terrapin を発表しました。 MITM 攻撃を組織できる攻撃者は、接続ネゴシエーション プロセス中に、プロトコル拡張を構成して接続セキュリティ レベルを下げることによってメッセージの送信をブロックする能力を持っています。攻撃ツールキットのプロトタイプが GitHub で公開されています。

たとえば、OpenSSH のコンテキストでは、この脆弱性により、接続をロールバックして安全性の低い認証アルゴリズムを使用したり、キーボードのキーストローク間の遅延を分析して入力を再作成するサイドチャネル攻撃に対する保護を無効にしたりすることができます。 Python ライブラリ AsyncSSH では、内部ステート マシンの実装の脆弱性 (CVE-2023-46446) と組み合わせることで、Terrapin 攻撃により SSH セッションに侵入することが可能になります。

この脆弱性は、ChaCha20-Poly1305 または ETM (Encrypt-then-MAC) モードと組み合わせた CBC モード暗号をサポートするすべての SSH 実装に影響します。たとえば、同様の機能が OpenSSH で 10 年以上前から利用可能になっています。この脆弱性は、本日リリースの OpenSSH 9.6 のほか、PuTTY 0.80、libssh 0.10.6/0.9.8、AsyncSSH 2.14.2 のアップデートでも修正されています。 Dropbear SSH では、修正はすでにコードに追加されていますが、新しいリリースはまだ生成されていません。

この脆弱性は、接続トラフィックを制御する攻撃者 (悪意のあるワイヤレス ポイントの所有者など) が、接続ネゴシエーション プロセス中にパケット シーケンス番号を調整し、任意の数の SSH サービス メッセージをサイレントに削除できるという事実によって引き起こされます。クライアントまたはサーバーによって送信されます。とりわけ、攻撃者は、使用されるプロトコル拡張の構成に使用される SSH_MSG_EXT_INFO メッセージを削除する可能性があります。攻撃者は、シーケンス番号のギャップによるパケット損失を相手に検出されないようにするために、リモート パケットと同じシーケンス番号を持つダミー パケットの送信を開始して、シーケンス番号をシフトします。ダミー パケットには SSH_MSG_IGNORE フラグが付いているメッセージが含まれていますが、これは処理中に無視されます。

Terrapin - 接続のセキュリティを低下させる SSH プロトコルの脆弱性

整合性違反はアプリケーション レベルで検出されるため、ストリーム暗号と CTR を使用して攻撃を実行することはできません。実際には、ChaCha20-Poly1305 暗号のみが攻撃を受けやすいです ([メール保護])、状態はメッセージ シーケンス番号と Encrypt-Then-MAC モードの組み合わせによってのみ追跡されます (*[メール保護]) および CBC 暗号。

OpenSSH 9.6 およびその他の実装では、攻撃をブロックするために「strict KEX」プロトコルの拡張機能が実装されており、サーバー側とクライアント側でサポートがある場合は自動的に有効になります。この拡張機能は、接続ネゴシエーション プロセス中に受信した異常または不要なメッセージ (SSH_MSG_IGNORE または SSH2_MSG_DEBUG フラグなど) を受信すると接続を終了し、各キー交換の完了後に MAC (メッセージ認証コード) カウンタもリセットします。

出所: オープンネット.ru

コメントを追加します