hackajob 的全代码库安全上下文
- 81.1%
- 已分类处理的问题中需要处理的比例
- 92 个问题
- 已解决
“难点从来不是投入不够,也不是能力不够。
“难在上下文。每次审查都要把这么多上下文装在脑子里,谁都做不到,两个人一起看也一样。”
Dragos Dimitriu
合规负责人
关于 hackajob
hackajob 成立于 2014 年,其 AI 招聘技术服务于 50 多个行业的 200 多家公司,包括 American Express、Tesco、Barclays、HSBC 和 Sainsbury’s。
旗舰产品 Archer 为企业招聘团队寻找、触达并筛选候选人。它的人才库包括 150 万名经过审核的候选人和超过 8 亿份已索引的档案,每天对照实时招聘需求筛选 25 万名候选人。
在这样的规模下,按客户划分的数据,授权控制尤为关键。
挑战:审查人看到的是 diff,不是调用图
hackajob 原本就有一套严格的审查流程。每个 PR 至少由两名工程师审查,且都不是作者本人。瓶颈不在审查投入,而在每位审查人能掌握多少系统上下文。
“审查人看到的是 diff,不是完整的调用图。所以漏掉的问题,通常要追踪一次改动如何与系统其他地方的代码交互,才能看出来。”
Dragos Dimitriu
合规负责人
解决方案:每个 PR 持续审查
现在,hackajob 的每个 PR 都会经过 Hacktron Review。Hacktron 在整个代码库中追踪每次改动,在审查流程中报出问题,修复后再重新扫描。hackajob 还设置了严重程度阈值,Hacktron 发现超过阈值的问题时,直接阻止合并。
“Hacktron 发现的问题,比人工过一遍实际能发现的多。而且每个 PR 都跑,不只是被标为涉及安全的那些。
“现在我们每周跑 200 到 250 次扫描,覆盖的项目还在增加。这里面包括修复后的重扫,但这个量,靠人工按这个深度是审不过来的。”
Dragos Dimitriu
合规负责人
问题分析
hackajob 从 2026 年 6 月首次使用 Hacktron 审查至今:
已分类处理的 143 个问题中,81.1% 属实,不是噪音。
对象级越权导致跨客户数据泄露(高危)
Hacktron 在一个为 Archer 新增助手聊天功能的 PR 中,发现了一个高危的对象级越权漏洞。
该接口对 book 范围的请求校验了所有权,但对 account 和 cohort 范围的请求没有校验。普通用户只要传入其他客户的标识符,就能越过自己的授权范围,拿到该客户的沟通记录和情感分析数据。
// A book scope may only be the caller's own book unless they're an admin.if ( parsed.data.scope.kind === "book" && parsed.data.scope.ownerEmail !== user.email && !user.isAdmin) { return new Response("Forbidden", { status: 403 });}// <- no equivalent check existed for "account" or "cohort" scopes单看改动的文件,逻辑前后一致。Hacktron 对比了不同范围类型的授权行为,问题才暴露出来。
“diff 里看不出任何问题。正因为这样,不管审查人经验多丰富,这种问题在人工审查中都容易漏掉。”
Dragos Dimitriu
合规负责人
Hacktron 在问题进入主分支之前就把它拦了下来。hackajob 在同一个 PR 里不到一小时就完成修复:抽出一个共享的授权函数,并为受影响的路径补上回归测试。
成效:全代码库的安全上下文
现在,每个 PR 都会经过同样覆盖全代码库的安全审查。分类处理和合并的决定权仍在工程师手里,Hacktron 提供系统上下文,让他们在代码进入主分支之前做出判断。
“Hacktron 在 PR 阶段就把它拦下了,所以它根本没进主分支。
“我们看重的就是这一点。”
Dragos Dimitriu
合规负责人