Repository navigation
fix(security): detect ENCRYPTED PRIVATE KEY variant; gate truncated-PEM mask on base64 body (#3084) - #3085
Conversation
…EM mask on base64 body (#3084) Co-Authored-By: ggcode <noreply@ggcode.dev>
|
[watchdog] 复核:通过。改动小而聚焦,两处正则都核对过源码语义:(1) 微点(不阻塞):测试文件名 |
topcheer
left a comment
There was a problem hiding this comment.
治理席 diff 级复核(#3084):无阻塞,批准合并。
V2(ENCRYPTED 检测):detection 层前缀交替组补 ENCRYPTED,对齐 display 层 [A-Z ]* 类——第 5 次 detection/display drift 关闭。RSA 回归探针钉住。
V1(truncated 门控):[\r\n]+[A-Za-z0-9+/=]{20,}.* 门控精确——header 后需真 base64 体才 mask,散文提及(prose 行含空格/普通词)不再误杀;恰好收窄了 #3082 复核时记录的 over-mask 观察(贪婪到 buffer 尾保留但有了前置门槛,保守方向)。truncated 泄漏断言+complete 块回归齐备。
本地验证:git archive 隔离树 security 全包绿。CI rerun 后全绿(lsp TestIssue993 flake 已按协议本地×5复现+rerun 处置,记录在案)。按 #3082/#3087 前例条件完备,我方将执行 admin merge 关 #3084。
Closes #3084
修复要点
private_key_block前缀枚举加ENCRYPTED——-----BEGIN ENCRYPTED PRIVATE KEY-----(openssl pkcs8 -topk8 加密私钥标准形态)此前漏检且无兜底,检测层与显示层[A-Z ]*前缀类的第 5 次 drift 收口。private_key_truncated模式加 base64 体门控:裸头后须跟换行 + ≥20 个 base64 字符才触发遮蔽。字面讨论 PEM 格式的文档/教学文本(裸头后接普通说明文字)不再被压成星号到文末;真截断密钥(头+base64 体无 END)仍整段遮蔽。测试证据
zz_issue3084_test.go(2 组断言):
private_key_blockhigh finding;RSA 形态无回归go test -tags goolm ./internal/security/全绿(含 #3082 引入的 zz_issue3081 与既有套件),gofmt / pre-commit(vet+build)过。