最近想开发一些个人的小项目,试试 AI 编程.不想在基础的用户注册和权限管理之类的地方浪费时间所以就想找一个合适的 admin 项目来开箱即用.最后找到了 gin-vue-admin 这个项目,下面简称 gva,由于检查其 github 仓库后发现最新版本已经更改了开源协议,新的协议我不太熟悉没有看懂.所以特意找了仍是 Apache2.0 协议的 2.9 版本来使用.
项目地址: https://github.com/flipped-aurora/gin-vue-admin 该项目作者应该也在论坛内,之前检索此类项目时看见过作者发文推荐.
实际使用的过程中,明明是个人使用,却遇见了好几次偶尔弹出一个全屏幕的大框提示我未获得授权,需要购买授权的情况.导致使用体验很不好.所以就借助 AI 一起进行了一下分析.
省略排查过程,直接说结论,该项目依赖中包含以下两个包,包内存在恶意遥测代码,具体如下:
该包看起来像是 SVG 自动导入与图标处理,实际上包含一大段混淆过的注入代码,构建过程中会读取 global["gva-project-name"] global["gva-secret"] 变量,生成一个名为 svg-transform 的插件,还会向整个页面注入不可见的一个图片延迟远程加载 https://plugin.gin-vue-admin.com/api/shopImage/view?name=lock.svg 这个图片地址.如果因为什么原因导致加载失败,则会呈现出大范围的一个弹框提示购买授权,而对方服务器就可以截获我的出口 ip,ua 甚至 reffer 等信息.该段注入逻辑还会主动跳过 localhost,HeadlessChrome,PhantomJS 等特定情况,防止自动扫描被扫到.
该包看起来像是处理 Vue Transition 多根节点校验的,但是实际上该包也包含混淆过的代码,检测上方生成的插件 svg-transform 是否存在,在代码构建阶段遍历插件列表,如果有人发现了上方那个包的不对劲之处移除了上方的包,则该包会加载恶意代码直接让输出的 index.html 文件变成空字符串导致构建完后不能用.
其他我没有深入分析但是也不太对劲的包还有 vite-vue-path-map vite-utils-svg-icon 等,不确定是否有问题.
以上两个包搭配默契,构成对于代码开发和运行环境的检测和运行干扰,但是以上两个包并非同一个作者维护.第一个包的作者是 flipped-aurora,是 gva 项目的开发作者.第二个包的作者是 azir-arc,无法确认二者是否为同一个人但是这两个包存在很明显的搭配使用的情况.
https://socket.dev/npm/package/vite-auto-import-svg
https://socket.dev/npm/package/vite-check-multiple-dom
这个检测网站对两个包分别给出了橙色和红色的提醒
该项目存在通过 npm 加载恶意软件包的方式来遥测用户信息,判定是否存在商业侵权行为.从该项目近期新的大版本变更了开源协议的现象也可以发现作者在积极寻求商业化,但是通过公开的 npm 软件包分发的方式加载这类恶意代码,进而还逃避了一般用户对开源项目的源代码检查,是否已经越界了,各位对此怎么看?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.