SuperAPI AI 工具集

length-extension-attacks-anti-pattern

安全与审计

查看项目

更新于 10-15 22:16

技能介绍

用途:该技能面向安全代码生成与代码审查,帮助识别和修复哈希长度扩展攻击漏洞(CWE-328,严重级别高)。此类攻击利用 MD5、SHA-1、SHA-256 等 Merkle-Damgård 构造的弱点:攻击者在已知 hash(secret + message) 及 secret 长度的情况下,无需知道 secret 即可计算出 hash(secret + message + padding + attacker_data),从而在已签名消息后追加数据并保持签名有效,破坏消息完整性与认证。

主要能力:指出反模式——不要用 hash(secret + message) 构造 MAC;给出正确做法——使用 HMAC,并配合常量时间比较(如 Python 的 hmac.compare_digest、Node.js 的 crypto.timingSafeEqual、Java 的 MessageDigest.isEqual)。提供 Python、JavaScript/Node.js、Java 的脆弱与安全代码对照示例。

检测方法:用 rg 搜索哈希前拼接的模式,例如 rg 'hashlib.(md5|sha1|sha256)(.*+' --type py、rg 'crypto.createHash.update.+' --type js、rg 'MessageDigest.update.+' --type java;查找未使用 HMAC 的签名代码;审计自定义 MAC 实现、API 签名、令牌生成与 Cookie 签名;可借助 Semgrep(python.lang.security.audit.hashlib-weak-hash)和 Bandit(B303)等静态分析工具。

预防:始终使用 HMAC 做消息认证码,选用 HMAC-SHA-256 或 SHA-3;不要自创 hash(message + secret) 或 hash(secret + message + secret) 等方案;若无法使用 HMAC,可考虑 SHA-3 或 BLAKE2(不易受长度扩展影响),但 HMAC 仍为首选。

适用场景:生成或审查涉及签名 URL、API 请求签名、令牌与 Cookie 签名的代码。限制:资料未提供具体安装命令、收费信息或平台支持范围,暂未提供。