CVE-2026-46719Net::Statsd::Lite是Perl语言中广泛使用的轻量级StatsD客户端库。在0.9.0版本之前,该组件存在安全设计缺陷,允许进行指标注入攻击。具体而言,该库在处理指标名称时缺乏必要的输入验证,未对换行符、冒号或管道符等特殊字符进行过滤。当应用程序使用不可信来源的数据生成指标时,攻击者可构造恶意数据注入额外的StatsD协议指令。此漏洞可能破坏监控数据的完整性,导致日志混淆或敏感信息泄露,对系统监控体系造成安全风险。
该漏洞的成因是Net::Statsd::Lite在构造StatsD协议数据包时,直接将用户输入拼接到发送缓冲区中,未进行任何转义处理。StatsD协议通常使用换行符(\n)分隔不同指标,冒号(:)分隔指标名与值,管道符(|)分隔值与类型。攻击者只需在不可信的输入字段(如HTTP请求头、参数等)中注入这些控制字符,即可破坏数据包结构。例如,若应用将用户ID作为指标名的一部分,攻击者提供包含“\n”的ID,即可在单个UDP包中发送多条伪造的指标记录。由于攻击无需认证(PR:N)且可通过网络触发(AV:N),攻击者可轻易污染监控数据。虽然主要影响为数据完整性(I:L)和低机密性(C:L),但在某些依赖指标进行自动告警的系统中,可能导致误报或掩盖真实攻击。