CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-RVV3-G6HJ-G44X

GHSA-RVV3-G6HJ-G44X: Denial of Service via Uncontrolled Recursion in AutoMapper

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 13, 2026·5 min read·362 visits

Executive Summary (TL;DR)

A flaw in AutoMapper's handling of self-referential object graphs allows remote attackers to trigger a non-catchable StackOverflowException via deeply nested object inputs, causing an application crash. The issue is resolved in version 16.1.1 by enforcing a default recursion limit of 64.

AutoMapper prior to version 16.1.1 is vulnerable to a Denial of Service (DoS) condition caused by uncontrolled recursion during object mapping. An attacker can supply a deeply nested, self-referential object graph consisting of unique instances to trigger a StackOverflowException, resulting in immediate process termination.

Vulnerability Overview

AutoMapper is a convention-based object-object mapper for .NET applications. It automates the process of transforming input models into internal domain objects. Many .NET applications utilize AutoMapper within their API layers to process incoming JSON or XML payloads before routing data to internal business logic.

The vulnerability, identified as GHSA-rvv3-g6hj-g44x, affects the mapping engine's handling of self-referential or cyclic object graphs. When an application accepts untrusted data and maps it to a cyclic domain model, an attacker can supply a maliciously crafted, deeply nested payload to exploit the mapping process.

Versions of AutoMapper prior to 16.1.1 fail to impose a hard recursion limit on distinct object instances during traversal. This uncontrolled recursion leads to stack memory exhaustion. The resulting StackOverflowException terminates the application process immediately, creating a high-severity Denial of Service (DoS) condition.

Root Cause Analysis

During mapping execution, AutoMapper performs a depth-first traversal of the object tree. When the engine processes a self-referential type mapping, it recognizes the potential for infinite loops. To mitigate standard cyclic references, AutoMapper automatically enables a PreserveReferences configuration flag.

The PreserveReferences feature functions as an object-identity cache. It tracks the specific memory references of objects currently undergoing mapping. If the engine encounters an object reference it has already processed in the current graph, it returns the cached mapped instance instead of traversing it again, successfully preventing infinite loops on the exact same object.

The vulnerability exists because this identity caching relies strictly on object reference equality. An attacker bypasses this protection by constructing a payload composed of entirely distinct object instances. Since each nested object in the payload occupies a unique memory address, the identity cache never registers a collision. The depth-first traversal continues unabated until the Common Language Runtime (CLR) stack limit is exceeded.

Code Analysis

The vulnerable implementation resides in the configuration compilation phase where type maps are processed. The engine enables identity tracking but does not configure an upper bound for structural depth. This leaves the traversal bounded only by available thread stack memory.

The patch introduced in commit 0afaf1e91648fca1a57512e94dd00a76ee016816 resolves the flaw within src/AutoMapper/Execution/TypeMapPlanBuilder.cs. The maintainers modified the CheckForCycles method to enforce a default recursion depth limit for self-referential mappings.

// src/AutoMapper/Execution/TypeMapPlanBuilder.cs (Patched)
private static void CheckForCycles(IGlobalConfiguration configuration, TypeMap typeMap, ...)
{
    // Cycle detection logic...
    memberTypeMap.PreserveReferences = true;
 
    // Ensure a maximum depth is enforced even for distinct objects
    if (memberTypeMap.MaxDepth == 0)
    {
        memberTypeMap.MaxDepth = 64;
    }
}

The engine now assigns a default MaxDepth of 64 whenever a cyclic map is detected and no explicit limit is provided. This ensures the engine throws an application-level mapping exception upon reaching depth 64, preserving the stack and preventing process termination.

Exploitation

Exploitation requires the target application to accept unbounded, nested input data and map it to a self-referential type. Common vectors include ASP.NET Core API endpoints utilizing standard deserializers to parse HTTP request bodies before passing the resulting objects to IMapper.Map.

The attacker constructs a JSON document representing a deep linear chain of objects. The payload must nest continuously without triggering the deserializer's own structural depth limits. The official Proof-of-Concept utilizes a class named Circular containing a single Self property, iterating 30,000 times to construct the chain.

// Exploit primitive demonstrating the required structure
var root = new Circular();
var current = root;
for (int i = 0; i < 30_000; i++)
{
    current.Self = new Circular();
    current = current.Self;
}
// Execution triggers the vulnerability
var result = mapper.Map<Circular>(root);

When the application executes the mapping, the thread stack rapidly fills with nested function frames. Because the objects are structurally valid but excessively deep, no validation errors occur prior to stack exhaustion. The process crashes asynchronously relative to the initial request handling.

Impact Assessment

The primary impact of this vulnerability is a complete Denial of Service. In the .NET CLR, a StackOverflowException is non-recoverable. The runtime deliberately prevents application code from catching this exception using standard try-catch blocks to ensure state consistency.

When the exception occurs, the operating system forcibly terminates the hosting process. In a web server context, this destroys all active requests and drops established connections. Persistent exploitation prevents the application from serving legitimate traffic, as the process will continuously crash and restart upon receiving the payload.

The CVSS v3.1 score is evaluated at 8.7 (High). The attack vector is strictly network-based and requires no authentication or user interaction. Confidentiality and Integrity are not impacted, as the vulnerability does not expose memory or allow arbitrary code execution.

Remediation

Organizations must upgrade the AutoMapper NuGet package to version 16.1.1 or later to remediate the vulnerability. This version securely defaults all self-referential mappings to a maximum depth of 64, aligning with standard depth limits found in modern JSON serializers.

