相信下载并使用开源软件包一定是每个开发者的必备技能,毕竟站在巨人的肩膀上看风景才能看得最远,然而,你使用的开源代码一定是安全的吗?
近日,一名安全研究人员发现,很多在Python官方软件包存储库(PyPI)上下载了大约5,000次的软件竟然是假冒软件!同时这些假冒软件包还暗含秘密代码,能在被感染机器上安装加密软件。
打错一个字母,私人计算机竟一不小心称为”矿机“?
来自安全公司Sonatype的研究员Ax Sharma报告说,在PyPI存储库中,可用的恶意软件包泛滥。这些恶意软件包的名称通常模仿了那些已经可用的、合法的、而且被广泛使用的软件包的名称。
因此当用户不小心输入错误名称,例如将合法且流行的包matplotlib的名称输入为“mplatlib”或“maratlib”而不是时,就成功落入了所谓typosquatting attacks(域名抢注攻击)的圈套。
Sharma发现了六个会偷偷在用户计算机上安装加密挖矿软件的软件包,这些软件不仅会使用受害者被感染的计算机来挖矿,还会将挖矿所得秘密存入攻击者的钱包。所有这六个软件都是由PyPI用户名nedog123的人发布的,最早的发布时间是今年4月份。包名称和下载号分别是:
maratlib:2,371
maratlib1:379
matplatlib-plus:913
mllearnlib:305
mplatlib:318
learninglib:626
这些包的名称与许多被广泛使用的软件包相似但又不完全一样,用户很容易被”忽悠“。包中的恶意代码藏在每个包的setup.py文件中,这些代码会导致受感染的计算机使用ubqminer或T-Rex加密矿工来挖掘数字货币并将其存入以下地址:0x510aec7f266557b7de753231820571b13eb31b57。
垃圾软件泛滥,擦亮眼睛最重要
PyPI,全称是:Python Package Index,它是Python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。因此在PyPI上利用垃圾软件包发起攻击的事件屡见不鲜。
五月份就有报道称,有黑客通过发布垃圾软件包发起洪水攻击,这些软件包的名称多采用来自BT种子或者其他在线盗版内容的电影名称命名,甚至名称中还包含年份、在线、免费等字样。例如“watch-army-of-the-dead-2021-full-online-movie-free-hd-quality”。
经调查得知,这些软件包不完全是垃圾软件,为了进一步迷惑用户,它们会从合法Python软件包中窃取的功能代码和作者信息。例如研究者一个名为"watch-army-of-the-dead-2021-full-on-line-movie-free-hd-quality"的垃圾邮件包就包含了作者信息以及来自"jedi- language-server"PyPI包的一些代码。
PyPI经常被滥用的事实众所周知,其中最惨痛的教训发生在2016年,有一名大学生欺骗了17,000名程序员运行他发布的粗略脚本。
这项令人大开眼界的研究是由汉堡大学学生Nikolai Philipp Tschacher进行的,他为了写毕业论文,在PyPI跟众多程序员开了一个大玩笑,他使用了“域名抢注”攻击的变体,首先在PyPI、RubyGems和NPM(分别是Python、Ruby和JavaScript编程语言的开发人员的社区网站)上确定了214个下载最广泛的包。然后,他将他的代码上传到这些站点,并为它们提供了与214个软件包非常相似的名称。
Tschacher的攻击并非恶意的,他的脚本也会为计算机提供一个警告,通知开发人员他们可能无意中安装了错误的软件包。但在此之前,该代码向大学计算机发送了一个Web请求,以便他可以跟踪他的冒牌代码被执行了多少次以及是否获得了管理权限。
由于Tschacher的行为是依赖于混淆,而不是彻头彻尾的欺骗,来诱使人们安装他的冒牌软件,因此目前尚不清楚该实验是否违反了道德甚至法律界限。尽管如此,Tschacher的实验所传授的教训还是值得我们思考的。
其实这些攻击是很低级的,同时也是很简单的,开源代码本身就存在风险,因此建议各位开发者在下载并使用开源代码时,谨慎地对代码进行甄别,尤其是你的计算机资源非常重要且私密程度很高时,更要多加防范。
以上就是Python官方软件包存储库遇到安全危机的介绍,希望对大家有所帮助。更多编程基础知识学习:python学习网