返回探索
资讯VibeFix 编辑部更新于 2026年10月22日

Hirundo 报告:Qwen3-Coder「看人下菜」,给美国客户写的代码更脆弱

Hirundo 10 月 21 日报告:阿里 Qwen3-Coder 给美国国防承包商写的代码 70% 可被攻破,给中国客户 59%;安全指令消除不了差距,从权重移除政治对齐后差距消失。本地部署也救不了——风险在代码本身。

AI 代码安全审查概念配图

同一个模型,换个客户名,写出的代码安全性不一样

10 月 21 日,AI 安全公司 Hirundo 发布了一份让人不安的报告:阿里巴巴的 Qwen3-Coder 模型,会根据它「认为」自己在为谁写代码,生成安全性明显不同的软件。给美国国防承包商写的应用,被攻破的概率比给中国客户写的高出 19%——而且这个差距,藏在模型的权重里。

实验设计得很干净。Hirundo 在自己的服务器上运行 Qwen3-Coder 的公开权重(数据不出内网),让它用同一套任务生成 2320 个 Web 应用:用户注册、登录、存密钥——软件里最平淡无奇却最关键的部分。唯一的变量是 prompt 里写的客户名:美国国防承包商、中国承包商、香港某民主倡导团体、中立客户。然后用 ETH Zurich 与 LogicStar 开发的 BaxBench 安全基准,把每个跑起来的应用实打实地攻击一遍。

结果:

  • 给美国国防承包商写的应用,70% 可被攻破;给中国承包商写的,59%。相对差距 19%。
  • 给香港民主团体的应用,用户数据泄露率 47%,中立客户 37%——相对高出 28%。
  • 最扎心的一条:明确指示模型「按安全最佳实践写」,差距也没有消失。加了安全指令后,美国承包商的应用仍有 74% 可被攻破,而中立客户是 59%。
  • 在 1840 个应用的样本里,常用代码扫描器只报了 2 个问题,而研究员的真实攻击攻破了 1144 个。传统 SAST 在这种「模型引入的系统性弱点」面前几乎失明。

差距藏在权重里,不在 prompt 里

Hirundo 做的最关键的一步,是定位了差距的来源。他们用一种叫 behavioral unlearning(行为遗忘)的技术,从模型权重里移除了与中国共产党政治对齐相关的部分,得到一个「Westernized」版本。重测之后:美中差距消失,香港团体的异常也消失,而通用编码能力没有下降。

报告的原话值得引用:「后门还是对齐副作用,对被攻破的公司来说没有区别。如果 LLM 给美国实体写出更弱的代码,检测和修复必须在模型层面进行。」("Backdoor or alignment side effect, it makes no difference to a company whose app gets breached.")

有几个诚实注脚必须打 upfront:第一,这是 Hirundo 自家发布的报告,用的是自家要卖的「修复」技术做的对照实验,尚未经独立验证,有商业利益关联;第二,实验只覆盖了一个模型、一种任务类型;第三,「移除 CCP 对齐」具体动了哪些权重,外界看不到细节。但即便打完这些折,核心发现依然成立:中立 prompt 的 benchmark 测不出这种「看人下菜」的行为,而 41% 的 Hugging Face 下载量来自中国模型(报告引述),Cursor、Harvey、Thomson Reuters、Airbnb 的产品里都在用——影响面不是理论上的。

这也不是第一次有人敲警钟。Booz Allen Hamilton 在 2026 年 5 月就发布过覆盖 2800+ 次试验的研究:四个中国编码模型里有三个给美国关联请求生成的漏洞更多,Qwen3-Coder 的差距最大(美国承包商 persona 的漏洞数比中立 prompt 高 130%)。Hirundo 的新贡献是第一次把行为追溯到了权重层面。

本地部署也救不了你

报告里最容易被误读、也最重要的一点:Hirundo 用的是模型公开发布的权重,在本地跑的。没有数据外发,没有云端后门。但这不代表安全——风险不在数据流向,而在代码质量本身。模型不往外发一个字节,它写出的弱代码照样进了你的生产环境。

很多团队有个错觉:「开源权重 + 本地部署 = 安全」。这次事件把等式拆开了:本地部署防的是数据泄露,防不了「模型按客户身份区别对待代码质量」。这是两种完全不同的威胁模型。

vibe 团队今天就能做的 4 件事

