【天问】Python供应链模块自动化检测typosquat行为
/ / 点击 / 阅读耗时 8 分钟天问系统是专门面向供应链安全领域的分析平台,曾多次在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生态用户使用第三方包时安全性。