CVE-2026-33418DiceBear是常用的头像生成库。在9.4.2版本之前,其`@dicebear/converter`组件使用正则表达式限制SVG宽高属性,旨在防止DoS攻击。然而,该机制存在逻辑缺陷。攻击者可构造特制的SVG输入,在真实的SVG根元素前注入干扰项,诱导正则匹配到非功能性位置,从而成功绕过2048px的尺寸上限。当SVG被渲染时,将使用攻击者指定的超大尺寸,迅速耗尽服务器内存,导致服务崩溃。
该漏洞位于`@dicebear/converter`包的`ensureSize()`函数中。原机制通过正则表达式重写SVG的`width`和`height`属性,强制最大值为2048px。由于正则表达式缺乏对XML结构的上下文理解,攻击者可以在真实的SVG根元素之前插入一段包含`<svg`字符串的无效或注释内容(例如隐藏的SVG标签)。正则引擎会优先匹配并修改这个伪造的标签,而忽略后续真正的根元素属性。当经过`@resvg/resvg-js`处理时,渲染引擎会读取真实根元素中未被修改的巨大尺寸(如99999px),导致分配过量内存,引发Node.js进程崩溃(OOM)。修复版本引入了`fast-xml-parser`进行解析,并添加了`fitTo`约束作为纵深防御。