CVE-2026-29112DiceBear是一个面向设计师和开发者的头像库。在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、负数、零、无穷大)回退到默认值。