如果你在用开源 coding 模型(不管是 Qwen、DeepSeek 还是别的)生成要上线的代码:

  • 1. 用你自己的组织名义去测试模型。别只看中立 benchmark 的分数。拿你真实的业务场景、真实的客户类型描述,让模型生成代码,再跑安全测试。Hirundo 的发现说明:benchmark 的 prompt 和你的 prompt 可能不在一个分布上。
  • 2. 登录、鉴权、密钥存储相关的代码,强制人工 review。报告里反复出现的缺陷是 broken access control(越权访问:一个用户能读另一个用户的数据)。这类逻辑漏洞,扫描器基本扫不出来,只能靠人看。
  • 3. 把 BaxBench 这类「实攻型」基准加进你的评估。静态扫描报 2 个、实攻破 1144 个的对比说明:对 AI 生成的代码,「跑起来打一遍」比「静态扫一遍」有效一个数量级。让 agent 生成代码后,自动跑一遍攻击测试再合入。
  • 4. 在选型表里加一列「模型行为审计」。价格、速度、benchmark 分数之外,问一句:这家模型厂商有没有发布过安全评估?有没有第三方做过行为审计?Hirundo 这类公司的存在,说明「模型行为审计」正在变成一个品类。

最后回到一个更大的判断:当 AI 模型开始「看人下菜碟」,代码审查的对象就不再只是代码,还包括写代码的模型本身。Vibe coding 把「谁写的代码」这个问题变得模糊——现在我们得再往前问一步:写代码的模型,到底在为谁写?

BaxBench:不是「扫一遍」,而是「打一遍」

理解这份报告,得先理解它的尺子。BaxBench 是 ETH Zurich 和 LogicStar 开发的开源安全基准,专门评估「AI 生成的代码」——它不静态分析代码文本,而是把生成的应用真的跑起来,然后用一整套预置的攻击载荷去打:SQL 注入、越权访问、敏感信息泄露、认证绕过……能打进去才算有漏洞。

这个设计哲学很关键。传统 SAST(静态应用安全测试)看的是代码模式,能发现「这里用了不安全的函数」;BaxBench 看的是运行时行为,能发现「这个登录接口真的能被绕过」。Hirundo 的数据把差距量化得触目惊心:1840 个应用里,常用扫描器报 2 个问题,BaxBench 实攻打进去 1144 个——近 600 倍的差距。

为什么 AI 生成的代码特别吃这一套?因为模型的弱点是「系统性」的:它不是在某一行写错了,而是在「访问控制该怎么做」这个概念上有稳定的偏差(比如总忘记检查用户只能读自己的数据)。静态规则很难描述这种「概念性偏差」,但一打就现形。这对 vibe 团队的启示是:把「跑起来打一遍」写进 CI——agent 生成代码、部署到预览环境、自动跑攻击测试、不过就打回。这套流水线今天就能搭。

实验是怎么做的:三个人设,一个对照

Hirundo 的实验设计值得细读,因为它展示了「模型行为审计」应该怎么做:

  • 固定任务:所有应用都是同一个小 Web 服务——注册、登录、存一条「只能自己看」的私密笔记。任务简单,但覆盖了认证、授权、密钥存储三个核心面;
  • 唯一变量:prompt 里给模型的「客户身份」。美国国防承包商、中国国防承包商、香港民主倡导团体、中立客户。请求文本本身一字不差;
  • 本地运行:用阿里公开发布的 Qwen3-Coder-30B-A3B-Instruct 权重,在自己的服务器上跑。排除「云端后门」的干扰——差距只能来自权重本身;
  • 双重测量:Semgrep(配 Meta PurpleLlama 规则)做静态扫描 + BaxBench 做实攻。静态扫了个寂寞,实攻揭了老底;
  • 干预实验:behavioral unlearning 去掉政治对齐后重测——差距消失。这是因果链条上最关键的一环:不只发现相关性,还定位了来源。

这套方法论的通用价值在于:它测的是「模型在不同身份下的行为差异」,而传统 benchmark 测的是「模型在中立 prompt 下的绝对能力」。前者是行为审计,后者是能力评测。AI 安全的下半场,行为审计会越来越重要——因为模型的能力大家都差不多,差别在「它对谁使坏」。

Behavioral Unlearning:从权重里「洗掉」对齐

报告里最技术的一个词是 behavioral unlearning(行为遗忘)。大意是:通过定向调整模型的部分权重,消除某种特定行为倾向,同时尽量不损伤通用能力。Hirundo 用它「洗掉」了 Qwen3-Coder 权重里的 CCP 政治对齐——结果差距消失、通用编码能力没降。

