CVE-2026-40198Perl模块Net::CIDR::Lite 0.23之前版本存在安全漏洞,由于`_pack_ipv6()`函数未正确验证IPv6地址的组数,导致攻击者可传入畸形IPv6地址(如"1:2:3")。这会使内部打包值长度错误,进而导致IP范围匹配逻辑失效,最终允许攻击者绕过基于IP的访问控制列表(ACL),未授权访问受限资源。
该漏洞的核心在于Net::CIDR::Lite模块对IPv6地址解析时的输入验证缺失。在`_pack_ipv6()`函数中,代码未校验未压缩的IPv6地址(不包含::)是否严格包含8个十六进制组。当输入如"1:2:3"的畸形字符串时,函数生成的二进制数据长度仅为7字节,而非标准的17字节。在后续的`find()`或`bin_find()`方法中,程序使用Perl的字符串比较运算符来判定IP归属。由于Perl在比较不同长度的字符串时逻辑特殊,这种错误的长度值会导致比较结果异常,使得本应被过滤的地址被错误地判定为在允许范围内,从而实现ACL绕过。