量子位 发表于 2021-6-25 05:17:21

只是pip安装输错字母,你就可能中了挖矿病毒

<p style="margin:20px 0px">用 PyPI 包管理工具安装 python 软件很方便,但你今后要三思而后行了。</p><p style="margin:20px 0px">当输入这样一句命令后:</p><p style="margin:20px 0px">pip install openvc</p><p style="margin:20px 0px">你也许并未发现异常,仔细一看可能才会察觉自己刚刚手抖,把 opencv 输错了。</p><p style="margin:20px 0px">但此时安装命令已经开始运行了,因为 openvc 其实也是一个真实存在的软件包,不过却是个恶意软件包。</p><p style="margin:20px 0px">最近,安全公司 Sonatype 发现,很多恶意软件都伪装成常见的 PyPI 包,往往只差几个字母。</p><p style="margin:20px 0px">随着加密货币的火爆,黑客们开始把挖矿软件植入其中。如果用户手打 pip 安装命令手滑一下,自己的电脑就可能变成 " 矿机 "。</p><p style="margin:20px 0px"><b>PyPI 里的挖矿软件</b></p><p style="margin:20px 0px">常用的绘图工具包<strong>matplotlib</strong>首当其冲。PyPI 今年有多个与之类似的恶意软件包,如<strong>mplatlib</strong>、<strong>maratlib</strong>(记住这个软件包名称)等等。</p><p style="margin:20px 0px">这类 " 李鬼 " 共有 7 种之多,都是一个叫做<strong>nedog123</strong>的用户上传到 PyPI。其中像 maratlib 还是今年 4 月份发布的。</p><p style="margin:20px 0px">这一组恶意软件以 "maratlib" 为核心,其他软件都是把它作为依赖项,比如 "learninglib" 就是这种情况:</p><p style="margin:20px 0px">这代码还算是比较 " 直白 " 的,有些恶意软件将依赖项稍微隐藏了一下,比如 "mplatlib":</p><p style="margin:20px 0px">它把依赖项伪装成 "LKEK",从第 47 行代码可以看出 LKEK 就是 maratlib。</p><p style="margin:20px 0px">接着 Sonatype 的安全工程师又对 maratlib 1.0 安装包进行了分析,发现它已经伪装得很深了,使用一般工具已经很难分析这些代码里到底藏了什么。</p><p style="margin:20px 0px">他只好把版本倒回 0.6,这个版本的 maratlib 没有对代码做伪装,它会从 GitHub 下载和运行 Bash 脚本代码:</p><p style="margin:20px 0px">但服务 bash 脚本的网址抛出 404 错误,说明这个地址已经被 GitHub 删除 , 或者被黑客 nedog123 废弃不用。</p><p style="margin:20px 0px">经过更深的挖掘,这名安全工程师发现,黑客将代码迁移到了 "Marat Nedogimov" 和 "maratoff" 用户名下。</p><p style="margin:20px 0px">这个 aza2.sh 脚本会下载一个名为 "Ubqminer" 的挖矿软件,而上图中那一长串字符就是黑客的数字钱包地址。</p><p style="margin:20px 0px">至此,案件已经告破。好消息是,PyPI 已经删除了这些恶意软件包。</p><p style="margin:20px 0px">但是,据 Sonatype 公司统计,这 7 个李鬼软件已经总共被下载超过<strong>5000 次</strong>。</p><p style="margin:20px 0px"><b>恶意 PyPI 包防不胜防</b></p><p style="margin:20px 0px">这次发现的 maratlib,可能只是 PyPI 恶意软件包的冰山一角。PyPI 包管理工具的问题一直为用户所诟病。</p><p style="margin:20px 0px">今年 2 月,有人将 CUDA 加速包 CuPy 换成了恶意软件。还有一位白帽黑客发现,只要向公共库上传 PyPI 软件包,就能轻易替换掉私有化的同名软件包,大大增加了科技公司中毒风险。</p><p style="margin:20px 0px"><strong>△</strong> 每月 PyPI 恶意软件包数量<strong></strong></p><p style="margin:20px 0px">早在 2016 年,就有人用相似名称的方法发布 PyPI 恶意软件包,骗过了 1.7 万名程序员,导致这个恶意程序被运行了 4.5 万次,甚至连美国军方都中招了。</p><p style="margin:20px 0px"><b>使用 pip 请谨慎</b></p><p style="margin:20px 0px">那么,我们如何预防被安装恶意的 PyPI 软件包?</p><p style="margin:20px 0px">你以为只要认真检查安装命令就行了?No!</p><p style="margin:20px 0px">由于 PyPI 绝大部分软件包都是第三方编写和维护的,这体现了开源的优势,但也埋下了审核不严的危险种子。</p><p style="margin:20px 0px">如今,很多软件都需要安装依赖项,个人不可能一一检查,甚至大公司也做不到。有时候一个软件里写了上百个依赖项,根本没法审查代码。</p><p style="margin:20px 0px">最好的办法就是监控 setup.py 的行为,在安装不太放心的软件包时,可以在容器中通过 pip 安装包,同时收集系统调用和网络流量,来分析其是否有恶意行为。</p><p style="margin:20px 0px">最后再提醒一下大家,不仅 pip 命令有风险,使用 npm、gem 等软件包安装命令也可能中毒,一定要对来源不明的软件包仔细核查。</p><br>免责声明:如果本文章内容侵犯了您的权益,请联系我们,我们会及时处理,谢谢合作!

小柔 发表于 2021-6-25 06:01:36

这就是为啥要建私有库
页: [1]
查看完整版本: 只是pip安装输错字母,你就可能中了挖矿病毒