QCon 全球软件开发大会(北京站)门票 9 折倒计时 4 天,点击立减 ¥880 了解详情
写点什么

开源软件的供应链安全吗?黑客利用源代码传播恶意软件

2019 年 9 月 09 日

开源软件的供应链安全吗?黑客利用源代码传播恶意软件

过去一年,发生了一连串开源软件遭受供应链攻击的事件,并且态势愈演愈烈。就在最近,甚至发现 2 个独立的后门漏洞进入数十万服务器管理员下载的库中。



第一个曝光的后门来自 Webmin,这是一个安装量超过 100 万,基于 Web 的管理工具。根据 Webmin 开发人员 Jamie Cameron 称,去年 4 月左右,攻击者破坏了用于开发新版本程序的服务器。然后,恶意使用访问权分发了一个后门,导致这个后门被下载超过 900,000 次,并且可能已被数万个服务器主动使用。


未知的攻击者对名为 password_change.cgi 的 webmin 脚本进行了细微更改,此更改让攻击者能够通过特殊 URL 发送命令。


随后,受感染的 Webmin 服务器将以 root 权限执行该 URL。从 2018 年 6 月到上周末,1.890 版本下载次数超过 421,000 次,并在默认情况下启用后门。在 1.90、1.91、和 1.92 版本上,则有超过 942,000 多次下载,只有当管理员改了“允许更改过期密码”的默认设置时,后门才处于活动状态。而 sourceforge 是此次的主要分发源。


从 Shodan 搜索引擎收集的统计数据显示,成千上万的联网服务器运行了这些版本的 Webmin,尽管不排除其中一些服务器运行的 Webmin 是由 Github 或其他版本未经修改的代码构建的,不包括后门的来源,但造成的影响依旧巨大。


RubyGems 后门置入

RubyGems 存储库的十一个库中出现了第二个后门。


根据开发人员 Jan Dintel 的分析,该后门允许攻击者使用预先选择的凭据在受感染的服务器上远程执行命令。


该恶意软件包括各种其他功能,包括将环境变量(包含用于访问数据库、服务提供商和其他敏感资源的凭据)上传到位于 mironanoru.zzz.com.ua 服务器的代码里。并且,Rubygems 的工作人员还发现其中含有加密货币挖掘代码。


总而言之,Rubygems 数据显示,后门库的下载次数已经接近 3600 次。


目前,尚不清楚其余的 RubyGems 库是如何被感染的。RubyGems 工作人员也没有公开回复。


利用信任

Webmin 和 RubyGems 库的结果都是最新供应链攻击针对开源软件的表现。大多数人从已知开发人员的官方网站安装软件或更新的时候,不会深思。


因此,在过去几年,黑客越来越多地利用这种信任,通过源代码来传播恶意软件。


去年 10 月,发生了一连串的攻击事件,仅在一周之内就发生了 2 起针对开源项目的供应链攻击。第一个是 vestapp 控制面板接口,另一个是名为“Colourama”的软件包,它被放入了官方 Python 存储库。


一个月后,又出现了一个旨在从比特币钱包窃取资金的恶意代码,拥有 200 万下载量,被财富 500 强企业和小型初创企业使用。


负责后台软件的开源项目经理说,该恶意代码是针对使用 Copay 开发的比特币钱包的人而设计的,而 Copay 只是该恶意软件的受害者之一。


去年三月,研究人员发现另一个叫做 bootstrap-sasswa 的的 RubyGems 库也被置入后门。历史总是惊人地相似,上个月初,一个叫做 strong_password.的 RubyGems 库也发生类似感染。就像最近发现的感染 11 个 RubyGem 项目的事件一样,bootstrap-sass,strong_password 后门使用浏览器 cookie 功能,让攻击者能在受感染的服务器上执行代码。strong_password 后门还与 smiley.zzz.com.ua 域名进行了互动,而这个域名又与最近攻击中使用的 mironanoru.zzz.com.ua 非常相似。


供应链攻击变得更“容易”

事实上,除了开源软件,闭源软件也属于供应链攻击的牺牲品。


华硕两次被入侵,恶意更新税务会计软件 M.E.Doc 导致 2017 年 NotPetya 爆发,以及同年感染了 CCleaner 的另一个后门,这些事件都可以证明。为什么针对开源软件/项目的供应链攻击似乎更容易?因为很多公司不会在其庞大的贡献者群体中进行多因素身份验证和代码签名。


Atredis Partners 研发副总裁 HD Moore 表示:“最近的发现表明,这些问题越来越频繁,围绕软件包发布和管理的安全生态系统没有得到足够的改善。可怕的是,这些实例中的每一个都可能导致更多的开发人员帐户受到攻击(通过捕获的密码、授权令牌、API 密钥和 SSH 密钥)。攻击者可能有足够的凭据可以反复执行此操作,直到所有凭据都重置并放置了适当的 MFA 和签名。”


