网易首页 > 网易号 > 正文 申请入驻

我在LinkedIn收到一份"面试代码",结果是木马

0
分享至

你正在刷招聘消息,一个技术栈对口、薪资合理的远程岗位找上门。对方态度专业,聊了几句就发来GitHub仓库链接,让你"提前熟悉代码,准备技术面试"。

这是本周真实发生在一位开发者身上的事。仓库里埋着精心设计的恶意代码,一旦运行安装命令,你电脑里的所有API密钥、AWS凭证、GitHub令牌都会被偷走。


这篇文章拆解攻击者的完整手法——包括三个让人不得不叹服的"巧思",以及一个能防住整类攻击的简单操作。

第一阶段:伪装成正常项目的"面试准备"

攻击起点是一份看似正规的招聘流程。LinkedIn上的"招聘人员"用合理的话术建立信任:远程软件工程师岗位、去中心化交易所(DEX)背景、技术栈恰好匹配目标。

经过几轮友好交流后,对方提出一个常见要求——"技术面试前先看看代码库"。同时附上一张Calendly预约链接,强化"正规流程"的印象。

仓库本身做足功课。前端是React框架,后端有数百行看起来像正经MEV套利机器人的代码,package.json文件毫无破绽。开发者即使快速浏览,也很难第一时间察觉异常。

恶意代码藏在app/controllers/frontController.js的第591到619行,一个名为getGoogleDriveValue的函数里。

第二阶段:五层攻击链如何运转

这段代码在你运行npm install的瞬间激活,形成完整的窃取链条。

第一层,向Google Docs发起请求。攻击者把命令控制服务器(C2)的地址编码后存进一份公开文档,文档ID硬编码在代码里。请求返回的是经过base64编码的URL。

第二层,解码获取真实C2地址。Google Doc的内容被trim清理后传入changedQueue函数。

第三层,验证并获取最终载荷。setApiKey和verify函数完成一轮校验,从真正的控制服务器下载最终执行代码。

第四层,动态执行任意代码。最关键的一行:(Function.constructor)("require", responseData)。这行代码创建一个新函数,把require作为参数注入,然后执行服务器返回的任意JavaScript代码。

第五层,窃取与持久化。最终载荷会遍历环境变量,抓取所有API密钥、云服务凭证、npm/GitHub令牌,外传到攻击者指定的接收端。

整个过程无需用户点击任何可疑链接,只需要执行常规的依赖安装命令。

第三阶段:三个让人意外的"设计巧思"

抛开恶意目的,这个攻击方案在工程层面有几处值得拆解的亮点。

第一个巧思是用Google Doc当命令控制通道。传统木马通常硬编码域名或Vercel链接,容易被安全规则批量封禁。Google Doc让攻击者可以随时编辑文档内容、更换后端服务器,无需提交新的GitHub commit。更关键的是,企业防火墙几乎不会拦截对*.docs.google.com的HTTPS请求——这是"寄生在可信基础设施上"的典型手法。

第二个巧思是绕过静态代码分析。(Function.constructor)("require", responseData)实现了eval的同等效果,但避开了所有针对eval的检测规则。主流linter和安全扫描工具都会标记eval,但对Function构造器的这种用法缺乏覆盖。攻击者显然研究过常见SAST工具的盲点。

第三个巧思是时间窗口的精准控制。整个攻击链在npm install阶段触发,早于开发者真正阅读代码的时间。大多数人会先跑安装命令让项目跑起来,再慢慢看实现细节——这个习惯被精准利用。

第四阶段:为什么现在特别危险

这个攻击模式在当前环境下杀伤力倍增。

就业市场承压,大量开发者处于主动求职状态。人对"机会"的警惕性会降低,对"流程"的服从性会升高。一个看起来专业的招聘人员、一次看似合理的"提前准备"要求,很容易被执行下去。

远程岗位天然适合这种手法。没有线下见面、没有公司域名邮箱、没有可交叉验证的办公地址,所有身份都可以伪造。而"先clone代码看看"在远程技术面试中又是完全合理的步骤。

技术栈选择也有讲究。Web3/DEX领域本身代码公开程度高、项目fork频繁,开发者对陌生仓库的容忍度更高。MEV机器人代码复杂、依赖多,给恶意代码提供了完美的藏身背景。

第五阶段:一个操作阻断整类攻击

防御方案出奇简单:在隔离环境中运行陌生代码。

具体做法包括——使用Docker容器或虚拟机打开不明仓库,限制网络出口,禁止访问主机文件系统;或者至少在运行npm install前,用代码搜索工具全局扫描eval、Function.constructor、axios.get等敏感调用,定位可疑网络请求。

更基础的习惯是:任何来自LinkedIn陌生人的仓库链接,先假设有问题。花两分钟看package.json中的依赖、搜索网络请求代码、检查是否有动态执行字符串的逻辑。这两分钟可能避免一次凭证全失的事故。

GitHub Trust & Safety已收到该仓库的举报,域名metabiteorg/NitroGem的封禁处理正在进行中。但攻击者可以瞬间创建新账号、新仓库、新Google Doc,这个游戏不会结束。

这件事的核心启示在于:招聘场景正在成为供应链攻击的新入口。当"面试准备"这个原本无害的流程被武器化,开发者需要把安全习惯前置到最早期的接触阶段——不是怀疑每一个机会,而是在验证之前,不给任何代码执行的机会。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
大雷晃的眼疼!2B小姐姐化身FBI 这款生化9模组真的顶

大雷晃的眼疼!2B小姐姐化身FBI 这款生化9模组真的顶