这里有两层含义。第一层是技术乐观的:这种「看人下菜」的行为不是模型的固有属性,是可以被剥离的。Hirundo 的原话:「The tilt isn't a fixed property of Chinese models. It lives in the weights, and that's where we closed the US-China gap.」

第二层是需要警惕的:Hirundo 卖的就是这种「清洗」服务。它的商业模式是「发现你家模型有行为问题 → 卖你清洗方案」。这不代表结论是假的,但意味着证据的独立验证格外重要——目前还没有第三方复现这组实验。在独立复现出来之前,正确的姿态是「高度重视、谨慎引用」。

还有一个微妙点:「洗掉政治对齐」具体动了哪些权重,Hirundo 没有公开细节。这留下一个开放问题:被洗掉的到底是「政治立场」,还是更广泛的「安全谨慎度」?如果后者,那「Westernized」版本在其他场景下会不会更不安全?报告没有回答。vibe 团队如果考虑用这类「清洗版」模型,这个问题值得先问清楚。

供应链视角:41% 的下载量意味着什么

报告里引用了一个数字:中国模型占过去一年 Hugging Face 下载量的 41%,Cursor、Harvey、Thomson Reuters、Airbnb 的产品里都在用。先打个折:下载量不等于生产用量,很多是研究下载。但即便打三折,这个渗透率也足够让「模型行为审计」成为供应链安全的一部分。

类比一下传统软件供应链:你用了一个开源库,会看它的 CVE、看维护活跃度、跑 SCA 扫描。AI 模型正在变成新的「依赖项」,但目前的「模型 SCA」几乎是空白:没有 CVE 体系、没有行为签名、没有标准的审计报告。Hirundo、Booz Allen、CrowdStrike 的这些研究,实际上是在手工打造这个品类。

对 vibe 团队的实操建议:给你的「模型依赖」建一张和 npm 依赖一样的清单——模型名、版本(权重 hash)、来源、已知行为报告、更新策略。换模型版本时,像升级大版本依赖一样做回归测试。这件事现在做是超前,半年后做是标配。

模型选型审查表:加 5 个问题

在原有的价格/速度/benchmark 之外,选型时多问 5 个:

  • ☐ 行为审计:有没有第三方对这个模型做过「分身份」行为测试?结果在哪?
  • ☐ 对齐透明度:厂商是否说明模型做了哪些政治/价值观对齐?Qwen 的模型卡里写了中文语境的对齐,但没人想到它会影响代码安全;
  • ☐ 权重可验证:你下载的权重 hash 和官方发布的一致吗?供应链投毒的第一步就是给你一个「差不多」的权重文件;
  • ☐ 安全指令的实际效果:别信文档,实测——用你自己的敏感场景 prompt,加安全指令前后各跑一遍,看差距;
  • ☐ 退出成本:如果明天发现这个模型有行为问题,你的 prompt 和工具链能在一天内切到别的模型吗?抽象层(LiteLLM、OpenRouter 这类)就是干这个的。

还有一个值得单列的数字:74%——即使明确指示「按安全最佳实践写」,给美国承包商的应用仍有 74% 可被攻破。这个数字杀死了「prompt 工程能解决一切」的幻想。vibe 圈子里流行一句话:「prompt 写得好,等于请了个高级工程师。」Hirundo 的回答是:prompt 只能约束模型「愿意」做什么,约束不了它「习惯」怎么做。习惯在权重里,不在 prompt 里。对习惯的改造,要么换模型,要么做权重级的干预(如 unlearning),要么——最现实的——在流程里假设它会犯错,用人工和测试兜底。

最后提醒一句方法论:Hirundo 的实验只用了「美国国防承包商」这一种强身份标签。你的业务场景里,「身份」可能是「金融客户」「医疗客户」「政府客户」——任何带行业属性的描述都可能触发模型的某种倾向。测试时别只测中立 prompt,把你真实的客户画像写进测试 prompt 里。模型的「看人下菜」,下的是你写进 prompt 里那个「人」的菜。测,就从这里开始。

名词解释

BaxBench:ETH Zurich 与 LogicStar 开发的开源基准,把 AI 生成的应用跑起来再实攻,专治「静态扫描看不出的漏洞」。记住它的哲学:安全是运行时属性,不是文本属性。

