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

CVE-2026-29112 DiceBear头像库SVG尺寸处理拒绝服务漏洞

披露日期: 2026-03-18

漏洞信息

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

相关标签

拒绝服务内存耗尽SVG处理DiceBear头像库CVE-2026-29112高危漏洞

漏洞概述

DiceBear是一个面向设计师和开发者的头像库。在9.4.0版本之前,@dicebear/converter包中的ensureSize()函数会读取输入SVG的width和height属性来确定栅格化输出(PNG、JPEG、WebP、AVIF)的画布尺寸。攻击者可以通过提供精心构造的SVG文件(包含极大尺寸属性如width="999999999")来迫使服务器分配过多内存,导致拒绝服务攻击。此漏洞主要影响那些将不受信任或用户提供的SVG传递给转换器toPng()、toJpeg()、toWebp()或toAvif()函数的服务器端应用。仅转换自生成DiceBear头像的应用实际难以利用,但仍建议升级。该漏洞已在9.4.0版本中修复。

技术细节

漏洞根源在于@dicebear/converter包中的ensureSize()函数。该函数在处理SVG到PNG/JPEG/WebP/AVIF格式转换时,会直接读取SVG文档中的width和height属性值作为输出画布尺寸。当攻击者构造包含超大尺寸值(如999999999像素)的SVG时,转换器会尝试分配对应大小的内存缓冲区用于图像处理,导致内存耗尽。具体利用方式为:攻击者上传或提交一个width和height属性值极大的恶意SVG文件到使用DiceBear转换器的应用,服务器在调用toPng()等转换函数时会触发ensureSize()读取这些超大值,进而导致OutOfMemoryError或系统资源耗尽。修复后的版本不再读取SVG属性,而是通过新的size选项(默认值512,最大2048)来控制输出尺寸,并对无效值(NaN、负数、零、无穷大)回退到默认值。

攻击链分析

STEP 1
步骤1
攻击者创建恶意SVG文件,在width和height属性中设置极大值(如999999999)
STEP 2
步骤2
攻击者将恶意SVG上传或提交到使用DiceBear @dicebear/converter的服务器端应用
STEP 3
步骤3
应用调用toPng()、toJpeg()、toWebp()或toAvif()函数处理该SVG
STEP 4
步骤4
ensureSize()函数读取SVG的超大width和height属性值
STEP 5
步骤5
转换器尝试分配巨大的内存缓冲区用于栅格化处理,导致内存耗尽
STEP 6
步骤6
服务器因内存不足而拒绝服务,应用崩溃或无响应

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-29112 - DiceBear SVG DoS // Generate malicious SVG with extremely large dimensions const maliciousSvg = ` <svg xmlns="http://www.w3.org/2000/svg" width="999999999" height="999999999"> <rect width="100%" height="100%" fill="red"/> <circle cx="50%" cy="50%" r="40%" fill="blue"/> </svg> `; // Vulnerable code - will cause memory exhaustion // const converter = new Converter(); // converter.toPng(maliciousSvg); // Triggers ensureSize() with huge dimensions // Fixed code - use size option instead // const converter = new Converter({ size: 512 }); // converter.toPng(maliciousSvg); // Limits output to 512x512

影响范围

@dicebear/converter < 9.4.0
DiceBear < 9.4.0

防御指南

临时缓解措施
如果无法立即升级,应在将任何不受信任的SVG输入传递给转换器之前,验证并清理SVG的width和height属性。可以设置最大允许尺寸限制(如2048像素),拒绝超过限制的SVG文件。或者临时禁用SVG到PNG/JPEG/WebP/AVIF的自动转换功能。

参考链接

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