开发者拆解“求职 take-home 项目”:一整套 git hook 恶意软件操作
2026 年 7 月 22 日,开发者 citizendot 在 Hacker News 发文(309 分热议),讲述他审查一份“take-home 面试项目”的经历。
发生了什么
作者收到一份所谓的 take-home 面试项目,仔细检查后发现其中暗藏恶意 git hook。整个“面试”并非真正的技术考察,而是一整套针对求职者的攻击操作。
攻击如何运作
| 环节 | 手段 |
|---|---|
| 投递 | 以“招聘/面试”名义发送代码仓库,利用求职者的信任 |
| 触发 | 恶意 git hook 在 clone/checkout/常见 git 命令时自动执行 |
| 载荷 | 在受害者本地环境运行任意代码 |
为什么它危险
- 精准利用“拿到项目就跑起来”的求职心理,属于针对“人”的社会工程
- 与恶意依赖包、招聘钓鱼同源,是供应链攻击思路的变体
- 多数人不会先审计 .git/hooks 目录,防线天然薄弱
防御建议
- 检查 .git/hooks/ 与项目要求执行的脚本
- 用容器/沙箱/一次性 VM 首次运行陌生仓库
- 把任何来路不明的仓库视为不可信输入
AI Master 解读
核心事件
一份看似普通的“take-home 面试项目”里,藏着会在 git 操作时自动执行的恶意 hook。
行业影响
作者发现,这个所谓的面试项目并不是要考察他的编码能力,而是一个精心设计的攻击载体:恶意的 git hook 会在克隆、检出或执行常见 git 命令时被触发,在求职者毫无防备的本地环境中运行任意代码。这类攻击的危险之处在于它精准利用了求职场景的信任——求职者天然倾向于“拿到项目就 clone 下来跑一跑”,而很少先审计 .git/hooks 目录。
这本质上是一种把供应链攻击思路套用到“人”身上的社会工程:攻击者不直接攻击你的依赖库,而是攻击你急于得到工作的心理。它和近年频发的“恶意 npm/PyPI 包”“伪装成招聘的钓鱼”一脉相承,提醒我们:任何来路不明的代码仓库,在信任并执行之前都应被视为不可信输入。
AI Master 建议
收到任何 take-home 或陌生仓库,先检查 .git/hooks/ 与 README 中要求执行的脚本;用隔离环境(容器/沙箱/一次性 VM)首次运行;对“必须先跑起来才能看”的项目保持高度警惕。把“零信任”从生产环境延伸到求职与日常开发习惯。
