ClamAV项目在FIPS模式下哈希兼容性问题分析与解决方案
问题背景
在Linux系统的FIPS(Federal Information Processing Standards)模式下,安全相关的加密算法会受到严格限制。近期在ClamAV 1.4.1版本的构建过程中发现,当系统启用FIPS模式时,ctest测试中的clamscan和clamscan_valgrind会因使用特定哈希算法而失败。
技术分析
FIPS模式是美国联邦政府制定的一套计算机安全标准,它明确禁止使用被认为不够安全的加密算法。某些算法由于已知的安全问题,在FIPS模式下被禁用。在ClamAV的测试套件中,单元测试文件fp_check_test.py使用了Python的hashlib模块来生成zip文件的哈希值,这在FIPS模式下会抛出"digital envelope routines: EVP_DigestInit_ex disabled for FIPS"错误。
解决方案
经过分析,将原有哈希替换为更安全的SHA-256哈希可以完美解决此问题。具体修改如下:
- 将原有哈希初始化替换为
hash_sha256 = hashlib.sha256() - 相应更新哈希计算和验证逻辑中的所有变量名
这种修改不仅解决了FIPS兼容性问题,还提高了系统的安全性,因为SHA-256相比原有算法具有更强的抗碰撞性。
实施效果
修改后,在aarch64架构的RHEL 8.10系统上,所有测试用例均能通过:
100% tests passed, 0 tests failed out of 11
测试总时间约为558秒,clamscan和clamscan_valgrind测试均成功完成。
扩展讨论
值得注意的是,FIPS模式还会禁用其他被认为不安全的算法。在构建ClamAV时,如果系统安装了systemd-devel库并启用了ENABLE_SYSTEMD选项,在FIPS模式下可能还会遇到其他兼容性问题,这需要进一步的调查和解决。
结论
对于需要在FIPS兼容环境中部署ClamAV的用户,建议:
- 及时应用此哈希算法升级补丁
- 在构建前检查系统是否处于FIPS模式
- 考虑使用更现代的哈希算法替代所有遗留的算法使用场景
这种改进不仅解决了当前的兼容性问题,还使ClamAV更符合现代安全标准,为后续的功能开发和系统集成奠定了更好的基础。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0209- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
MarkFlowy一款 AI Markdown 编辑器TSX01