
CVE-2018-10933 - libssh 認証バイパス
CVE-2018-10933 の概念実証(Proof-of-Concept)実装です。これは、libssh のサーバーサイド実装に影響する重大な認証バイパス脆弱性です。
免責事項
このリポジトリは、教育目的、脆弱性研究、および許可されたセキュリティテストのためにのみ提供されています。明示的な許可なしにシステムをテストしないでください。
CVE-2018-10933 は、libssh のサーバーサイド状態機械で発見された重大な認証バイパス脆弱性です。
弱いパスワードや暗号上の弱点を含む従来の認証欠陥とは異なり、この脆弱性は、サーバーがサーバーからクライアントへのみ送信されるべきプロトコルメッセージを誤って信頼することによって存在します。
攻撃者は、資格情報を一切提供することなく、脆弱な libssh サーバーに対して認証が既に正常に完了したと思い込ませることができます。
これにより、認証されていない攻撃者が、libssh をサーバーモードで使用する脆弱なアプリケーションに対して、認証済み SSH セッションを確立できます。
| フィールド | 値 |
|---|---|
| CVE | CVE-2018-10933 |
| 深刻度 | Critical |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (不適切な認証) |
| 攻撃ベクトル | ネットワーク |
| ユーザー操作 | 不要 |
| 必要な権限 | 不要 |
この脆弱性は、サーバーモードで実行されている libssh に影響します。
影響を受けるバージョンは次のとおりです:
libssh を SSH クライアントとしてのみ使用するアプリケーションは、脆弱ではありません。
この脆弱性は、libssh のサーバーコード内に実装された認証状態機械に起因します。
通常の SSH 認証フローでは:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
プロトコルは、SSH_MSG_USERAUTH_SUCCESS が認証成功後にサーバーのみによって生成されることを指定しています。
しかし、脆弱なバージョンの libssh は、このメッセージの発信元を適切に検証できません。
サーバーは、クライアントから送信された SSH_MSG_USERAUTH_SUCCESS を拒否する代わりに、内部の認証状態を直接次のように遷移させます:
Authenticated = TRUE
資格情報を一切検証することなく。
これは、不適切な認証 (CWE-287) の典型的な例です。
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
悪用に成功すると、認証されていない攻撃者が以下を実行できます:
実際の影響は、認証後に脆弱なアプリケーションが libssh をどのように使用するかによって異なります。
この脆弱性は、認証状態機械が以下のパケットを誤って受け入れるために存在します:
SSH2_MSG_USERAUTH_SUCCESS
クライアントから。
libssh は、パケットがサーバーから発信されたことを検証する代わりに、認証が正常に完了したかのように内部セッション状態を更新します。
その後の認可チェックはこの内部状態に依存するため、攻撃者は直ちに認証済みチャネルを開くことができます。
この脆弱性は、以下を悪用するものではありません:
代わりに、プロトコル状態処理における論理的な欠陥を悪用します。
攻撃者に必要なもの:
必要なものはありません:
考えられる兆候は次のとおりです:
ネットワーク IDS シグネチャも、クライアントから送信される異常な SSH2_MSG_USERAUTH_SUCCESS パケットを識別する場合があります。
libssh を修正済みリリースのいずれかにアップグレードします:
直ちにアップグレードできない場合:
影響を受けるソフトウェアを更新する以外に、信頼できる回避策は存在しません。
このリポジトリは、プロトコル実装のミスから認証状態機械の脆弱性がどのように発生し得るかを示しています。
以下の支援を目的としています:
含まれている概念実証は、安全なプロトコル実装の理解を深めるために、管理された環境でこの脆弱性を示しています。