Python Fake Package引发的恣意代码履行危险

Python Fake Package引发的恣意代码履行危险本文将结合一个实例解说装置Fake Python Package时或许引起的恣意代码履行危险(原理同Package 垂钓,所以装置Python Package

本文将结合一个实例解说装置Fake Python Package时或许引起的恣意代码履行危险(原理同Package 垂钓,所以装置Python Package 一定要当心哦)以及相应的缓解办法。
一般来说,运用Python Packag...

本文将结合一个实例解说装置Fake Python Package时或许引起的恣意代码履行危险(原理同Package 垂钓,所以装置Python Package 一定要当心哦)以及相应的缓解办法。
一般来说,运用Python Package履行一些特定代码有两种途径:
在Package 履行的时分,称为运行时恣意代码履行;
在Package 装置时就触发恣意代码履行, 称为装置时恣意代码履行。
本文以后者为例进行演示与阐明。
0×01 试验与剖析
1、演示
歹意的Package结构如下:

十分简略,便是一个装置进口文件setup.py (setup.cfg用于预先设置一些装置选项)。
当咱们履行python setup.py install 或许 更常用的指令 pip install freebuf/ (这儿freebuf后加上一个’/'表明装置本地名为freebuf 文件中的源码,假如freebuf这个包经过源码包方式上传至Pypi的后,便可省掉‘/’) 的时分便会触发预先设置好的歹意代码,演示如下:

留意到上图中的Running setup.py了吗,这代表这时歹意代码现已开端履行,歹意代码会在/ 目录下写入一个明文Freebuf的文件,内容为:“欢迎我们来Freebuf投稿!”

2、剖析
这是怎样完成的呢? 答案便是Hook setup.py install 进程 ,原理如下:
setuptools 包供给了一个装置类 : setuptools.command.install.install,只需承继这个类,然后重写其run办法,那么就能够到达hook pip install xxx/ 或 python setup.py install 行为的意图。
完好hook 需求2步。
第一步,重写装置类,即重写原生install 类的ru 办法:
class CustomInstallCommand(install):
重写setuptools.command.install.install 的run办法,能够完成调用自定义函数,在pip install 的时分触发
def run(self):
custom_function()
install.run(self)
这儿的custom_function 就能够用来履行一些羞羞的操作(比方本例中的在/ 目录下写入一个Freebuf的文件,内容为: 欢迎我们到Freebuf投稿!),你懂得。
第二步,在setuptools.setup 设置中指明重写后的装置类:
setuptools.setup(
...
,
cmdclass={
'install': CustomInstallCommand,
},
)
0×02 怎么防备
1、关于习气下载源码包,然后本地装置的同学
在装置前检查一下setup.py中是否有歹意代码。 当然这或许难为一些同学了,那就主张你不要以root权限进行装置,比方普通用户可运用pip –user 来防止运用root权限装置包,然后从靠谱的站点下载Python Package 源码包。
2、关于运用pip 进行Package装置的同学
仅装置二进制的包,即选用wheels机制分发的源码包,后缀为.whl, 能够经过–only-binary 指定仅装置二进制软件包,比方:
pip install --only-binary :all: Django

假如不加–only-binary,则下载的是源码包,如下:

这儿弥补一下关于wheels的阐明(概况点击0×03中的参阅链接):

简略的讲,经过wheels机制分发的软件包,能够理解为在上传package时将现已在本地履行过setup.py的成果,然后打包上传了。
下载后再次装置的时分就不会再履行setup.py了,故也就无法经过setup.py履行歹意代码了。
​pip 现在支撑源码包(.tar.gz后缀,里边包括setup.py文件,装置时会履行setup.py)装置和whl二进制包装置,所以得当心点。
校验下软件包的hash
​ –require-hashes ,加上这个装置选项
擦亮双眼,别被披着羊皮的狼给骗了(比方类似姓名或许同形贰言字的包给骗了)
3、主张Pypi 加大审阅力度,尽或许削减歹意软件包的上传
0×03 参阅资料
https://blog.zengrong.net/post/2169.html
https://packaging.python.org/discussions/wheel-vs-egg/
https://paper.seebug.org/326/
https://pythonwheels.com/
https://github.com/pypa/pip/issues/4735
https://cuyu.github.io/python/2019/08/07/%E4%BD%BF%E7%94%A8setuptools%E5%AE%9E%E7%8E%B0pip-install%E6%97%B6%E6%89%A7%E8%A1%8C%E6%8C%87%E5%AE%9A%E8%84%9A%E6%9C%AC
 

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/7604.html

(0)

相关推荐

  • 祖宗模拟器折相思安卓下载安装-祖宗模拟器游戏下载2022免费中文版v1.0.7官方版

    祖先模拟器游戏下载2022免费中文版,以文字人生模拟为主的全新经营模拟类手游。 可以定制出生、结婚、家人等内容。 该版本已经被破解,内置功能菜单,去除广告,玩家可以完全按照自己的想...

    阅读 2022年10月26日
  • 我爱你罗茜经典台词(爱你罗茜台词)

    爱你罗茜中的经典台词 爱你罗茜中的经典台词有哪些2021-12-18 18:18:47“你应该找一个时时刻刻都爱你的人,一个永远陪着你的人,一个爱你全部的人,特别是你的缺点”。有时你没发现,你曾经遇过最美好的事,就在你眼

    生活 2021年12月18日
  • 茱萸怎么读,茱萸比喻男子的什么部位

    茱萸怎么读,茱萸比喻男子的什么部位茱萸茱萸,是芸香科几种近缘植物的成熟果实。我们儿时学习的唐诗《九月九日忆山东兄弟》里的“遍插茱萸少一人”,指得就是这个植物。因为主产于江浙一带,所以和产地联系起来,又称为吴茱萸。《神农本

    攻略 2021年11月19日
  • 淘宝权重哪里看,怎么看淘宝店铺权重是否降低了

    淘宝权重,淘宝权重如何查看,淘宝权重有哪些淘宝权重如何查看 现在大家在淘宝都是非常看重权重的,尤其是大家开店之后权重越高,店铺获得的流量也就越多,但是权重想要获取并不是一件容易的事情,大家知道淘宝权重如何查看吗?淘宝权重

    电商 2021年11月17日
  • 雅思培训需要多少钱,雅思考试费用大概要多少钱?

    雅思培训需要多少钱,雅思考试费用大概要多少钱? 在海外雅思指导机构行业,雅思学习费用高低各不相同。雅思指导机构的费用差异在哪里?实际上,决定雅思指导机构收费的理由有很多。以下全面说明仅供参考。1、课程人数一般来说,大

    攻略 2021年10月16日
  • hhhh是什么意思呢

    hhh 这个就比较容易猜到了,hhh就是“哈哈哈”的缩写。 巧了,英文中也有类似的词:LOL,是“laughing out loud”的缩写,也就是哈哈大笑的意思。 例句: He ...

    攻略 2022年5月17日