CVE-2026-41230Froxlor在2.3.6版本前存在安全缺陷,其`DomainZones::add()`方法未对DNS记录类型进行白名单验证,且未过滤内容字段中的换行符。经过身份认证的用户可利用此漏洞,通过提交特定类型(如NAPTR)绕过验证,注入包含换行符的恶意内容。这些内容最终被写入BIND区域文件,导致攻击者可注入任意DNS记录及BIND指令(如$INCLUDE),进而劫持DNS解析。
该漏洞源于Froxlor对DNS记录类型的验证逻辑缺陷。代码通过if/elseif链处理特定类型,但缺乏全局白名单机制。当攻击者提交NAPTR、PTR等未在验证链中的类型时,后续的内容格式校验被完全跳过。此外,输入处理函数仅使用`trim()`去除首尾空白,未过滤换行符(\n)。攻击者构造的数据经数据库存储后,被`DnsEntry::__toString()`方法直接拼接到BIND区域文件中。由于换行符保留了控制权,攻击者可注入恶意的BIND指令(如$INCLUDE引入外部文件、$ORIGIN重置原点、$GENERATE批量生成记录),从而篡改DNS解析结果,甚至可能导致中间人攻击或钓鱼网站托管。