HedgeCode 的报告把安全合规度 4 项全判为达标:
许可证合规 / 没有漏洞 / 依赖风险 严重0-高危0-中危0-低危0 / 高危依赖问题 0 个
其中许可证一项判定正确(本次核查确认依赖闭包中确无 GPL/AGPL/LGPL 组件), 但另外 3 项是误判。
项目此前只有 conda 格式的 env-hedgecode.yaml,没有 requirements.txt。 多数 SCA 工具不解析 conda YAML —— 扫描器不是没发现风险,而是没有可识别的清单可扫。
env-hedgecode.yaml
requirements.txt
经 OSV 漏洞库逐包实际查询,原环境所列组件版本合计存在 168 条漏洞记录:
transformers
nltk
pillow
torch
urllib3
jinja2
requests
setuptools
idna
certifi
tqdm
scikit-learn
新增 requirements.txt,由 AST 解析全部 22 个 Python 源文件得出, 仅声明代码实际使用的 7 个直接依赖:
torch、transformers、numpy、scikit-learn、tree-sitter、tqdm、prettytable
numpy
tree-sitter
prettytable
不再包含 pillow、nltk、matplotlib、seaborn、pandas、scipy 等代码零引用的包 —— 仅这几项就贡献了 60 余条漏洞记录,移除比升级更彻底。
matplotlib
seaborn
pandas
scipy
不是凭经验拍的,而是用 OSV 反查出每个包「可清除全部已知漏洞的最低版本」:
>=2.6.0,<3.0
torch.load
>=4.53.0,<5.0
>=1.5.0,<2.0
>=4.66.3
CVE-2025-32434 与本项目直接相关:在 weights_only=False(PyTorch 2.6 之前的默认值)下, 恶意 checkpoint 可在加载时执行任意代码。本项目在 5 处调用 torch.load 加载 checkpoint 与 embedding。
weights_only=False
设主版本上限前,已核查代码的 API 使用面:
AutoTokenizer
AutoModel
BertModel
RobertaModel
no_grad
einsum
tensor
cat
np.float_
np.NaN
<3.0
0.21.1
这项已经修好了,无需再处理。
报告生成于 2026-07-22 16:40,而注释率修复提交 7e1e747 是 7-27——报告早于修复。
7e1e747
按报告披露的口径复算当前代码(公式可由报告数据验证:5708-739-165-294=4510):
5708-739-165-294=4510
注释行 2245 / 有效代码行 3951 = 56.82%
已远超 15% 门槛。
torch 与 transformers 即使升到最新版本仍分别存在 11 条与 9 条 尚无修复版本的 CVE 条目(经 OSV 确认),多为 AV:L 本地攻击向量的低危报告, 无法通过升级消除。
AV:L
这意味着加上 requirements.txt 后,复扫会看到这些条目—— 指标数字可能从「0」变为非零。但这是把「扫不到」变成「扫得到且已尽可能修复」, 是真实基线而非退步。已在 SECURITY.md 中作为例外项完整披露,并给出使用建议: 仅从可信来源获取 checkpoint;加载来源不明的权重时显式指定 weights_only=True。
SECURITY.md
weights_only=True
pip install --dry-run -r requirements.txt
THIRD-PARTY-NOTICES.md
sbom.json
pip install -r requirements.txt
社区影响力(关注度/派生数/使用度)与项目成熟度(发布频次/贡献者/PR/Issue) 共 8 项未达标,均为社区运营与协作流程指标,无法通过代码变更改善。
核查结论:报告的「安全合规 4 项全部达标」中有 3 项与实际不符
HedgeCode 的报告把安全合规度 4 项全判为达标:
其中许可证一项判定正确(本次核查确认依赖闭包中确无 GPL/AGPL/LGPL 组件),
但另外 3 项是误判。
原因:没有可被扫描的依赖清单
项目此前只有 conda 格式的
env-hedgecode.yaml,没有requirements.txt。多数 SCA 工具不解析 conda YAML —— 扫描器不是没发现风险,而是没有可识别的清单可扫。
经 OSV 漏洞库逐包实际查询,原环境所列组件版本合计存在 168 条漏洞记录:
transformersnltkpillowtorchurllib3jinja2requests/setuptoolsidna/certifi/tqdm/scikit-learn改动
新增
requirements.txt,由 AST 解析全部 22 个 Python 源文件得出,仅声明代码实际使用的 7 个直接依赖:
不再包含
pillow、nltk、matplotlib、seaborn、pandas、scipy等代码零引用的包 ——仅这几项就贡献了 60 余条漏洞记录,移除比升级更彻底。
版本下限的确定方式
不是凭经验拍的,而是用 OSV 反查出每个包「可清除全部已知漏洞的最低版本」:
torch>=2.6.0,<3.0torch.load远程代码执行)transformers>=4.53.0,<5.0scikit-learn>=1.5.0,<2.0tqdm>=4.66.3jinja2/requests/certifi/idna/urllib3/setuptools兼容性核查
设主版本上限前,已核查代码的 API 使用面:
transformers仅用AutoTokenizer/AutoModel/BertModel/RobertaModel等稳定 APItorch仅用no_grad/einsum/tensor/cat等核心算子np.float_/np.NaN等),故 numpy 放开至<3.0tree-sitter固定0.21.1:0.22 起 Python 绑定 API 有较大调整,且该版本 OSV 无漏洞记录关于「代码注释率 6.52% 未达标」
这项已经修好了,无需再处理。
报告生成于 2026-07-22 16:40,而注释率修复提交
7e1e747是 7-27——报告早于修复。按报告披露的口径复算当前代码(公式可由报告数据验证:
5708-739-165-294=4510):已远超 15% 门槛。
⚠️ 残余风险(如实披露)
torch与transformers即使升到最新版本仍分别存在 11 条与 9 条尚无修复版本的 CVE 条目(经 OSV 确认),多为
AV:L本地攻击向量的低危报告,无法通过升级消除。
这意味着加上 requirements.txt 后,复扫会看到这些条目——
指标数字可能从「0」变为非零。但这是把「扫不到」变成「扫得到且已尽可能修复」,
是真实基线而非退步。已在
SECURITY.md中作为例外项完整披露,并给出使用建议:仅从可信来源获取 checkpoint;加载来源不明的权重时显式指定
weights_only=True。验证
pip install --dry-run -r requirements.txtcertifi、tqdm为 MPL-2.0(弱 copyleft,与 MIT 兼容)附带交付
THIRD-PARTY-NOTICES.mdsbom.jsonSECURITY.mdpip install -r requirements.txt,说明与env-hedgecode.yaml的分工未处理
社区影响力(关注度/派生数/使用度)与项目成熟度(发布频次/贡献者/PR/Issue)
共 8 项未达标,均为社区运营与协作流程指标,无法通过代码变更改善。