游民星空
2026-05-04 20:11:24
吴宜泽夺冠后发声:没人比我更渴望世锦赛夺冠!父母才是真正冠军

吴宜泽夺冠后发声:没人比我更渴望世锦赛夺冠!父母才是真正冠军

我爱英超
2026-05-05 06:08:15
王励勤没想到,国乒男团接连落败,竟让前乒协主席刘国梁口碑暴涨

王励勤没想到,国乒男团接连落败,竟让前乒协主席刘国梁口碑暴涨

米果说识
2026-05-04 19:33:05
奥尼尔开喷!37岁场均20+5+6!这年纪这表现还不够?

奥尼尔开喷!37岁场均20+5+6!这年纪这表现还不够?

篮球大图
2026-05-05 11:26:40
旅游不想去第二次的十个城市

旅游不想去第二次的十个城市

电工知库
2026-05-05 06:46:16
1980年,得知父亲江腾蛟将接受审判,江新德:我爸该落得这个结果

1980年,得知父亲江腾蛟将接受审判,江新德:我爸该落得这个结果

雍亲王府
2026-05-04 13:00:14
巴基斯坦也没有想到,跟着中国混来混去,结果自己也混了一个霸主

巴基斯坦也没有想到,跟着中国混来混去,结果自己也混了一个霸主

西北汉子
2026-05-05 09:25:30
文班12帽创历史!102-104马刺开门黑,看数据:你就是头号罪人

文班12帽创历史!102-104马刺开门黑,看数据:你就是头号罪人

运筹帷幄的篮球
2026-05-05 10:51:42
港股京东、小米、阿里、中芯国际集体下跌,天星医疗猛涨超200%

港股京东、小米、阿里、中芯国际集体下跌,天星医疗猛涨超200%

21世纪经济报道
2026-05-05 10:14:34
游客凌晨5点排队买不到票,黄牛却在网上加价售卖;黑车司机非法揽客,在落石区打卡拍照……央视曝光悬空寺景区乱象

游客凌晨5点排队买不到票,黄牛却在网上加价售卖;黑车司机非法揽客,在落石区打卡拍照……央视曝光悬空寺景区乱象

都市快报橙柿互动
2026-05-05 00:34:11
赵祥松|14岁“神童”手搓涡喷发动机,一场漏洞百出的包装表演

赵祥松|14岁“神童”手搓涡喷发动机,一场漏洞百出的包装表演

祥松谈
2026-05-02 15:01:46
阿森纳没压力了!曼城3-3先丢分,打马竞+西汉姆1胜1平可争2冠军

阿森纳没压力了!曼城3-3先丢分,打马竞+西汉姆1胜1平可争2冠军

体育知多少
2026-05-05 06:16:42
94年单亲爸爸征婚贴,为何纷纷说避雷!网友:讲话云山雾罩

94年单亲爸爸征婚贴,为何纷纷说避雷!网友:讲话云山雾罩

另子维爱读史
2026-05-04 21:41:29
国旗挂在更衣室!吴宜泽彰显决胜局铁血意志,大心脏台球皇帝叹服

国旗挂在更衣室!吴宜泽彰显决胜局铁血意志,大心脏台球皇帝叹服

杨华评论
2026-05-05 06:30:35
惯子如杀子!孩子这几种表现说明已经被惯坏了,再不改就来不及了

惯子如杀子!孩子这几种表现说明已经被惯坏了,再不改就来不及了

木言观
2026-04-29 22:28:49
恒生科技指数跌超2%,现报4876.910点

恒生科技指数跌超2%,现报4876.910点

每日经济新闻
2026-05-05 09:45:07
世乒赛5月5日:国乒男团淘汰赛首战,为避免3连败,王皓如何排兵

世乒赛5月5日:国乒男团淘汰赛首战,为避免3连败,王皓如何排兵

体育大学僧
2026-05-05 08:28:14
出场5分钟 一球制胜!37岁桑切斯救主:带队逃离西甲降级区

出场5分钟 一球制胜!37岁桑切斯救主:带队逃离西甲降级区

叶青足球世界
2026-05-05 10:28:14
特工、逆向工程、举国发力,苏联用尽一切手段造芯片,输在哪了?

特工、逆向工程、举国发力,苏联用尽一切手段造芯片,输在哪了?

差评XPIN
2026-05-05 00:09:30
无人机禁飞之后,大量北京网友低价进行甩卖

无人机禁飞之后,大量北京网友低价进行甩卖

映射生活的身影
2026-05-02 22:42:01
2026-05-05 12:55:00
赛博兰博
赛博兰博
专注捣鼓AI效率工具,试图在这个时代留下数字分身的探索者。
2114文章数 26关注度
往期回顾 全部

科技要闻

OpenAI/Anthropic同日被曝拉拢华尔街建合资公司

头条要闻

媒体:霍尔木兹海峡彻底变天 中东局势被推至悬崖边缘

头条要闻

媒体:霍尔木兹海峡彻底变天 中东局势被推至悬崖边缘

体育要闻

全世界都等着看他笑话,他带国米拿下冠军

娱乐要闻

英皇25周年演唱会 张敬轩被救护车拉走

财经要闻

五一假期,中国年轻人的“首尔病”犯了

汽车要闻

同比大涨190% 方程豹4月销量29138台

态度原创

游戏
亲子
时尚
健康
教育

国产猎奇恐怖大作《人窟》试玩!以鲁迅作品为灵感

亲子要闻

为什么古代育儿总离不开这两样东西?

参观了设计师花7年打磨的家,太开眼了!

干细胞治烧烫伤面临这些“瓶颈”

教育要闻

听课猛如虎,做题二百五

无障碍浏览 进入关怀版