يولّد خمسة تنسيقات لحمولات إلغاء تسلسل .NET لـ CVE-2026-56158، ويُسلّمها عبر نقاط نهاية HTTP/SOAP/JSON، ويتضمن خادمًا وهميًا (mock server) وماسحًا ضوئيًا ومخرجات تقرير JSON.
حرجة (CVSS 9.8) — إلغاء تسلسل البيانات غير الموثوقة (CWE-502) في Microsoft .NET Framework ووقت تشغيل .NET تم التصحيح: 14 يوليو 2026 | منسوبة إلى: Positive Technologies (PT-2026-60174)
CVE-2026-56158 هي ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد في Microsoft .NET Framework ووقت تشغيل .NET. يكمن الخلل في الإلغاء غير الآمن لتسلسل البيانات غير الموثوقة (CWE-502) — عندما يستخدم تطبيق .NET أدوات التسلسل القديمة (BinaryFormatter, NetDataContractSerializer, SoapFormatter, ObjectStateFormatter) أو Json.NET مع خيار TypeNameHandling.All/Auto، يمكن لمهاجم بعيد غير مصادق تسليم حمولة متسلسلة مصمّمة خصيصًا تؤدي إلى تنفيذ تعليمات برمجية عشوائية عند إلغاء التسلسل.
تحمل الثغرة درجة أساسية 9.8 حرجة وفق معيار CVSS 3.1 مع المتجه AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H، مما يعني:
أصدرت Microsoft تحديثات أمنية في 14 يوليو 2026 ضمن دورة Patch Tuesday الشهرية.
| الحقل | القيمة |
|---|---|
| معرف CVE | CVE-2026-56158 |
| العنوان | ثغرة تنفيذ التعليمات البرمجية عن بُعد في .NET Framework |
| CVSS 3.1 | 9.8 حرجة (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CVSS 2.0 | 7.5 عالية (AV:N/AC:L/Au:N/C:P/I:P/A:P) |
| CWE | CWE-502 (إلغاء تسلسل البيانات غير الموثوقة) |
| تاريخ النشر | 14 يوليو 2026 |
| تاريخ التصحيح | 14 يوليو 2026 |
| الجهة المكتشفة | Positive Technologies (PT-2026-60174) |
| EPSS | لم يتم تقييمها بعد |
| CISA KEV | غير مدرجة |
أدوات التسلسل القديمة في وقت تشغيل .NET تعيد بناء أنواع كائنات عشوائية من التدفقات المتسلسلة دون التحقق من النوع أو المحتوى. عندما يتحكم المهاجم في الإدخال المتسلسل، يمكنه توجيه أداة إلغاء التسلسل لإنشاء أنواع غير متوقعة تتيح منشئاتها أو استدعاءاتها العكسية أو واضعات خصائصها تنفيذ تعليمات برمجية عشوائية — هجوم سلسلة أدوات (gadget chain) كلاسيكي لإلغاء التسلسل.
تؤثر الثغرة على عدة آليات تسلسل:
TypeConfuseDelegate تفوّض إلى Process.StartProcessStartInfo مضمّن في جسم SOAPProcess.Start عبر حقل ViewState$type عند تفعيل TypeNameHandling.All/Auto؛ أداة ObjectDataProvider تستدعي Process.Start| المنتج | النطاق المتأثر | الإصدار المُصحَّح | مقالة KB |
|---|---|---|---|
| .NET 8.0 | 8.0.0 – 8.0.28 | 8.0.29 | KB5100998 |
| .NET 9.0 | 9.0.0 – 9.0.17 | 9.0.18 | KB5100998 |
| .NET 10.0 | 10.0.0 – 10.0.9 | 10.0.10 | KB5101001 |
| .NET Framework 3.5 | كل ما قبل التصحيح | تم التصحيح | KB5100985 |
| .NET Framework 4.6.2–4.7.2 | كل ما قبل التصحيح | تم التصحيح | KB5100991 |
| .NET Framework 4.8 | كل ما قبل التصحيح | تم التصحيح | KB5101011 |
| .NET Framework 4.8.1 | كل ما قبل التصحيح | تم التصحيح | KB5101002 |
| Visual Studio 2022 (17.12) | ما قبل التصحيح | 17.12.x | — |
| Visual Studio 2022 (17.14) | ما قبل التصحيح | 17.14.x | — |
| Visual Studio 2026 (18.7) | ما قبل التصحيح | 18.7.x | — |
حزم Alpine Linux:
dotnet8-runtime < 8.0.29-r0dotnet9-runtime < 9.0.18-r0dotnet10-runtime < 10.0.10-r0ينشئ هذا الاستغلال (PoC) الحمولات ويوصلها عبر 5 تنسيقات مختلفة لهجمات إلغاء التسلسل:
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
→ Process.Start("cmd.exe", "/c calc.exe") → RCE
application/octet-streamActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.StartXML with type info → NetDataContractSerializer.ReadObject()
→ ProcessStartInfo instantiation → Process.Start → RCE
application/octet-stream أو text/xmlSOAP envelope → SoapFormatter.Deserialize()
→ ProcessStartInfo in SOAP body → Process.Start → RCE
text/xmlViewState binary → ObjectStateFormatter.Deserialize()
→ Process.Start via ViewState field → RCE
application/octet-stream__VIEWSTATE في طلب HTTP POSTJSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
→ ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
$typeapplication/jsonTypeNameHandling.All أو Auto┌─────────────────────────────────────────────────────────────────────┐
│ exploit.py │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌───────────────┐ ┌───────────────────────┐ │
│ │ PayloadGen │ │ PayloadDeliv │ │ VulnerabilityScanner │ │
│ │ │ │ │ │ │ │
│ │ • BinaryFmt │ │ • HTTP POST │ │ • HTTP header check │ │
│ │ • NetData │──▶│ • SOAP/WCF │──▶│ • Endpoint discovery │ │
│ │ • SoapFmt │ │ • JSON API │ │ • ViewState analysis │ │
│ │ • ObjectState│ │ • File save │ │ • Version detection │ │
│ │ • Json.NET │ │ │ │ │ │
│ └──────────────┘ └───────────────┘ └───────────────────────┘ │
│ │ │ │ │
│ └───────────────────┼──────────────────────┘ │
│ ▼ │
│ ┌──────────────┐ ┌──────────────────────────────────────────┐ │
│ │ PayloadList │ │ Report Generator (JSON) │ │
│ │ (Mock .NET) │ │ • CVE metadata, CVSS, CWE │ │
│ │ │ │ • Payload hashes (SHA-256) │ │
│ │ Simulates │ │ • Delivery results │ │
│ │ vulnerable │ │ • RCE confirmation │ │
│ │ deserialization│ │ • References │ │
│ └──────────────┘ └──────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