剖析pip ssh-decorate供应链攻击

转载 华蒙  2018-05-10 16:59 

 

文/图 阿里安全猎户座实验室

 

近日,国外媒体有安全人员爆出Python pip ssh-decorate被发现存在后门代码!对,又是pip污染。

 

pip是python的开源包资源库。然而,这个开源库的管理是十分松散的。尤其在安全方面并没有严格的审核机制。一个用户只需要一个email即可注册账户,然后即可上传其源文件到pip资源中。而这个pip资源是被世界上所有python用户使用下载的。如果有人夹杂恶意代码上传了某个包,并以常见程序的名字命名,比如zip,ssh,smb,ftp。那么当有用户尝试搜索并下载使用这个名字的包时,这个用户就会中招,可谓神不知鬼不觉。这就是存在于pip中的供应链安全问题。回头看,针对pip的攻击已经并不新鲜,早在几年前就有国外研究者进行过类似实验。而真正让大家重视起来是在2017年,国内白帽子也针对pip源进行了投毒测试,结果令人震惊,各大厂商主机纷纷被感染。但是无论如何,之前我们看到的全部都是以渗透测试为目的的pip污染事件,而这次,我们看到的真正的backdoor!我们看一下其具体技术相关的内容。

 

ssh-decorate是一个github开源项目,其地址:https://github.com/urigoren/ssh_decorate。其功能应该是实现类似ssh client一样的功能,python实现,提供一些更友好的接口。现在这个工程已经被原作者删除干净,只有google cache中的可以看一下其之前的内容。在pypi上的ssh_decorate的地址是:https://pypi.org/project/ssh-decorate。当前的恶意包也已经被pypi移除,目前页面也无法找到了。

 

这个backdoor的事件最早被爆出是reddit上的用户发帖,并且贴出了恶意代码片段,如图1所示。从图中可以看出,恶意代码的实现是比较直接的,没有代码加密、混淆之类的对抗手段。主要的动作就是发送ssh服务器的用户名,密码,ip地址,端口,私钥信息到远程服务器。服务器地址:http://ssh-decorate.cf/index.php。这其中的很重要一点就是其收集了密码和私钥信息。有了这些信息,相当于盗取了ssh服务器的账户。再看这个攻击者的服务器网址,可见域名还是有很大迷惑性的,使用ssh-decorate字符串。另外,有安全研究人员通过其DNS Record系统发现这个域名注册时间是2018-05-08。也就是这次攻击这个域名的存活期,其实还比较短。

 

 

 

图1

 

 

那么,一个很重要的问题:这个pip的恶意包到底是怎么来的呢?实际上ssh-decorate这个开源包存在github和pypi都已经很久了,作者是urigoren。那么,为什么这个pypi上的包被插入了恶意代码了呢?原作者没必要这么做。终于,通过github的一个issue我们发现了原因。这个issue是一个发现恶意代码的用户质问开发者urigoren,为什么其pypi源中包含有恶意代码。这个issue已经被删除,但是可以从cache链接https://webcache.googleusercontent.com/search?q=cache:vjUIkPX1-0EJ:https://github.com/urigoren/ssh_decorator/issues/11+&cd=6&hl=zh-CN&ct=clnk 查看,同时,图2,图3是也是来源于这个issue的讨论的截图。

 

 

 

图2

 

 

图3

 

 

通过对话,我们得出推测:urigoren的pypi账号很可能被黑了。这样导致,攻击者利用他的账号就可以push更新包到pypi,这就造成了github是好的代码,但是pypi的包已经被污染。经过这个事情,urigoren一气之下(也许是惊吓)删除了github和pypi的所有相关repo。对于这个情况,Pypi之前已经我们提过,其安全很脆弱,其账户体系也是一样的。当然,到底是原作者使用弱密码还是pypi有其他弱点来让攻击者达到最后盗取其账户,这个我们暂时不得而知。但是,这是一种巧妙的攻击方式。黑掉一个缺乏安全意识的开发者的账户并不那么复杂,而这个开发者的背后可能掌管着世界级的开源应用的代码更新权限。这又是一个相对低成本的攻击。

 

本文地址:https://newdun.com/news/960.html
关注我们:请关注一下我们的微信公众号: NiudunX
温馨提示:文章内容系作者个人观点,不代表牛盾网络Newdun.com®对观点赞同或支持。
版权声明:本文为转载文章,来源于 华蒙 ,版权归原作者所有,欢迎分享本文,转载请保留出处!

发表评论


表情