Moore 认为,开源供应链感染的影响通常难以衡量,因为后门应用程序可以被另一个软件包作为上游依赖项包含在内。而默认情况下,依赖管理工具推送最新软件包的方式,使得在后端依赖的情况下成功进行攻击的可能性更大。而开源攻击也会造成很大的损失,因为它们会影响用于执行电子邮件和提供网页等功能的服务器。


一旦服务器安装了一个后门应用程序,唯一办法就是执行一个完整的重建,但是这个任务非常繁琐艰巨, 在收到恶意篡改包的 100000 个或更多系统中肯定会有很多部分被忽略,从而导致重建困难。“如果不彻底重装操作系统和应用程序,以及轮换密钥和凭证,系统将有很大的风险并且继续受到威胁,但是运营商认为他们可以通过文件差异手动检查系统,并自己进行有效评估。”Open Crypto Audit 项目主管 Kenn White 表示,“但不得不说,这太天真了!”(本文转自freebuf.com


原文链接:


https://arstechnica.com/information-technology/2019/08/the-year-long-rash-of-supply-chain-attacks-against-open-source-is-getting-worse/


https://www.freebuf.com/articles/network/212434.html


2019 年 9 月 09 日 12:042305

评论 1 条评论

发布
用户头像
写的真好,交流一下
2019 年 09 月 09 日 13:52
回复
没有更多了
发现更多内容

Java学习之路 -- Java怎么学?

秦怀杂货店

Java 编程 基础 书籍

一次客户需求引发的K8s网络探究

京东科技开发者

云计算

Java 并发系列(二):DCL — Double Check Lock

TroyLiu

Java volatile 多线程 synchronized DCL

Adobe国际认证,Photoshop软件“展开画布”官方教程

Adobe国际认证

【签约计划】技术编辑能力考核成绩公布

InfoQ写作平台官方

活动专区 签约计划

上海工艺美术职业学院加入ACA世界大赛!一流高职,建设院校

Adobe国际认证

智慧公安警务系统搭建,警务大数据可视化分析平台解决方案

13828808769

智慧城市

智慧党建平台搭建方案,组织部干部管理决策系统开发

WX13823153201

实战案例丨分布式系统中如何用python实现Paxos

华为云开发者社区

Python 算法 分布式系统 PAXOS 集群库

“广度”和“深度”,是我最终选择蚂蚁的理由

DT极客

百度飞桨中国行南京站开启!共研AI赋能产业新模式

百度大脑

百度 AI 飞桨

在开源的公链上实现隐私保护?静看NA公链 NAC公链创新之路应如何蜕变

区块链第一资讯

你真了解开源许可证吗?

郭旭东

开源 开源许可证

JVM-技术专题-Class文件加载虚拟机

李浩宇/Alex

JVM Class字节码

LDO和DC-DC有什么不同?如何选型?

不脱发的程序猿

28天挑战 3月日更 LDO DC-DC 电源转换

Mongodb特定场景性能数十倍提升优化实践(记一次十亿级mongodb核心集群雪崩故障)

杨亚洲(专注mongodb及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

首站重庆聚焦智慧物流、呈现最新AI能力

百度大脑

AI 百度大脑

科技赋能城市建设,英特尔正式发布智慧社区解决方案参考架构

intel001

SpringNative:把Spring项目编译成原生程序

Java王路飞

Java 架构 面试 JVM Spring Native

Elasticsearch详细剖析

大数据技术指南

ES 3月日更

Python+OpenCV检测灯光亮点

不脱发的程序猿

Python OpenCV 28天写作 3月日更 检测灯光亮点

Rust从0到1-基础概念-注释

rust 代码注释

独家!阿里云大师深入拆解Java虚拟机,告诉你什么叫细节爆炸

周老师

Java 编程 程序员 架构 面试

区块链溯源服务平台,区块链商品防伪溯源解决方案

13828808769

区块链+ #区块链#

【技术面对面】基于场景图的多物体图像生成技术

京东科技开发者

云计算

Python基础之:Python中的异常和错误

程序那些事

Python Python3 程序那些事

银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

云流

Java 编程 程序员 架构 面试

一位入职蚂蚁金服,年薪180万的大佬扔给我的笔记,看完发现差距不止一点点!

Java架构追梦

Java 阿里巴巴 架构 面试题总结 全套面试题

区块链溯源,茶叶溯源平台的搭建

13828808769

#区块链#

职场中的Adobe国际认证力量!让职业发展,创造力成为现实?

Adobe国际认证

python中find_element()和find_elements()的区别

Geek_6370d5

Python

边缘计算隔离技术的挑战与实践

边缘计算隔离技术的挑战与实践

开源软件的供应链安全吗?黑客利用源代码传播恶意软件-InfoQ