文章摘要
该文章主要介绍了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 分支。
评论总结
评论主要围绕代码错误、测试缺失以及安全性问题展开,观点如下:
代码错误与逻辑问题:
- 评论3指出,代码中的逻辑错误源于对分支逻辑的误解,导致条件判断错误。例如,
rc >= 0被错误地归一化为COND_RC_MATCH,而应为rc > 0。- 引用:"The original code was normalizing
rc < 0to CONDRCNOMATCH (0), but leavingrc >= 0as the original value."
- 引用:"The original code was normalizing
- 评论7认为,这种复杂的条件逻辑难以维护,且缺乏测试,代码质量堪忧。
- 引用:"Even AI would struggle with this type of convoluted conditional logic without a test harness."
- 评论3指出,代码中的逻辑错误源于对分支逻辑的误解,导致条件判断错误。例如,
测试缺失与影响:
- 评论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."
- 评论1、2、6、7、9均提到测试的缺失,认为这种错误本应通过自动化测试或单元测试发现。
安全性与正确性问题:
- 评论4和5讨论了该问题是否属于安全性问题。评论5认为这是正确性问题,而非安全性问题。
- 引用:"That's not a security issue, it's a correctness issue."(评论5)
- 评论4和5讨论了该问题是否属于安全性问题。评论5认为这是正确性问题,而非安全性问题。
总结:评论普遍认为代码中的逻辑错误源于测试不足,尤其是对特定子功能的测试缺失。尽管有测试存在,但覆盖不全导致问题未被及时发现。此外,评论者对该问题是否属于安全性问题存在分歧,多数认为这是正确性问题。