用途
php-crypto-audit 用于分析 PHP 项目源码中密码、令牌与敏感数据的加密和哈希实现,识别加密类安全问题。
主要能力
该工具检测以下类型的问题:
- 弱哈希:MD5、SHA1、未加 salt 的哈希
- 不安全的对称/非对称加密使用:ECB 模式、固定 IV、错误模式
- 签名校验缺陷:JWT 未验证、HMAC 使用错误、算法选择可控
- 硬编码密钥与明文 key 泄露
审计结果按严重程度分级并编号,编号格式为 {C/H/M/L}-CRYPTO-{序号},分级说明参见 shared/SEVERITY_RATING.md。
必检内容
必检 Sink(强制)
工具要求搜索并分析以下实现点,并按项目实际情况替换:
- 密码哈希:md5、sha1、hash(非 password_hash)、crypt 参数误用
- 安全哈希:password_hash、password_verify(检查参数是否正确)
- 对称加密:openssl_encrypt、openssl_decrypt(检查 mode 与 iv)
- 签名:hash_hmac、openssl_sign、JWT verify 与签名比较实现
必检要求(强制)
- 必须定位密钥来源:硬编码、环境变量、配置文件或请求参数
- 必须判断校验是否可靠:是否存在算法可控或比较时序泄露
- 必须输出修复建议与迁移方案,例如升级哈希算法、强制使用参数化模式
PoC 要求
由于加密类漏洞可能依赖运行环境,PoC 至少需要给出以下之一:
- 可执行的验证框架,例如构造 JWT payload 并解释应当发生的验证失败或绕过
- 可观测的证据,例如日志泄露、错误模式产生可逆结果
报告输出
报告输出路径为 {output_path}/vuln_audit/crypto_{timestamp}.md。
适用场景
适用于对 PHP 项目进行源码级加密与密钥安全审查,尤其是需要检查密码存储、加密实现、签名校验和密钥管理的场景。
限制
该工具依赖源码分析与环境验证,加密类漏洞的可复现性可能受运行环境影响;PoC 可能以验证框架或可观测证据的形式给出。