Developers implementing explicit .PreserveReferences() configurations must manually define a .MaxDepth() parameter. Explicitly instructing AutoMapper to preserve references bypasses the automatic depth assignment applied by the patch. Failure to specify a limit on these mappings will reintroduce the vulnerability.

Applications legitimately requiring object graphs deeper than 64 levels can adjust the threshold using cfg.CreateMap<Node, Node>().MaxDepth(128). Security engineering teams should evaluate whether deep object graphs are strictly necessary and implement corresponding depth limits at the network deserialization layer.

Official Patches

LuckyPennySoftwareOfficial Release Notes for v16.1.1

Fix Analysis (1)

Technical Appendix

CVSS Score
8.7/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H

Affected Systems

AutoMapper < 16.1.1.NET Applications utilizing AutoMapper for self-referential types

Affected Versions Detail

Product
Affected Versions
Fixed Version
AutoMapper
LuckyPennySoftware
< 16.1.116.1.1
AttributeDetail
Vulnerability ClassUncontrolled Recursion
CWE IDCWE-674, CWE-400
CVSS Score8.7
Attack VectorNetwork / Remote
ImpactDenial of Service (Process Termination)
Exploit StatusProof of Concept Available

MITRE ATT&CK Mapping

T1499.004Endpoint Denial of Service: Application Exhaustion Flood
Impact
CWE-674
Uncontrolled Recursion

The product does not properly control the amount of recursion that takes place, consuming excessive resources, such as allocated memory or the program stack.

Known Exploits & Detection

Official Unit TestsUnit test demonstrating a 30,000 deep chain of distinct Circular objects causing a stack overflow.

Vulnerability Timeline

Vulnerability reported by researcher bluefossa
2026-03-13
Fix committed and version 16.1.1 released by Jimmy Bogard
2026-03-13
GitHub Advisory GHSA-rvv3-g6hj-g44x published
2026-03-13

References & Sources

  • [1]GitHub Advisory: GHSA-rvv3-g6hj-g44x
  • [2]AutoMapper 16.1.1 Release Notes
  • [3]Jimmy Bogard's Blog: AutoMapper 16.1.1 Released
  • [4]Fix Commit: 0afaf1e91648

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 days ago•GHSA-7PPR-R889-MCF2
7.5

GHSA-7PPR-R889-MCF2: Unbounded WebSocket Message Aggregation in http4s-blaze-server leads to Denial of Service

An uncontrolled resource consumption vulnerability exists in the Scala-based http4s-blaze-server package of the http4s/blaze library. The vulnerability allows remote, unauthenticated attackers to cause an Out of Memory Error (OOM) and JVM crash by streaming a continuous sequence of small or empty WebSocket continuation frames with the FIN bit set to 0. This bypasses typical payload size checks because of the JVM's per-object allocation overhead, leading to rapid heap exhaustion with minimal network bandwidth.

Alon Barad
Alon Barad
7 views•5 min read
•2 days ago•GHSA-95CV-R8X4-VH75
7.6

GHSA-95cv-r8x4-vh75: Path Traversal Vulnerability in OpenList Batch Rename Handler

A critical path traversal vulnerability has been identified in the OpenList Go-based backend package. The vulnerability exists within the batch rename handler because the application does not validate the source filename parameter before constructing filesystems paths. This omission allows authenticated users to escape their designated directory and rename files in sibling paths.

Amit Schendel
Amit Schendel
9 views•7 min read
•2 days ago•GHSA-P6PH-3JX2-3337
4.3

GHSA-P6PH-3JX2-3337: Horizontal Privilege Escalation and Metadata Information Disclosure via Bleve Search in OpenList

OpenList version 4.2.3 and prior is vulnerable to an authorization bypass and metadata leakage. When configured with the Bleve search engine backend, OpenList fails to perform separator-aware path matching when validating tenant containment. This allows authenticated users to access sibling directories sharing similar name prefixes. Furthermore, the search backend returns unfiltered global result counts, leaking existence verification data of unauthorized files via side-channel analysis.

Amit Schendel
Amit Schendel
8 views•5 min read
•2 days ago•GHSA-86CX-WWF4-PHQ4
6.5

GHSA-86cx-wwf4-phq4: Path Prefix Confusion Authorization Bypass in OpenList

An authorization bypass vulnerability in OpenList version 4.2.3 and below allows authenticated users to read arbitrary files outside of their designated base directories due to an insecure path prefix check using Go's standard strings.HasPrefix function.

Amit Schendel
Amit Schendel
7 views•6 min read
•2 days ago•CVE-2026-16584
7.0

CVE-2026-16584: Security Policy Bypass in AWS API MCP Server via Startup Initialization Failure

A security policy bypass vulnerability exists in the AWS API MCP Server (awslabs-aws-api-mcp-server) from version 0.2.13 through 1.3.46. When the server fails to load the read-only operations index during startup (due to transient network failures, file permission issues, or other exceptions), it logs a warning but continues running in an insecure, degraded state. Under this condition, the security policy engine fails open, silently skipping all subsequent security checks and consent prompts for the lifetime of the process. This permits unauthorized mutating AWS CLI commands to execute via indirect prompt injection attacks.

Amit Schendel
Amit Schendel
12 views•7 min read
•2 days ago•GHSA-6V4M-FW66-8R4X
6.5

GHSA-6V4M-FW66-8R4X: Path Disclosure and Shell Expansion Bypass in Shescape

An incomplete escaping vulnerability in the npm package 'shescape' allows unauthenticated users to trigger dynamic shell expansions, absolute path disclosure, and command block break-outs on Unix and Windows systems.

Alon Barad
Alon Barad
6 views•7 min read