CVE-2026-44074Netatalk 2.1.0 至 4.4.2 版本中存在一个安全漏洞,涉及错误处理逻辑缺陷。该软件在处理并发错误条件时,错误地使用了按位或运算来组合多个 errno 值,导致生成无效的错误代码。远程攻击者可利用此漏洞,通过触发特定的错误条件,迫使程序进入非预期的错误处理路径,从而导致服务中断或轻微的拒绝服务。
该漏洞的根本原因在于 Netatalk 源代码中对于错误状态的处理逻辑。在 C 语言编程规范中,errno 通常被设计为互斥的整数值,用于指示具体的错误类型。然而,Netatalk 在处理多个错误同时发生的场景时,使用了按位或(Bitwise OR, `|`)操作符将不同的 errno 值合并。这种操作会导致生成的整数值不再对应任何有效的系统错误码。当上层调用逻辑尝试根据这个错误的错误码进行错误恢复或日志记录时,可能会执行错误的代码分支,导致资源未正确释放、状态机混乱或服务崩溃。由于攻击向量为网络(AV:N)且无需认证(PR:N),攻击者可以通过发送特制的网络请求序列来诱发并发错误,从而利用该逻辑缺陷。