开源软件包存储库存在1200+恶意包,供应链安全何去何从

news2024/12/25 16:03:37

一、前言

2020年12月13日,网络安全公司FireEye发布分析报告,称全球最著名的网络安全软件供应商SolarWinds遭受供应链攻击并被植入木马后门,影响版本为2019.4
HF 5 -
2020.2.1:使用该产品的机器可被攻击者完全操控。根据SolarWinds在其官网发布安全通告显示约有18000名客户下载了受影响的软件产品,影响超过250家企事业单位,其中包括北美、欧洲、亚洲、和中东的政府部门、关键基础设施和一些关系国计民生的部门。

2021年2月国外安全媒体发文称一名安全研究人员在一次关于供应链投毒的安全研究中成功突破并入侵了超过35家大型公司的内网,其中包括微软、苹果、PayPal、Shopify、网飞、Yelp、特斯拉和优步等众多全球知名企业。

本次事件的根因是内部第三方依赖包管理混乱的问题,一般各大公司都会在内部维护一个私有镜像源,存储一些内部开发的第三方包,如果开发人员在安装这些包时没有指定私有源,那么包管理工具便会在公有源上搜索并下载依赖包,当恶意攻击者在公有源上传包名相同,版本号较大的恶意包后,包依赖工具就会自动拉取这些恶意包,从而造成恶意代码的执行。

目前,供应链攻击的频率和成熟度在不断提高。根据行业估计,供应链攻击现在占所有网络攻击的50%,与去年同比激增了
78%。多达三分之二的公司经历了至少一次供应链攻击事件。同时,80%的IT专业人士认为软件供应链攻击将是企业在未来三年面临的最大网络威胁之一。

##二、软件供应链攻击

###2.1 软件供应链

传统的供应链是指产品生产和流通过程中所涉及的原材料供应商、生产商、分销商、零售商以及最终消费者等成员通过与上游、下游成员的连接组成的网络结构。也即是由物料获取、物料加工、并将成品送到用户手中这一过程所涉及的企业和企业部门组成的一个网络。

