Generiert fünf .NET-Deserialisierungs-Payload-Formate für CVE-2026-56158, liefert sie über HTTP/SOAP/JSON-Endpunkte aus, enthält Mock-Server, Scanner und JSON-Berichtsausgabe.
Kritisch (CVSS 9.8) — Deserialisierung nicht vertrauenswürdiger Daten (CWE-502) in Microsoft .NET Framework & .NET Runtime Gepatcht: 14. Juli 2026 | Entdeckt von: Positive Technologies (PT-2026-60174)
CVE-2026-56158 ist eine kritische Schwachstelle zur Remotecodeausführung in Microsoft .NET Framework und .NET Runtime. Der Fehler liegt in der unsicheren Deserialisierung nicht vertrauenswürdiger Daten (CWE-502) — wenn eine .NET-Anwendung veraltete Serialisierer (BinaryFormatter, NetDataContractSerializer, SoapFormatter, ObjectStateFormatter) oder Json.NET mit TypeNameHandling.All/Auto verwendet, kann ein nicht authentifizierter Remote-Angreifer ein manipuliertes serialisiertes Payload bereitstellen, das bei der Deserialisierung beliebige Codeausführung auslöst.
Die Schwachstelle weist einen CVSS-3.1-Basiswert von 9.8 (Kritisch) mit dem Vektor AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H auf, was bedeutet:
Microsoft veröffentlichte am 14. Juli 2026 Sicherheitsupdates im Rahmen des monatlichen Patch-Tuesday-Zyklus.
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2026-56158 |
| Titel | .NET-Framework-Schwachstelle für Remotecodeausführung |
| CVSS 3.1 | 9.8 Kritisch (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CVSS 2.0 | 7.5 Hoch (AV:N/AC:L/Au:N/C:P/I:P/A:P) |
| CWE | CWE-502 (Deserialisierung nicht vertrauenswürdiger Daten) |
| Veröffentlicht | 14. Juli 2026 |
| Gepatcht | 14. Juli 2026 |
| Entdecker | Positive Technologies (PT-2026-60174) |
| EPSS | Noch nicht bewertet |
| CISA KEV | Nicht gelistet |
Die veralteten Serialisierer der .NET-Runtime rekonstruieren beliebige Objekttypen aus serialisierten Datenströmen, ohne den Typ oder Inhalt zu validieren. Wenn ein Angreifer die serialisierte Eingabe kontrolliert, kann er den Deserialisierer dazu veranlassen, unerwartete Typen zu instanziieren, deren Konstruktoren, Callbacks oder Property-Setter beliebigen Code ausführen — ein klassischer Deserialisierungs-Gadget-Chain-Angriff.
Die Schwachstelle betrifft mehrere Serialisierungsmechanismen:
TypeConfuseDelegate-Gadget-Chain delegiert an Process.StartProcessStartInfo eingebettet im SOAP-BodyProcess.Start über ein ViewState-Feld$type-Metadaten, wenn TypeNameHandling.All/Auto aktiviert ist; ObjectDataProvider-Gadget ruft Process.Start auf| Produkt | Verwundbarer Bereich | Behobene Version | KB-Artikel |
|---|---|---|---|
| .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 | Alle vor dem Patch | Gepatcht | KB5100985 |
| .NET Framework 4.6.2–4.7.2 | Alle vor dem Patch | Gepatcht | KB5100991 |
| .NET Framework 4.8 | Alle vor dem Patch | Gepatcht | KB5101011 |
| .NET Framework 4.8.1 | Alle vor dem Patch | Gepatcht | KB5101002 |
| Visual Studio 2022 (17.12) | Vor dem Patch | 17.12.x | — |
| Visual Studio 2022 (17.14) | Vor dem Patch | 17.14.x | — |
| Visual Studio 2026 (18.7) | Vor dem Patch | 18.7.x | — |
Alpine-Linux-Pakete:
dotnet8-runtime < 8.0.29-r0dotnet9-runtime < 9.0.18-r0dotnet10-runtime < 10.0.10-r0Dieser PoC-Exploit generiert und liefert Payloads über 5 verschiedene Deserialisierungs-Angriffsformate:
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 oder 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__VIEWSTATEJSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
→ ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
$type-Metadatenapplication/jsonTypeNameHandling.All oder Auto