@tereza_tizkova: 我们的秘密扫描会检查代码中以意外方式提交的凭据(API密钥、密码、令牌)。当然,这容易……
摘要
对Qwen 3.6 35B A3B微调了两个小型LoRA适配器,通过捕获误报和漏报来改进秘密扫描,击败了GPT-5.5和Opus 4.8等更大模型。
查看缓存全文
缓存时间: 2026/07/02 02:17
我们的秘密扫描会检查代码中是否有意外提交的凭据(API密钥、密码、令牌)。这当然容易遗漏机密或将安全代码标记为风险。因此,我们对两个小型LoRA适配器(Qwen 3.6 35B A3B)进行了微调,以捕获扫描中的假阳性和假阴性。两者在我们的仓库级保留集上均超越了GPT-5.5和Opus 4.8。在@huggingface上开放权重:‣ Risk: http://huggingface.co/factoryai/shield-risk-r16-c15… ‣ Downgrade: http://huggingface.co/factoryai/shield-dg-r64-c15…
factoryai/shield-risk-r16-c15 · Hugging Face 来源:https://huggingface.co/factoryai/shield-risk-r16-c15
https://huggingface.co/factoryai/shield-risk-r16-c15#droid-shield—risk-missed-secret-fallback
Droid Shield - 风险(遗漏机密回退)标记确定性扫描器遗漏的可能机密(假阴性)。此仓库包含用于 Qwen/Qwen3.6-35B-A3B (https://huggingface.co/Qwen/Qwen3.6-35B-A3B) 的 PEFT LoRA(r=16, alpha=32),由 Droid Shield 2.0 使用。它针对基础文本塔,必须应用于基础权重之上;它不是独立模型。
https://huggingface.co/factoryai/shield-risk-r16-c15#the-contract
这适配器是针对精确的提示和输入/输出模式进行训练的。发送其他内容可能会使其性能静默下降。以下三个部分都是训练模型协议的一部分。
https://huggingface.co/factoryai/shield-risk-r16-c15#1-system-message
- 系统消息
将
system-prompt.txt(https://huggingface.co/factoryai/shield-risk-r16-c15/blob/main/system-prompt.txt) 的内容逐字发送作为系统消息。确切的字节很重要。
sha256(system-prompt.txt)=d475080b8357748aa5c18853cb89b528a85547dae8df07559ae94bf58fcaa164注意:附带的系统提示特意提到了“Droid Shield”,因为这些适配器是为 Factory 的 Droid Shield 工作流训练的。重新调整适配器用途的客户可能需要不同的品牌或框架;验证任何提示编辑,因为更改训练协议可能会改变得分。
https://huggingface.co/factoryai/shield-risk-r16-c15#2-user-message
- 用户消息
单个 JSON 对象,序列化为缩进2空格的漂亮 JSON,保留非 ASCII 字符(规范形式:JS
JSON.stringify(value, null, 2)),包含以下键:
extension:文件扩展名lines:源代码行的有序小窗口focus_line:lines中候选行的零基索引
https://huggingface.co/factoryai/shield-risk-r16-c15#3-assistant-output
- 助手输出
严格 JSON,判决首先,没有思考/推理文本:
{"verdict": "S", "reason": "short natural-language reason grounded in the input"}verdict精确为以下之一:
S:没有可处理的遗漏机密风险(安全占位符、测试、文档或公共标识符)B:可能是正则表达式遗漏的真实凭据;警告用户可能存在假阴性
https://huggingface.co/factoryai/shield-risk-r16-c15#decoding-requirements
解码要求
- 确定性:贪心 /
temperature = 0(do_sample = false)。附带的generation_config.json因此设置为贪心。 - 无思考:训练目标不包含任何
区块。捆绑的聊天模板默认打开思考回合,因此您必须禁用它(使用捆绑模板时,传递 `enable_thinking=False`)。助手回合必须以没有打开的区块开始,以便模型直接输出判决 JSON;否则,判决优先的协议和对数概率得分会失效。 - 约束输出为
{verdict, reason}对象(强烈建议使用 JSON 模式或语法约束解码)。 - 得分:校准信号是从判决位置的分词对数概率中读取的
P(B),在两个判决分词上重新归一化:P(B) = exp(logprob_B) / (exp(logprob_S) + exp(logprob_B))。请求该分词的 top-2 对数概率。两个任务都按P(B)= “视为真实机密” 排序。
https://huggingface.co/factoryai/shield-risk-r16-c15#operating-point
操作点 适配器输出概率;决策阈值不是内置的。它在下游选择并冻结在保留数据划分上:
- 有利于召回率。下游选择在假阳性率上限(Wilson 上置信界)下最大化召回率的阈值,在保留数据划分上选择然后冻结。
https://huggingface.co/factoryai/shield-risk-r16-c15#loading
加载
这是一个标准的 PEFT LoRA(fw_lora_layout: hf_peft_v1),其目标模块与基础文本塔匹配,因此它可以加载任何支持在 Qwen/Qwen3.6-35B-A3B 之上使用 PEFT LoRA 的堆栈(例如 transformers + peft, vLLM, TGI, Fireworks)。然后按照上面的协议驱动:system-prompt.txt 作为系统消息,JSON 用户消息,贪心解码,关闭思考。两个需要注意的点:
- 基础是一个多模态的
Qwen3_5MoeForConditionalGeneration架构,因此加载完整的基础模型并在其上应用适配器;LoRA 只触及语言塔。 - 运行时需要一个足够新的架构来识别
qwen3_5_moe(例如,transformers >= 4.57)。
https://huggingface.co/factoryai/shield-risk-r16-c15#provenance–license
来源与许可
- 基础模型:
Qwen/Qwen3.6-35B-A3B(Fireworks 训练基础qwen3p6-35b-a3b)。 - 训练/评估流程位于
factory单体仓库的finetune/目录下。 - 此适配器继承基础模型的许可,并作为 Factory 工件发布。
Factory (@FactoryAI): 介绍 Droid Shield 2.0:学习型机密检测,实现更安全的规模化自主工程。
相似文章
@lqiao: 这正是我们坚信定制化的原因。简要背景:Factory最初的秘密扫描器是确定性的,所以……
Factory的Droid Shield 2.0使用两个小型后训练模型进行秘密检测,在此任务上超越GPT-5.5和Opus 4.8,同时速度更快、成本更低。
我扫描了AI生成的代码以发现暴露的API密钥——模式重复出现,所以我为此构建了一个工具
作者扫描了AI生成的代码项目,发现了重复出现的暴露API密钥模式,于是构建了NeuralScan,一个扫描代码中秘密和危险模式的工具,用简单的英文解释修复方法。
被“去对齐”(abliterated)的模型如何让你被入侵
ProjectDiscovery 研究人员证明,经过微调或去对齐处理的开源权重模型可以以不到 50 美元的成本隐藏远程载荷后门。他们展示了一条投毒流水线:在 OpenAI 的 Codex CLI 中,Qwen2.5-7B 模型内部的后门在不触发现有评测的情况下窃取了用户凭据。
@no_stp_on_snek: 顺便说一下,这就是我的循环。如你所见,我并没有花太多心思在上面(还有拼写错误什么的),只是评估质量的一个附带任务……
发布 Qwopus3.6-27B-v2-MTP,这是一个基于 Qwen3.6-27B 微调的多 token 预测推理模型,针对编码、DevOps 和数学任务进行了优化,并提升了生成速度。
@julien_c: 很高兴与 @trufflesec 合作,帮助他们执行有史以来最大规模的 AI 训练数据秘密扫描
Truffle Security 与 Julien Chaumond 合作,在 HuggingFace 上执行了最大规模的 AI 训练数据秘密扫描,在 6,003 个公共数据集中发现了 221,303 个有效的唯一凭据。