传统供应链的模型可以完全套用到计算机软硬件中,这样就衍生出了软件供应链的概念:软件在开发、交付以及使用过程中所涉及一系列行为、工具所共同组成的软件体系结构。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6di9qIk-1690876852175)(https://image.3001.net/images/20210629/1624944855_60dab0d7262b968fa149a.png!small)]

###2.2 软件供应链攻击

顾名思义软件供应链的攻击就是针对开发、交付以及使用三个环节的针对性攻击行为,如背景中介绍的网络安全软件供应商SolarWinds的攻击,就是针对软件使用环节的攻击,而对Python请求库requests的攻击则是软件开发阶段的攻击。

在所有软件供应链攻击的行为中,针对开发环节第三方库的攻击是其中破坏性最强、影响范围最广的攻击方式,因为当前软件基本都是有各式各样的第三方库堆叠而成,其中任何一个第三方库受到攻击,整个软件也必然会受到影响。针对第三方库的攻击方式一般有以下两种方式:

1.
攻击者通过攻击知名软件官方的服务器、篡改软件源代码加入恶意代码,然后提供给前往官方下载的用户使用。这种攻击方式的攻击难度比较大,但是影响范围极其广阔,所有使用该软件的用户都会受影响。比如:PHP官方代码投毒事件,在今年3月份git.php.net(原PHP官方代码服务器)服务器疑似被攻击,攻击者向PHP源代码中进行了两次后门代码提交。该后门通过判断HTTP请求头中的User-
Agent(不是User-Agent)是否包含zerodium关键词来触发后门,理论上是能够影响所有使用PHP的开发的站点。

2.
攻击者向开源软件包存储库比如:npm、PyPI、RubyGems、Godoc、Maven等上传带有恶意代码的软件包,这些软件包在名称上通常与一些知名的第三方包极其相似,比如上文提到的request与requests,因为包名上的迷惑性,用户极易下载恶意软件包并安装使用,从而触发恶意代码。这种攻击方式成本极低,而且很容易泛滥,因此针对这种相似恶意软件包的检测治理是我们接下来要介绍的重点,也是主要的治理对象。

##三、第三方软件包的攻与防

###3.1 第三方软件包的攻击方式

开发者为了开发效率往往会采用外部的服务或开源的代码或代码段,但大多数开发者都对外部代码有着迷之信任,一般不会对需要使用的代码作细致的代码审核,这就给外部风险带入软件系统提供了机会。那么这些恶意的第三方软件包是怎么被引入的呢?下面将对目前常见的引入方式进行说明。

1.依赖包导入错误

在Python中,导入的包名和代码中使用的包名会有些许不同,例如 pwntools 库中在代码的引入

Pythonfrom pwn import *

研发在遇到相应代码有可能习惯性的输入pip install pwn 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XbamXCp-1690876852175)(https://image.3001.net/images/20210629/1624944948_60dab13464a863059ba83.png!small)]

而非正确的安装方式 pip install pwntools 。这就会安装到其他非预期内的恶意包。

2. 同名包

多数公司内部会维护一个自己镜像源,会存储仅限于公司内部使用的库文件,往往包名会加入一些特殊字符例如 xx-redis
用来保持与外部源独立,对于一些粗心的开发者在下载包时忘记指定内部源。包管理工具就会在公有源进行搜索,如果在公有源中也存在同名的恶意包,攻击者就可以成功进入内网之中。

尤其要注意pip的管理方式,某些开发会指定–extra-index-url=参数到私有源,但是该参数会自动的在原始pypi.org
和私有源中查找,会选择较新版本号进行下载。使用–index-url=则不会出现上述问题。

3. Typo攻击

类似于同名攻击,不过更加需要运气,因为这需要用户误输入错包名,所以整体攻击成功概率相对较低,比如PyPI 官方仓库中的request恶意包投毒。

4. 直接引入存在风险的代码段

攻击者有意或无意上传存在风险的代码块,经过互联网中的扩散,使得在搜索引擎中存在较大优先级,开发在搜索相应功能的实现时,很容易直接将代码贴入项目,这就带来了风险的引进。最有代表为PHP中getip函数,该函数可以很轻易的通过修改请求头来修改用户IP,结合其他代码逻辑也可能引入SQLi及XSS问题。

PHP<?phpfunction getip() {if(KaTeX parse error: Double subscript at position 25: …ER_VARS["HTTP_X_̲FORWARDED_FOR"]…ip = KaTeX parse error: Double subscript at position 25: …ER_VARS["HTTP_X_̲FORWARDED_FOR"]…HTTP_SERVER_VARS[“HTTP_CLIENT_IP”]){$ip = KaTeX parse error: Expected 'EOF', got '}' at position 36: …TP_CLIENT_IP"];}̲elseif (HTTP_SERVER_VARS[“REMOTE_ADDR”]){$ip = KaTeX parse error: Expected 'EOF', got '}' at position 33: …"REMOTE_ADDR"];}̲elseif (getenv(…ip = getenv(“HTTP_X_FORWARDED_FOR”);}elseif (getenv(“HTTP_CLIENT_IP”)){KaTeX parse error: Expected 'EOF', got '}' at position 31: …TP_CLIENT_IP");}̲elseif (getenv(…ip = getenv(“REMOTE_ADDR”);}else{$ip = “Unknown”;}return $ip;}

###3.2 如何防御第三方恶意软件包

1.
企业内部应自建各种软件源(比如:PyPI、npm、Godoc),软件同步必须来自官方源。通过自建内部源可以收敛源头,一旦发生供应链攻击事件,可以快速从内部源上删除第三方恶意包,切断恶意包的传播。并且通过内部源的各种日志、打点可以得知有哪些服务使用了恶意包,从而可以快速溯源止损。

2. 实时监控各个官方源,利用相似度算法计算有没有与内部私有包名相似或相同的包,当发现这类包时,使用代码分析、机器学习等方法确定该包是否存在恶意行为。

3. 从各种软件源同步包时,要进行实时扫描,扫描方式可以是静态扫描或动态沙箱扫描。

4. 加强对漏洞危害的分享,养成内部代码review的习惯,避免直接粘贴存在恶意行为的代码。

##四、独家披露:开源软件包存储库存在1200+恶意包

今年5月,无恒实验室使用自研第三方恶意软件包检测工具WolfHunter对开源软件包存储库进行检测时,发现PyPi官方源上存在1000+的恶意包,npm官方源上存在200+的恶意包,这些包主要获取各种敏感信息、反弹shell、远程下载木马等。

说明:WolfHunter(猎狼人),无恒实验室自研第三方恶意软件包检测工具,一款融合了静态代码扫描、动态沙箱扫描(字节已开源瑶光EIkeid
HIDS)、机器学习等多项技术的恶意代码检测工具。

下面对发现的典型恶意软件包Rbperf的溯源流程进行说明。

5月14日,无恒实验室监控到PyPi上传了一个Rbperf包,属于反弹shell的恶意包。

通过对Rbperf包进行溯源并持续监控发现,该包作者id是:ch13fd357r0y3r 。

PyPI homepage:https://pypi.org/user/ch13fd357r0y3r/

twitter 主页:https://twitter.com/Shanmuga_2002

Reddit 主页:https://www.reddit.com/user/ch13fd357r0y3r/,而且疑似在PHP也上传了恶意包,但已删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-osrzSioZ-1690876852176)(https://image.3001.net/images/20210629/1624945117_60dab1dd0e289b9e155e2.png!small)]

攻击者从2021年5月14日到2021年6月16日共上传恶意包7个,涉及8个版本,4个IOC,下载量超过1000+,影响30多个国家及地区。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G4ILlPRH-1690876852176)(https://image.3001.net/images/20210629/1624945132_60dab1ec146d8802bc247.png!small)]

恶意包名:qlib_server、Proxy65、py-fbzmq、dspltools、rbperf、OSXFrameworks、CalDAVTester

IOC:13.233.214.229、65.1.120.255、3.108.43.183、13.235.23.90

具体信息如下:

包名| 日期| 版本号| ioc| 下载地址—|—|—|—|—qlib_serve

|

20210606

|

99.99.99

|

13.233.214.229

| https://pypi.org/simple/qlib-server/Proxy65

|

20210607

| 12.0.1| 65.1.120.255| http://mirrors.tencent.com/pypi/simple/Proxy65/py-fbzmq

|

20210513

| 1.5| 3.108.43.183| https://mirrors.tencent.com/pypi/simple/py-fbzmq/20210515

| 1.9| 3.108.43.183| https://pypi.tuna.tsinghua.edu.cn/simple/py-fbzmq/dspltools

|

20210515

| 0.5.5| 3.108.43.183| https://mirrors.tencent.com/pypi/simple/py-fbzmq/rbperf

|

20210514

| 0.1.2| 3.108.43.183| http://mirrors.tencent.com/pypi/simple/rbperf/OSXFrameworks

|

20210516

| 0.1.7| 3.108.43.183| https://mirrors.tencent.com/pypi/simple/OSXFrameworks/CalDAVTester

|

20210616

| 99.99.99| 13.235.23.90|
https://mirrors.tencent.com/pypi/simple/CalDAVTester/通过对这7个恶意包分析后发现,攻击者都可以进行远程命令下发。这些包都是通过伪造一些大厂开源软件包来进行钓鱼,从而诱导更多人安装。比如qlib_server是微软的下的一款数据服务系统microsoft/qlib-
server,具体伪造

详情如下:

包名| 厂商| 项目主页—|—|—qlib_server

|

微软

| https://github.com/microsoft/qlib-serverpy-fbzmq

|

facebook

| https://github.com/facebook/fbzmqdspltools

|

google

| https://github.com/google/dspl/tree/master/tools/dspltoolsrbperf

|

facebook

| https://github.com/facebookexperimental/rbperfOSXFrameworks

|

apple

|
https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.htmlCalDAVTester

|

calendarserver

| https://www.calendarserver.org/CalDAVTester.html下面详细描述qlib_server包如何触发恶意行为,qlib_server包安装过程中会加载setup.py中的载恶意代码,连接远端C2,循环等待远端下发命令并执行(其他包类似,在此不再赘述)。

##五、恶意组件包列表

下面将截止到目前发现的恶意软件包罗列在此,希望大家能够根据该列表对内部公司使用依赖库进行筛查,以避免公司内部使用了这些恶意软件包,给公司造成损失。部分恶意包已联系PYPI官方删除,想了解更多详情,可到其他源下载恶意包。

https://bytedance.feishu.cn/sheets/shtcnMIXEYzkTkmruPS9NwMl3ie

(请复制链接到浏览器中查看)

##六、后续计划

1.目前主要支持PYPI、NPM源上组件的扫描,后续会逐步支持RubyGems、Godoc、Maven等开源软件库的扫描。

2.秉承共建安全生态的原则,后续我们会定期公布已发现的恶意软件包具体信息,读者可以根据这些信息进行自查,保护自身信息资产安全。

、结语

开源对于软件的发展具有重大的意义,许多企业的业务中或多或少都引入了开源的第三方依赖,使企业可以更关注于业务的发展。但是在引入第三方依赖的同时,也不可避免地引入开源代码中的安全漏洞,这些安全漏洞往往能对业务造成致命的打击。随着越来越多的第三方依赖漏洞被披露,越来越多的企业也开始重视第三方依赖的安全性。

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端学习——Vue (Day9)

Pinia 快速入门 https://pinia.vuejs.org/zh/getting-started.html npm install pinia import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst pinia createPinia() const app createApp(App)app.use(pinia) app.mount(#app)&l…

2分钟大白话:什么是大数据架构。人人好懂

问题背景 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;尼恩一直指导大家写简历&#xff0c;做面试&#xff0c;最高的拿到年薪近100W。 昨天指导 一个 阿里 p6 小伙写简历&#xff0c;做面试。在帮他 挖掘简历亮点时&#xff0c;发现他项目在Java上没有什么技术亮点&…

Vcenter 创建 虚拟机配置 Thin Provision 模式 disk

介绍 在vCenter中选择虚拟磁盘格式通常也取决于您的需求和使用情况。 vSphere支持多种虚拟磁盘格式&#xff0c;以下是一些常见的格式&#xff1a; Thick Provision Lazy Zeroed&#xff1a;这是vSphere中的默认格式。它会预分配虚拟磁盘所需的存储空间&#xff0c;但只有在虚…

pdf大小如何压缩?三个压缩技巧快学来

在日常生活中&#xff0c;我们经常会遇到PDF文件过大&#xff0c;导致无法传输或存储的问题。那么&#xff0c;如何解决这个问题呢&#xff1f;其实&#xff0c;有很多软件可以帮助我们解决这个需求&#xff0c;下面就给大家汇总几个简单实用的PDF压缩工具&#xff0c;一起来看…

Python爬虫时遇到连接超时解决方案

在进行Python爬虫任务时&#xff0c;经常会遇到连接超时&#xff08;TimeoutError&#xff09;错误。连接超时意味着爬虫无法在规定的时间内建立与目标服务器的连接&#xff0c;导致请求失败。为了帮助您解决这个常见的问题&#xff0c;本文将提供一些解决办法&#xff0c;并提…

C# Blazor 学习笔记(3):路由管理

文章目录 前言路由管理App.razor设置登录页面设置空布局 前言 我们知道使用Blazor的官方模板&#xff0c;我们会自动得到一个拥有侧边栏的布局页面。但是我们发现我们所有新建的页面都有侧边栏。有时候我们需要跳出这个布局&#xff0c;比如我要做登录页面的时候&#xff0c;我…

Stata的--随机效应模型处理,以及介绍

今天分享随机效应模型 主要包含以下两个部分 第一个部分是随机效应模型的介绍 第二个部分是随机效应模型的Stata命令 首先我们来看下第一个部分随机效应模型 首先我们先回顾一下我们上文讲的混合OLS模型 当我们的面板数据在个体效应检验结果不显著的时候 既不存在个体效应…

Android U MO Call流程时序图

流程时序如下 Android U MO Call流程时序图 转载请注明出处。

烘焙小程序蛋糕店烘焙店源码点心店小程序源码

本系统开发使用JAVA技术栈开发 使用uniapp技术栈 支持微信小程序 &#xff0c;对接打印机&#xff0c;对接第三方同城跑腿平台 用户端使用&#xff1a;uniapp 管理端使用&#xff1a;vueelementui 后台服务使用&#xff1a;springbootjpa

一篇文章带你彻底理解继承(Java面向对象的基石)——菜鸟教程学习记录

一篇文章带你彻底理解继承&#xff08;Java面向对象的基石&#xff09;——菜鸟教程学习记录 基本概念&#xff1a; ​ **继承是Java面向对象编程技术的一块基石&#xff0c;因为它允许创建“分等级层次的类“。**它允许一个类&#xff08;称为子类或派生类&#xff09;继承另…

Gartner发布2023年最新技术成熟度曲线,偶数科技位列湖仓一体代表厂商

近日&#xff0c;Gartner 发布技术成熟度曲线《Hype Cycle for Data, Analytics and AI in China, 2023》&#xff0c;偶数科技本次入选湖仓一体代表厂商&#xff0c;这是继在去年偶数荣获Gartner“酷”厂商&#xff08;《Cool Vendors in Data Management, China》&#xff09…

MACOM EDI 需求分析

MACOM 是一家全球性半导体公司&#xff0c;专注于设计和制造高性能射频、微波和光电元件&#xff0c;其产品被广泛应用于通信、航空航天、国防、工业和医疗等领域。随着 MACOM 的不断发展&#xff0c;传统数据传输方式效率较低&#xff0c;无法满足 MACOM 的需求。为了提高企业…

动作分析的要素有哪些?什么软件可以帮助企业进行动作分析?

一次完整的作业&#xff0c;常常是由一系列细小的动作构成&#xff0c;从表面看来&#xff0c;似乎没有任何浪费存在。事实上&#xff0c;如果我们仔细地对作业行为进行分解&#xff0c;将其单独记录下来&#xff0c;会发现其中许多行为是多余的&#xff0c;或者可以避免的。在…

手把手教你如何在Windows下allure与jenkins的集成生成让你一见钟情的测试报告 - 03(非常详细)

简介 为什么要把allure和jenkins集成了&#xff1f;原因是集成以后&#xff0c;我们就可以直接查看allure的结果&#xff0c;不需要重复输入命令、重复使用浏览器打开文件来查看allure的结果&#xff0c;而且jenkins历史记录可以留存&#xff0c;方便进行对比前后的变化等等。由…

k8s kubeadm命令升级集群 从1.17升级到1.18

k8s kubeadm命令升级集群 从1.17升级到1.18 大纲 注意事项master节点执行升级命令master节点和node节点执行命令 注意事项 目标当前线上k8s集群版本是k8s1.17 想把k8s升级到1.18。注意k8s不能跨版本升级例如k8s1.17不能直接升级到k8s1.19&#xff0c;需要先升级到1.18才后向…

Transformer 要占领地球了,大语言模型最全盘点!

随着最近半年 ChatGPT 火爆全球&#xff0c;基于 Transformer 架构的大语言模型&#xff08;LLM&#xff09;逐渐走入大众视野&#xff0c;可以说&#xff0c;Transformer 在AI 领域的影响力绝不亚于变形金刚在科幻领域的影响力。 Transformer 的核心思想是使用自注意力机制&am…

视频怎样分割成两段?分享几种视频分割方法

当需要制作长时间的视频时&#xff0c;将视频分割成几段可以帮助你更好地组织视频内容&#xff0c;使其更易于理解和学习。与此同时&#xff0c;将视频分割成多个小部分也可以在不影响整体视频质量的情况下将其上传到各种平台&#xff0c;并节省存储空间。此外&#xff0c;如果…

使用文心一言等智能工具指数级提升嵌入式/物联网(M5Atom/ESP32)和机器人操作系统(ROS1/ROS2)学习研究和开发效率

以M5AtomS3为例&#xff0c;博客撰写效率提升10倍以上&#xff1a; 0. Linux环境Arduino IDE中配置ATOM S3_zhangrelay的博客-CSDN博客 1. M5ATOMS3基础01按键_zhangrelay的博客-CSDN博客 2. M5ATOMS3基础02传感器MPU6886_zhangrelay的博客-CSDN博客 3. M5ATOMS3基础03给RO…

快速搭建单机RocketMQ服务(开发环境)

一、什么是RocketMQ ​ RocketMQ是阿里巴巴开源的一个消息中间件&#xff0c;在阿里内部历经了双十一等很多高并发场景的考验&#xff0c;能够处理亿万级别的消息。2016年开源后捐赠给Apache&#xff0c;现在是Apache的一个顶级项目。 早期阿里使用ActiveMQ&#xff0c…

SegNeXt:重新思考用于语义分割的卷积注意力

&原文信息 原文题目&#xff1a;《SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation》 原文引用&#xff1a;Guo M H, Lu C Z, Hou Q, et al. Segnext: Rethinking convolutional attention design for semantic segmentation[J]. Advance…