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

近日,国外媒体有安全人员爆出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/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/search?q=cache:vjUIkPX1-0EJ:https://github/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://softsec.security.alibaba)了解更多信息,现在加入PK还来得及!

python怎么装pip_python中怎么安装pip相关推荐

  1. Python中如何安装pip库

    Python中如何安装pip库 新手第一次写博客(紧脏~) 建议先更新到最新的pip 官网附上www.python.org(官网上的东西是最基础也是最全的,还有Python基础教程!!!巴适得很) 我 ...

  2. Python在Windows系统中的安装

    Python在Windows系统中的安装 想要使用好Python这样一门解释性的语言,当然,掌握好安装方法也是极为重要的,安装不好Python,有可能会为你做开发或者在其他时候带来许多不必要的麻烦.接 ...

  3. 安装python环境及pip_Python环境搭建及pip的使用

    Python环境搭建及pip的使用 Skip to end of metadata Created by wangzenan, last modified on Oct 09, 2018 Go to ...

  4. mac安装完python怎么打开-MAC中怎么安装python

    转自:https://blog.csdn.net/hou_manager/article/details/79555809 一.Python 介绍 Python介绍 Python3在2008年12月3 ...

  5. python中怎么安装pip-python中怎么安装pip

    文/图 阿里安全猎户座实验室 近日,国外媒体有安全人员爆出Python pip ssh-decorate被发现存在后门代码!对,又是pip污染. pip是python的开源包资源库.然而,这个开源库的 ...

  6. python扩展库导入方式_使用pip安装Python扩展库的方法

    本文节选自作者的<Python编程基础及应用>视频教程.Python编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 使用pip进行安装 ...

  7. python快速安装pip

    1.下载官网的pip.py文件 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 2.本机可能安装多版本python,想给哪个版本安装pi ...

  8. python安装 pip_多版本Python安装pip及pip版本管理终极教程

    有时候电脑或服务器里需要安装多个版本的Python,比如Python2.7.Python3.5.Python3.6.同时存在多个版本的Python,如何安装对应的pip成为一个头疼的问题,本文从原理入 ...

  9. python需要安装的库_使用python学习【机器学习】需要安装的库~

    ---------------------------------------------------------------------------------------------------- ...

最新文章

  1. oracle 授权 增删改查权限_linux suid,sgid,sticky-bit三种特殊权限简介
  2. 请写出查询该表中成绩最大值的sql语句_SQL-汇总分析
  3. .NET 判断进程是否运行 是否未响应
  4. 处理数字_3_计算表的行数
  5. 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll的解决方法
  6. HttpServletResponse.getWriter().print乱码,request.getHeader乱码,解决方法
  7. Exchange Server 2016管理系列课件22.通讯组概述
  8. 计算机网络中的HTML,计算机网络分类有哪些
  9. 微信小程序+ColorUI
  10. python语言与存货管理,(二)实现对库存管理系统的模块化编程
  11. eclipse 自动下载源码插件
  12. arnold和redshift渲染器
  13. 微信公众号第三方平台授权流程
  14. python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并
  15. 2022长安杯复盘——lucid凡
  16. 英语6级词汇量【原创】
  17. 小熊开发板STM32工具出现错误Error:an error occured while uploading data from the virtual partition 0xF1
  18. vue 打开html流_在vue项目中添加一个html页面,开启本地服务器
  19. 阿里巴巴暑期实习生笔试
  20. 基于MQTT和nodeMCU的音乐弹奏APP设计

热门文章

  1. 【python】基于Socket的聊天室Python开发
  2. 新人10大接单平台推荐
  3. (附源码)APP个人健康管理 毕业设计202031
  4. Android设置TextView可滚动
  5. Jmeter测试TCP百万连接
  6. 打印九九口诀表 — C语言
  7. ubantu下相关的应用软件的集合
  8. 传奇开服需要多少钱?传奇服务端建立不了行会,传奇开区时点创建行会没反应的解决方法
  9. 《炬丰科技-半导体工艺》晶圆表面金属粘附机理和清洗方法
  10. 【C语言】warning: implicit declaration of function ‘xxx’ [-Wimplicit-function-declaration] 的解决方法