返回 Bug 清单
BUG-0879project-80高已修复test-flaky

密码哈希默认切换 PBKDF2-SHA256,遗留 bcrypt 保留分派

发现:2026-10-09验证:2026-10-09置信度:70%

症状

commit 470d3eb71980 (2026-10-03) fix(security): 密码哈希默认切换 PBKDF2-SHA256,遗留 bcrypt 保留分派

根因

commit message 描述: fix(security): 密码哈希默认切换 PBKDF2-SHA256,遗留 bcrypt 保留分派

修复方案

修复 214 行,删除 11 行。改动文件: .env.example, backend/app/core/config.py, backend/app/core/security.py, backend/tests/conftest.py, backend/tests/test_password_hashing.py

错误签名

fix(security): 密码哈希默认切换 PBKDF2-SHA256,遗留 bcrypt 保留分派 取证结论:本机 bcrypt 4.2.0(Py3.12) 与 5.0.0(Py3.13) 两个独立 Rust 构建
同时非确定性出错(固定盐 40 次 hashpw 产生 8-9 种输出,~20% 错误率),
纯 Python 代码亦现 access violation 段错误——机器存在硬件/虚拟化层级
不稳定,Layer 3 重试与 Layer 4 确定性复算均被穿透(详见 runbook §1.7)。

对策:新哈希走本机实测稳定(233 万次满载零错误)的 OpenSSL PBKDF2 路径:
- security.py: get_password_hash → pbkdf2_sha256$iters$salt$hex;
  verify_password 按前缀分派,$2b$ 遗留哈希走原 bcrypt 路径(Layer 1-4 保留)
- config.py: PBKDF2_ITERATIONS 默认 600k(OWASP 2023),conftest 测试降 10k

技术信息

来源项目

project-80

涉及文件

.env.example, backend/app/core/config.py, backend/app/core/security.py +3

标签

git-sweep, auto-ingested, project-80, mcp-reported, source-agent