ohmycodeape

开源项目 gin-vue-admin 借用 npm 分发恶意遥测代码

  •  
  •   ohmycodeape · 8h 19m ago · 927 views

    背景

    最近想开发一些个人的小项目,试试 AI 编程.不想在基础的用户注册和权限管理之类的地方浪费时间所以就想找一个合适的 admin 项目来开箱即用.最后找到了 gin-vue-admin 这个项目,下面简称 gva,由于检查其 github 仓库后发现最新版本已经更改了开源协议,新的协议我不太熟悉没有看懂.所以特意找了仍是 Apache2.0 协议的 2.9 版本来使用.

    项目地址: https://github.com/flipped-aurora/gin-vue-admin 该项目作者应该也在论坛内,之前检索此类项目时看见过作者发文推荐.

    问题现象

    实际使用的过程中,明明是个人使用,却遇见了好几次偶尔弹出一个全屏幕的大框提示我未获得授权,需要购买授权的情况.导致使用体验很不好.所以就借助 AI 一起进行了一下分析.

    现象原因

    省略排查过程,直接说结论,该项目依赖中包含以下两个包,包内存在恶意遥测代码,具体如下:

    [email protected]

    该包看起来像是 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 等特定情况,防止自动扫描被扫到.

    [email protected]

    该包看起来像是处理 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 软件包分发的方式加载这类恶意代码,进而还逃避了一般用户对开源项目的源代码检查,是否已经越界了,各位对此怎么看?

    16 replies    2026-08-20 00:31:18 +08:00
    loading
        1
    loading  
       8h 4m ago via Android
    感谢提醒,我一直用一个几年前的版本,自己深入改了一个完全没外部链接的。

    脚手架还是要自己费点心的。
    YEX1024
        2
    YEX1024  
       7h 53m ago
    这个项目我记得字段大小写混用,说什么系统字段大写开头,强迫症很难受
    ohmycodeape
        3
    ohmycodeape  
    OP
       7h 51m ago
    @loading 是的 我是前几天发现的不太对劲 借助 ai 研究了几天 想试试 ai 开发 变成了 ai 分析了
    ohmycodeape
        4
    ohmycodeape  
    OP
       7h 51m ago
    @YEX1024 那倒确实没注意 其实本来不想读代码的 就是想找个项目框架省点心基础的东西自己不弄了 没想到这个情况
    YEX1024
        5
    YEX1024  
       7h 49m ago
    @ohmycodeape 我开始学 go 的时候准备参考这个项目的,后面自己用 chi+sqlc 搭了个简单的
    ohmycodeape
        6
    ohmycodeape  
    OP
       7h 48m ago
    @YEX1024 最后发现还是自己搭出来的顺手是吧
    YEX1024
        7
    YEX1024  
       7h 44m ago
    @ohmycodeape 学习嘛,就是自己造轮子
    ohmycodeape
        8
    ohmycodeape  
    OP
       7h 42m ago via Android
    @YEX1024 确实。我也参考你的再看看。成品的还有点不太敢用了。
    YEX1024
        9
    YEX1024  
       7h 34m ago
    @ohmycodeape 我感觉我这个不太适合参考,,自己用都有点偏门 你可以看看 https://git.ua42.com/beggin/blog-server
    ohmycodeape
        10
    ohmycodeape  
    OP
       7h 30m ago via Android
    @YEX1024 哈哈,get 。先瞄瞄。
    nrtEBH
        11
    nrtEBH  
       7h 25m ago
    公司 IT 已经禁止使用 npm 公共源了
    ohmycodeape
        12
    ohmycodeape  
    OP
       7h 23m ago via Android
    @nrtEBH 最近 npm 出事好像不少。凭证泄露导致供应链新版本恶意投毒那种。
    uxff
        13
    uxff  
       7h 22m ago
    👍
    GeruzoniAnsasu
        14
    GeruzoniAnsasu  
       7h 9m ago   ❤️ 1
    有 LLM 之后这种脚手架已经完全没有使用的必要了。而且用别人写的代码总归有很多闹心的问题,何况 gva 的开发团队自己水平也就一般,你遇到问题还要给上游修 bug 更心力交瘁
    ohmycodeape
        15
    ohmycodeape  
    OP
       7h 5m ago via Android
    @GeruzoniAnsasu 本来觉得用户 菜单 权限这些基础的东西连开发加测试验证,是不是也比较消耗时间。
    sholmesian
        16
    sholmesian  
       5h 5m ago via iPhone
    刚把项目里的这些组件清理了一遍,感谢🙏
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   956 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 21:36 · PVG 05:36 · LAX 14:36 · JFK 17:36
    ♥ Do have faith in what you're doing.