天问系统是专门面向供应链安全领域的分析平台,曾多次在TSC,BCS等会议上分享有关供应链安全的事件和解决方案。同时我们也一直在关心开源生态的供应链安全问题,并在今年率先推出了Python供应链威胁感知能力。

PyPI,作为 Python 的官方第三方软件包存储库,一直广受开发者欢迎,所有人都可以下载第三方库或上传自己开发的库到 PyPI,但也正因如此,这些流行存储库时常被滥用,许多恶意软件藏匿其中,加之其官方第三方存储库的身份,开发者容易盲目信任并安装这些来源的软件包。因此一旦有恶意软件成功上传至这些存储库中,造成的杀伤力都不容小觑。

天问系统每日监控最新上传到PyPI的第三方库,并且通过静态扫描源代码,动态沙箱运行依赖库的方式,及时发现python开源生态中隐藏的供应链攻击,接下来给大家分享一下最近持续时间长达一周的一起python供应链攻击。

1 Python供应链模块自动化检测typosquat行为

为了发现typosquat攻击,本文工作计算每日新上传的包与历史包的包名相似度,重点关注相似度极高的伪装包。

1.1 Jackson事件发现

本文近期发现作者Jackson在PyPI官方平台大量上传与正常第三包包名高度相似的伪装包,于7月30日上传,目前PyPI已删除Jackson上传的大量包。本文采用自设计的包名相似度算法,计算新上传包与正常包的名称相似度。

以近期发现的ymal包为例,如下为ymal包相关信息。其中ymal为新上传包名,mal为正常包名。ymal与mal达到0.75相似度,达到Python供应链胁感知模块设定的阈值,同时结合动态沙箱运行ymal包的行为分析结果,Python自动化告警新上传的ymal包。

1.2 Jackson事件分析

基于天问供应链平台的Python供应链自动化威胁感知模块的近两日采集的数据,包括源数据统计、动态沙箱运行新包、匹配规则过滤等流程,共统计到作者 “Jackson”上传恶意包名混淆包189个,取其中一个为例,将会反馈如下信息。

作者Jackson新上传的包,含有疑似恶意行为,诸如统计用户系统,IP,用户名,计算机名并回传到地址:175.24.100.2:8000等。

以下为本机测试结果:

1.3 Jackson包与PyPI官方包top10000对比

作者Jackson批量上传的混淆包名行为严重影响pypi源生态,已被pypi官方删除。为了研究新上传包对目前PyPI官方平台产生的影响及潜在危害。本文将Jackson近期上传包与官方包排名比对,同时统计新上传包的下载量,得到如下数据(本文仅展示30个包)

序号 作者Jackson上传包名 与官方相似包名 官方相似包名排名 作者Jackson上传包下载量
1 3-solver z3-solver 5559 61
2 pyclippre pyclipper 2894 54
3 ymal mal 6188 111
4 5py py 61 63
5 pyclippr pyclipper 2894 54
6 pycocotols pycocotools 1618 57
7 pycoctoools pycocotools 1618 49
8 aaconda anaconda 3200 57
9 aanconda anaconda 3200 57
10 datasest dataset 3408 41
11 botocor botocore 2 56
12 onnxrutime onnxruntime 631 42
13 updat update 4803 52
14 upate update 4803 37
15 sqlalchey sqlalchemy 60 41
16 opencv-cotrib-python opencv-contrib-python 1485 41
17 opencv-pytho opencv-python 317 54
18 opencv-pyhon opencv-python 317 45
19 gmllib3k sgmllib3k 1328 58
20 utis utils 1335 39
21 dcker docker 78 44
22 dcker-compose docker-compose 699 50
23 pyechats pyecharts 4774 48
24 mqr m2r 2904 51
25 openpxl openpyxl 153 51
26 krnia kornia 2401 41
27 kubernets kubernetes 314 52
28 dependencie dependencies 9399 52
29 outube-dl youtube-dl 333 48
30 pyinsatller pyinstaller 1366 49

以上对Jackson作者上传的大量包进行分析,但不意味Jackson作者所上传包均为恶意包。作者在包简介中标明上传包出于信息安全研究目的,并提示:Do not install this package, It will upload your name and host name。

2 Python供应链平台目前工作

通过以上案例可知,Python供应链生态安全研究是极其重要的工作。目前技术研究院的天问软件供应链平台中Python供应链威胁感知模块的相关工作正在进行。主要包括从PyPI官方源,豆瓣,清华等源同步包,包名相似度计算,包下载量统计,动态沙箱数据采集,规则提取,数据关联等。

3 Python供应链平台后续规划

天问软件供应链平台中Python供应链威胁感知模块目前主要支持PyPI源上第三包的扫描,后续会逐步完善其他源数据,迭代优化自动化检测规则。为推动供应链安全生态建设,后续星图实验室会继续公布已发现的恶意软件包具体信息,提高Python生态用户使用第三方包时安全性。