Hacker News 中文摘要

RSS订阅

Apache HTTP服务器:'RewriteCond expr'始终评估为真 -- Apache HTTP Server: 'RewriteCond expr' always evaluates to true

文章摘要

该文章主要介绍了Apache HTTP服务器在2.4.64版本中修复了rewritecond expr回归问题,具体修复内容可通过提交记录8abb3d06b23975705ebcf4bf4476464fd0b9bd0b查看。

文章总结

标题:修复 rewritecond expr 在 2.4.64 版本中的回归问题 · apache/httpd@8abb3d0

主要内容: 在 Apache HTTP Server 2.4.64 版本中,存在一个安全漏洞(CVE-2025-54090),导致所有 "RewriteCond expr ..." 测试条件都被错误地评估为 "true"。这一问题在版本 2.4.65 中得到了修复。用户建议升级到 2.4.65 版本以避免潜在的安全风险。

具体修复内容涉及 modules/mappers 目录下的一个文件,进行了 2 行代码的添加和 1 行代码的删除。修复的核心代码更改如下: c - rc = COND_RC_MATCH; + rc = (rc > 0) ? COND_RC_MATCH : COND_RC_NOMATCH; 这一改动确保了 RewriteCond expr 的正确评估逻辑,避免了所有条件都被误判为 "true" 的情况。

该修复由多位开发者(covener, ylavic, gbechis, jorton)共同审核,并通过 Git 提交到 Apache HTTP Server 的 2.4.x 分支。

评论总结

评论主要围绕代码错误、测试缺失以及安全性问题展开,观点如下:

  1. 代码错误与逻辑问题

    • 评论3指出,代码中的逻辑错误源于对分支逻辑的误解,导致条件判断错误。例如,rc >= 0被错误地归一化为COND_RC_MATCH,而应为rc > 0
      • 引用:"The original code was normalizing rc < 0 to CONDRCNOMATCH (0), but leaving rc >= 0 as the original value."
    • 评论7认为,这种复杂的条件逻辑难以维护,且缺乏测试,代码质量堪忧。
      • 引用:"Even AI would struggle with this type of convoluted conditional logic without a test harness."
  2. 测试缺失与影响

    • 评论1、2、6、7、9均提到测试的缺失,认为这种错误本应通过自动化测试或单元测试发现。
      • 引用:"That feels like something some form of automatic build/feature testing should have caught."(评论1)
      • 引用:"The apparent lack of testing is shocking for something this big."(评论6)
    • 评论8则指出,测试确实存在,但未覆盖到特定子功能,导致问题未被及时发现。
      • 引用:"As for why testing didn’t find this bug in the first place, you can see that they have tests for RewriteCond, but just not for expression conditions."
  3. 安全性与正确性问题

    • 评论4和5讨论了该问题是否属于安全性问题。评论5认为这是正确性问题,而非安全性问题。
      • 引用:"That's not a security issue, it's a correctness issue."(评论5)

总结:评论普遍认为代码中的逻辑错误源于测试不足,尤其是对特定子功能的测试缺失。尽管有测试存在,但覆盖不全导致问题未被及时发现。此外,评论者对该问题是否属于安全性问题存在分歧,多数认为这是正确性问题。