Gera cinco formatos de payload de desserialização .NET para CVE-2026-56158, entrega-os por endpoints HTTP/SOAP/JSON, inclui servidor mock, scanner e saída de relatório JSON.
Crítico (CVSS 9.8) — Desserialização de Dados Não Confiáveis (CWE-502) no Microsoft .NET Framework e no Runtime .NET Corrigido: 14 de julho de 2026 | Atribuído a: Positive Technologies (PT-2026-60174)
CVE-2026-56158 é uma vulnerabilidade crítica de execução remota de código no Microsoft .NET Framework e no runtime do .NET. A falha existe na desserialização insegura de dados não confiáveis (CWE-502) — quando um aplicativo .NET usa serializadores legados (BinaryFormatter, NetDataContractSerializer, SoapFormatter, ObjectStateFormatter) ou Json.NET com TypeNameHandling.All/Auto, um atacante remoto não autenticado pode enviar um payload serializado especialmente criado que aciona a execução arbitrária de código durante a desserialização.
A vulnerabilidade possui pontuação base CVSS 3.1 de 9.8 Crítico com o vetor AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, ou seja:
A Microsoft lançou atualizações de segurança em 14 de julho de 2026 como parte do ciclo mensal do Patch Tuesday.
| Campo | Valor |
|---|---|
| CVE ID | CVE-2026-56158 |
| Título | Vulnerabilidade de Execução Remota de Código no .NET Framework |
| CVSS 3.1 | 9.8 Crítico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CVSS 2.0 | 7.5 Alto (AV:N/AC:L/Au:N/C:P/I:P/A:P) |
| CWE | CWE-502 (Desserialização de Dados Não Confiáveis) |
| Publicada | 14 de julho de 2026 |
| Corrigida | 14 de julho de 2026 |
| Descobridor | Positive Technologies (PT-2026-60174) |
| EPSS | Ainda sem pontuação |
| CISA KEV | Não listada |
Os serializadores legados do runtime .NET reconstroem tipos de objetos arbitrários a partir de fluxos serializados sem validar o tipo ou o conteúdo. Quando um atacante controla a entrada serializada, ele pode direcionar o desserializador para instanciar tipos inesperados cujos construtores, callbacks ou setters de propriedades executam código arbitrário — um clássico ataque de cadeia de gadgets por desserialização.
A vulnerabilidade afeta múltiplos mecanismos de serialização:
TypeConfuseDelegate delega para Process.StartProcessStartInfo incorporado no corpo SOAPProcess.Start via campo ViewState$type quando TypeNameHandling.All/Auto está habilitado; o gadget ObjectDataProvider chama Process.Start| Produto | Intervalo Vulnerável | Versão Corrigida | Artigo da 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 | Todas as versões anteriores ao patch | Corrigida | KB5100985 |
| .NET Framework 4.6.2–4.7.2 | Todas as versões anteriores ao patch | Corrigida | KB5100991 |
| .NET Framework 4.8 | Todas as versões anteriores ao patch | Corrigida | KB5101011 |
| .NET Framework 4.8.1 | Todas as versões anteriores ao patch | Corrigida | KB5101002 |
| Visual Studio 2022 (17.12) | Antes do patch | 17.12.x | — |
| Visual Studio 2022 (17.14) | Antes do patch | 17.14.x | — |
| Visual Studio 2026 (18.7) | Antes do patch | 18.7.x | — |
Pacotes Alpine Linux:
dotnet8-runtime < 8.0.29-r0dotnet9-runtime < 9.0.18-r0dotnet10-runtime < 10.0.10-r0Este exploit PoC gera e entrega payloads por meio de 5 formatos diferentes de ataque por desserialização:
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 ou 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 de HTTP POSTJSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
→ ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
$typeapplication/jsonTypeNameHandling.All ou Auto