CVE-2026-9358PostCSS 7.1.1及之前版本存在一个拒绝服务漏洞,该漏洞位于AST(抽象语法树)序列化组件的src/selectors/container.js文件中的toString函数。攻击者可以通过构造恶意的CSS输入触发该函数中的不受控递归(uncontrolled recursion),导致服务器资源耗尽,从而造成拒绝服务攻击。此漏洞的CVSS评分为4.3,属于中等严重程度。攻击向量为网络可访问,攻击者无需认证即可发起攻击,但需要用户交互(如访问包含恶意CSS的网页)。由于PostCSS广泛应用于前端构建工具、CSS预处理器和各种Web开发框架中,此漏洞可能影响大量依赖PostCSS进行CSS处理的应用系统。供应商表示,根据其定义,用户生成的CSS在服务器端造成的DoS风险较低(因为大多数用户使用PostCSS编译自己的CSS),因此未将此漏洞视为高优先级问题。然而,对于处理不可信用户输入的应用程序,此漏洞仍可能造成严重影响。
该漏洞的根本原因在于PostCSS的AST序列化过程中,toString函数在处理特定CSS选择器结构时存在递归调用问题。当解析包含特殊构造的CSS选择器时,toString函数会递归调用自身而没有适当的终止条件或递归深度限制。具体来说,src/selectors/container.js文件中的toString方法在序列化容器节点时,会遍历子节点并调用其toString方法。如果攻击者构造一个嵌套层数极深的CSS选择器结构,或者包含循环引用的选择器,toString函数将陷入无限递归状态。攻击者可以通过上传恶意CSS文件、在网页中嵌入恶意CSS代码,或通过API接口提交恶意CSS数据等方式触发此漏洞。成功利用此漏洞可导致Node.js进程内存溢出、CPU占用率飙升,最终造成服务不可用。由于该漏洞影响服务器端的CSS编译过程,对于使用PostCSS处理用户提交CSS内容的应用(如在线CSS编辑器、CSS验证服务、自动化构建系统等)威胁较大。