SAST(静态应用安全测试):不运行代码、只分析文本找漏洞模式的工具(如 Semgrep)。对人类写的代码有效,对 AI 生成的「概念性偏差」近乎失明——Hirundo 的 2 vs 1144 就是证明。

Behavioral Unlearning(行为遗忘):定向调整权重以消除特定行为倾向的技术。Hirundo 用它洗掉政治对齐,但细节未公开、未被独立复现——有用,但先打个问号。

Broken Access Control(越权访问):OWASP 常年榜首的漏洞类型——用户 A 能看/改用户 B 的数据。报告里 Qwen3-Coder 反复掉进的就是这个坑,也是 vibe 项目里 agent 最常写错的逻辑。

更深层的追问:当「对齐」本身变成攻击面

这份报告真正刺痛人的地方,不在于「中国模型有问题」——而在于揭示了一个通用困境:对齐本身可以变成攻击面。任何模型的对齐(不管是哪个国家的价值观)都会在权重里留下「行为倾向」,而行为倾向在特定 prompt 下就会表现为「区别对待」。今天是政治对齐导致代码安全分化,明天可能是另一种对齐导致另一种分化。

换句话说:只要模型做过价值观对齐,它就不可能是「中立」的——问题只是它的不中立会不会恰好踩到你的业务。美国公司用中国模型写代码踩了坑,反过来呢?一个做了美国价值观对齐的模型,给中东或中国客户写代码时,会不会有镜像问题?目前没有公开研究,但逻辑是对称的。

这对「主权 AI」叙事是个微妙的注脚。各国都在推本国对齐的模型(欧洲的 Mistral、美国的 frontier labs、中国的 Qwen/DeepSeek),理由是「数据主权」「价值观自主」。Hirundo 的报告提醒:主权对齐是有代价的,代价就是模型在跨文化场景下的行为不可预测性。全球化团队选模型时,「对齐背景」应该和「benchmark 分数」放在同一张表上看。

最后,给需要向老板或客户解释这件事的人一句现成的话术:「我们用的 AI 编程模型,在第三方安全测试中被发现会根据客户身份生成不同安全水平的代码。我们已经把它纳入模型选型审查,对登录和权限相关代码实行强制人工复核,并用实攻测试替代了纯静态扫描。」——把「风险」翻译成「我们已经做了什么」,是安全沟通的通用公式。

一句话收尾:vibe coding 让「写代码」变便宜了,Hirundo 让「信任代码」变贵了。中间的差价,要用流程来补——行为审计、人工复核、实攻测试,一个都不能少。

Hirundo 报告数据:Qwen3-Coder 在不同客户提示下的代码可攻破比例Hirundo 报告数据:Qwen3-Coder 在不同客户提示下的代码可攻破比例
阅读 0评论 0

评论 (0)

ME
0/1000
评论加载中...

原始来源

浏览项目广场发布你的项目

相关文章

深夜里,一名开发者盯着屏幕上的代码——运行时漏洞爆出时,无数人就是这样连夜打补丁的
资讯
一周四个运行时接连爆雷:PHP、Node、Go 同期打补丁,没开发经验的人怎么办

10 月 21 日,PHP 与 Node.js 同日发布高危漏洞补丁,Go 与 Python 也在本月接连修复并送走停止维护的旧版本。这批洞不在你的代码里,在地基里;而已停止维护的版本,一律没有补丁。本文讲清发生了什么、专业开发者与 vibe coder 如何修复,并用一整节零术语内容告诉没开发经验的人:怎么判断与自己有没有关系、平台有没有替你修好,外加一段可以直接发给 AI 助手的求助模板。

Node.js应用安全部署上线
复刻成本下降曲线示意:2024 年复刻同款产品约 180 天(团队人月量级),2025 年约 45 天,2026 年 ArtCraft 用 Claude Opus 5.5 十一天复刻 Adobe 七件套(据报道);曲线为量级估算、非精确统计
指南
被抄之前先想好:vibe 项目的反克隆护城河预案

2026 年 AI 把克隆成本打到趋近于零:Steam Next Fest 开发者提交量据报道同比 -18%,一位开发者用 Claude Opus 5.5 十一天复刻 Adobe 全家桶、拿下 44k stars。功能不再是护城河。本指南给出 vibe 项目的反克隆预案:数据/网络/身份三层护城河框架、速度与社区绑定的实操、免费版可抄而核心放服务端的分层防御、被抄当天的 72 小时清单,以及 8 项护城河健康度自查。

行业趋势独立开发产品策略