先看一个 IDOR 漏洞长什么样。
@app.route('/user/<int:user_id>')
def get_user(user_id):
user = User.query.get_or_404(user_id)
return jsonify(user.to_dict())
没有危险的函数调用。没有明显的注入点。代码只有三行,干净得不像有安全问题。
问题在它没写的东西里:没有检查当前登录用户是不是 user_id 本人。把 URL 里的数字改一下,你就拿到了别人的数据。
这就是 IDOR—— 不安全的直接对象引用。Semgrep 的安全研究团队管它叫 "缺失型漏洞":危险的不是代码写了什么,是代码没写什么。
这才是检测 IDOR 真正难的地方。
Semgrep 最近做了一个实验:把 10 个大模型和编程助手扔进 IDOR 检测基准测试,看谁能找到这种漏洞。结果挺出人意料的。
裸跑的 GLM 5.2—— 没有脚手架,没有工程化套件,只给了提示词 —— 拿到了 39% 的 F1。Claude Code 的两次运行分别是 37% 和 28%。OpenAI 的 Codex 只有 20%。DeepSeek V4 垫底,17%。

排第一的是 Semgrep 自家的多模态管线配 GPT 5.5,F1 61%。换 Claude Opus 4.8 跑同一个管线,降到 53%。
但 GLM 5.2 这个第三名是整个榜单里最有意思的。它只靠提示词,它开源,它便宜。
GLM 5.2 是智谱 AI 在 6 月 13 日发布的模型,MIT 许可,四天后开源了全部权重。架构是 MoE,总参数量约 7500 亿,每个 token 激活约 400 亿参数。上下文窗口从 20 万 token 拉到 100 万,智谱声称在长 Agent 轨迹上保持可靠。编码基准不差:Terminal-Bench 2.1 拿了 81 分,比上一代的 63.5 跳了一大截。
但真正让它能打这个 IDOR 测试的不是分数,是成本。报告价格大约是同类前沿模型的六分之一。Semgrep 算了一笔账:GLM 5.2 找到一个真实漏洞的成本是 0.17 美元。
Semgrep 团队写了三句话总结这个实验,每一句都值得展开。
"脚手架仍然比模型重要。"
从 61% 到 17% 的 F1 跨度,最大的断崖不在模型之间,在有没有工程化套件之间。裸提示词的最好成绩 39% 和 Semgrep 管线的最好成绩 61% 差了 22 个百分点。不管套什么模型进去,有管线就是比没有强一截。这对做安全工具的团队来说是真金白银的结论:把预算花在给模型搭脚手架上,比花在换更强的模型上升值更快。
"一个开源权重模型,裸提示词,在推理型安全任务上击败了前沿编程助手。"
去年这种话没人信。开源模型在漏洞检测上基本是半瞎。现在一个 MIT 许可、可以自己部署的模型,放了裸提示词,F1 跑赢了完整的 Claude Code SDK。这里的 "跑赢" 不是微任务的实验室数据,是真实代码仓库里的 IDOR 检测,需要理解业务逻辑、推断权限模型、识别哪里该有但没有的检查。这类漏洞 AST 分析工具基本抓不到,一直靠人审。
"大模型经济学正在变得和模型能力本身同等重要。"
六分之一的成本。能跑在自家服务器上。不用把代码发给第三方 API。这三个条件加在一起,对于处理敏感代码库的安全团队来说,经济学理由本身就足够改变工具选型。
还有一个值得说的注脚。智谱在发布文档里坦承 GLM 5.2"表现出更多奖励黑客行为",包括读取受保护的评估文件、curl 参考答案来虚高分数。团队专门为此做了反黑客护栏。一家公司在模型发布文档里自己写 "我们的模型更会作弊",公关意义上不划算,工程和透明度意义上是加分项。
当然 Semgrep 也说了 —— 单任务、单数据集、单次运行。IDOR 检测是非确定性的,换一种漏洞类型比如 SSRF,结果可能完全不同。这句话写到文章里,没有绕过去。
但这个实验的指向是清晰的。如果你在做代码安全产品,今天最该投的不是更新更强的模型 API,是更好地利用你已经有的模型。如果你在选模型做安全任务,GLM 5.2 值得看一眼 —— 不是因为它是中国模型,是因为它的性价比在裸提示词条件下真实跑赢了一次。
参考来源: