CVE-2025-67731Servify Express是一个用于启动Express服务器并记录其运行端口的Node.js包。该软件包在1.2版本之前存在严重的安全漏洞:在创建Express服务器时使用了express.json()中间件但未设置请求体大小限制。这使得攻击者可以向服务器发送超大体积的JSON请求体。攻击者利用此漏洞可以耗尽服务器内存资源,导致服务性能严重下降甚至进程崩溃,最终造成拒绝服务(DoS)攻击。任何部署了未配置限制的JSON解析器且暴露于不可信客户端的应用程序都可能受到影响。此问题并非Express框架本身的缺陷,而是应用配置不当所致。攻击无需任何认证或用户交互,攻击者可直接利用此漏洞。
漏洞根源在于Servify Express在初始化Express应用时调用express.json()但未传递任何配置参数。默认情况下,Express的JSON解析器接受任意大小的请求体。当攻击者发送包含超大JSON数据的POST请求时,服务器会尝试将整个请求体加载到内存中进行解析。对于一个100MB的JSON payload,服务器会分配至少100MB内存;若同时发起多个此类请求,将迅速耗尽系统内存资源。Node.js的express.json()中间件支持limit选项来限制请求体大小,如express.json({ limit: '100kb' })。缺少此限制时,恶意请求可绕过所有应用层防护,直接导致V8堆内存溢出或触发OOM Killer终止Node进程。攻击者可通过简单的curl命令或Python脚本批量发送大体积JSON请求实现DoS。