一、“核弹级”漏洞频发

WebLogic T3 协议漏洞

漏洞概述:

WebLogic是美国Oracle公司出品的一个application server,确切地说是一个基于JAVAEE架构的中间件。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器,将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

该漏洞成因便是Weblogic 默认开启 T3 协议,攻击者可利用T3协议进行反序列化漏洞实现远程代码执行。反序列化攻击时序图如下:

漏洞影响:

Weblogic 默认开启 T3 协议,攻击者可利用T3协议进行反序列化漏洞实现远程代码执行。此漏洞一个季度出一个补丁,从未真正意义修补成功过。

HTTP 协议栈远程代码执行漏洞(CVE-2022-21907)

漏洞概述:

Microsoft Windows HTTP 协议栈(HTTP.sys)是Windows操作系统中处理HTTP请求的内核驱动程序,常见于Web浏览器与 Web 服务器之间的通信,以及Internet Information Services (IIS)中。

由于HTTP协议栈(HTTP.sys)中的HTTP Trailer Support功能存在边界错误可导致缓冲区溢出。未经身份认证的攻击者可通过向目标 Web 服务器发送特制的HTTP请求来处理数据包,利用此漏洞,从而在目标系统上执行任意代码。利用此漏洞不需要身份认证和用户交互,微软官方将其标记为蠕虫漏洞,并建议优先修补受此漏洞影响的服务器。默认情况下,Windows Server 2019 和 Windows 10 版本1809不易受到攻击。除非用户已通过EnableTrailerSupport注册表值启用 HTTP Trailer Support,否则系统不会受到攻击。

漏洞危害:

该漏洞存在于HTTP 协议栈 (http.sys) 的处理程序中,未经身份验证的远程攻击者可通过向目标主机发送特制数据包来进行利用,从而在目标系统上以内核身份执行任意代码。

H2远程代码执行漏洞(CVE-2021-42392)

漏洞概述:

H2数据库是用 Java 开发的免费、开源、轻量级的关系数据库。它可用于嵌入式、客户端-服务器和内存数据库模式。在嵌入式模式下,数据库嵌入在 Java 应用程序中,在客户端-服务器的情况下,数据库可以像 MySQL 一样用作独立的 DB 服务器,并且可以通过集成的 Web 和命令进行控制台访问。当它用作内存数据库时,数据不会持久化在磁盘上。

国外安全研究专家在H2数据库控制台中披露了一个类似Log4j的漏洞,该漏洞可能导致攻击者执行未经身份验证的远程代码执行漏洞。该漏洞被跟踪为 CVE-2021-42392。H2 数据库被许多第三方框架使用,如Spring Boot、Play Framework 和 JHipster等。

漏洞影响:

该漏洞的根本原因与Apache Log4j日志记录实用程序中的Log4j漏洞相同,属于JNDI远程类加载。JNDI是Java Naming and Directory Interface的缩写,是指为Java应用程序提供命名和目录功能的API,它可以结合LDAP使用API来定位可能需要的特定资源。

由于H2数据库框架中的几个代码路径将未经过滤的攻击者控制的URL传递给javax.naming.Context.lookup函数,导致远程代码库加载(也称Java代码注入),最终造成未经身份验证的远程代码执行。

Apache Log4j2远程代码执行漏洞(CVE-2021-44228)

漏洞概述:

Apache Log4j2 是 Apache 的一个开源项目,Apache Log4j2 是一个基于 Java 的日志记录工具,使用非常广泛,被大量企业和系统所使用,漏洞触发极其简单,经过分析,Log4j-2中存在JNDI注入漏洞,攻击者可以通过构造特殊的请求进行任意代码执行,可以轻松达到控制服务器的目的。

影响危害:

Log4j2作为java代码项目中广泛使用的开源日志组件,它的一个严重安全漏洞对于全球的软件供应链生态来讲不亚于一场新冠病毒的影响,任何企业的代码项目沾上它都有可能给企业带来致命的安全风险。

比新冠病毒更可怕的是,像Log4j2这样的基础组件其实还有很多,它们出现安全漏洞的概率可远远要比新冠病毒的概率要高的多。我们来看一组数据:

●Log4j2的依赖血缘:统计了1~4层的依赖血缘关系,直接和间接Log4j2的开源组件总计有17万个,也就是说有至少17万个开源组件是受Log4j2漏洞影响。

●GitHub作为全球最大的开源代码托管平台,抽样分析发现至少5.8%的java开源项目受该漏洞影响。

●截止目前,距离官方第一次发布修复版本已近一周时间,GitHub上还有89%的受影响项目仍然没有修复。

●在java语言的开源组件流行度排行中,Log4j2列第13位,也就意味着至少存在几十个这样的高影响度组件,一旦爆发漏洞,实际带来的影响都是类似的。

下面是火线安全统计的关于存在漏洞组件的库,可以进行搜索,网站:https://log4j2.huoxian.cn/layout

二、防御思路

【只要有代码,就会有漏洞】0day漏洞本质上也是代码漏洞,漏洞产生的内因就是代码的缺陷,代码的缺陷率可以降低却不可以完全消除。因此,代码与漏洞注定相伴相生。公开数据显示,每1000行代码中就会有2-4个漏洞,操作系统、中间件、应用系统、软件以及应用软件开发过程中难免要引入的各类第三方开源组件、框架等,每年都会爆出很多0day漏洞,甚至某些安全产品自身也会遭受0day漏洞的攻击,因为安全产品自身功能也是由代码实现的。

信息系统只有两种状态:已经被攻破的、即将被攻破的。那么安全工作该如何投入?工作的效果如何体现呢?其实做安全工作就像我们锻炼身体一样,一定有病毒会侵害我们的身体,但是免疫力强的、身体好的人病毒可能就感染不了或者感染后很快能康复。在面对SARS、埃博拉等这种在当时都没有针对性药物的病毒时,我们能做的就是强身健体,提高免疫力。信息安全也一样,把一些基本工作做好,在事故来临的时候造成的损失一定小很多。做与没做还是有很明显的差异。

【信息安全,意识为先】信息安全领域有一些基本的安全措施,或者称作事半功倍的措施,这些基础工作做踏实了会切实提供安全免疫力。以下列举了一些常见的“提高免疫力”的基础安全工作:

1) 资产梳理

摸清家底,及时修补,全面把控威胁资产。资产信息包括服务器基础信息,进程,账户,web站点,web服务,web框架,端口,网络连接,软件应用,数据库,启动服务,安装包、计划任务,环境变量,内核模块详细资产信息等。摸清家底需要解决资产“有哪些”、“谁在用”的问题,将全部重要资产进行纳管,及时准确地获取相关资产的版本信息,下线风险较大的资产,收敛暴露面。同时,结合NVD、CNVD等国家漏洞库信息,以及业界专业安全公司提供的威胁情报,形成多渠道的情报来源,及时准确披露漏洞信息,对相关资产第一时间做好补丁升级,在0day漏洞攻击发生时能最快定位到受影响资产,最大程度地减少0day漏洞有效作用时间。兵马未动粮草先行,资产梳理是安全运营的第一要务。

2) 访问控制

访问控制是信息安全永恒的主题。Gartner公布十大信息安全技术,第七大技术为“以遏制和隔离为基础的信息安全策略”,虚拟化、隔离、提取及远程显示技术,都能用来建立这样的遏制环境,来处理不信任的内容和应用程序。虚拟化与遏制策略将成为企业系统深度防御策略普遍的一个环节,对攻击者隔离、遏制、消灭,尽管目前使用情况较少,但预计普及率会达到20%。网上有一篇文章针对零散的攻击者《捻乱止于河防——浅谈企业入侵防御体系建设》,实质也是访问控制,步步设防,逐步推进,再集中优势兵力歼灭对手之。

3) 权限管理

缩小暴露面,避免未知攻击,主动关闭可能造成危害的协议、端口、请求方法等,主动关闭和删除通用软件或业务系统不使用的组件。运维使用白名单机制或者使用堡垒机控制进行登录维护系统。限制给业务系统使用root、administrator等超级管理员帐户运行,所有web中间件,数据库等软件应采用普通用户运行,业务层面的攻击需要获取高级权限才能调用系统进程等进行攻击,使用普通用户权限极大限度进行限制,增加攻击难度,也为早期发现做铺垫。

【爆发通用性高危漏洞应该尽早获取到情报】类似Log4j这样能够由工信部发布官方通报的重大安全漏洞必然是少数,并不是所有的漏洞都会有上级单位逐级的下达排查工作指令,而在实际的系统运行过程中,任何一个不经意的漏洞都可能导致信息资产失陷,网络安全“木桶原理”是指整体网络安全水平由安全级别最低的部分所决定,这样也凸显了全面且早期地识别系统的漏洞以及掌握行业中有关漏洞的威胁信息的重要性。如何获取行业中公开的或者在野利用的漏洞威胁信息呢?单位通过利用身边的可用资源把网络安全工作做得极致的细,建立适合于个人工作习惯或者符合组织管理要求的威胁情报网络,都有助于第一时间掌握最新的安全事件、攻击趋势以及漏洞等信息,有了这些情报可以使得安全预警、检测和应急响应的工作变得更加主动,通过培养主动防御能力解决防御中“敌暗我明”、“敌众我寡”的这种“攻防不对等”的问题。

【版本或补丁及时更新】当某一个漏洞出现时,除了更新软件或通用组件版本,更多应该考虑的是之后还会被绕过的0day漏洞,例如log4j已知攻击方式是通过jndi调用ldap、rmi进行攻击,那么第一时间就应该将jndi能够调用的所有方式(ldap|ldaps|rmi|iiop|iiopname|corbaname|dns|nis)进行阻拦。漏洞出现之后,官方也一直在推出补丁,然而一直也会存在补丁绕过的情况 ,打官方补丁当然是一个比较靠谱的方式,但是一开始并不能完美解决。在进行漏洞利用时,针对高版本的 java jdk 是无法直接利用的,但是也不一定完全不可以。对于一些单位,定期更新 java 后,可能影响比较小,所以 java 版本更新也是一种缓解的方式。

【持续获取三方组件最新漏洞情报】漏洞的来源比较多,就漏洞情报而言,订阅安全厂商或安全媒介的情报推送、自研爬虫监控漏洞情报源均是不错的方法。这里的三方组件是指Web服务的架构、组件,比如Weblogic,Shiro,Jboss ,Apache Struts2,Dubbo,Kafka,Redis,Logstash等等。漏洞的发现离不开资产管理,梳理清楚自己家有哪些资产,再重点关注、跟进互联网上的相关漏洞信息,将漏洞信息或公开的POC/EXP内化为常规漏扫武器插件,通过常规扫描的方式针对性发现漏洞。

【构建纵深防御体系】没有任何一款单独的安全产品,可以针对所有威胁向量提供保护。面对0day漏洞,传统的单点防护手段已无法胜任,我们需要不断拓展防护层次,并且在对抗中不断提升检测精度,并综合利用内部多种日志和流量信息,进行关联分析,让攻击者“进不来”、“拿不走”、“跑不掉”,不断增加攻击者0day漏洞的攻击成本。

三、结束语

通过建设完善的防御体系,提升人员的防范意识,可以有效减少被零日攻击的机率,降低零日攻击造成的损失。

◆加强员工宣传教育:组织全员参加网络安全培训,掌握网络安全基本常识,防止攻破“人”的防线。

◆加固计算机终端系统:计算机终端通常是整个网络中最薄弱的环节,对终端系统进行安全加固是有效减少零日攻击的好方法。

◆实时更新软件:常用软件要保持实时更新,如浏览器、防病毒软件和办公软件等。

◆及时修补漏洞:定期对网络中的设备进行漏洞扫描,及时修补存在的漏洞,降低被攻击的风险。

◆加强网络安全设施建设:在网络中部署必要的安全设备和软件(如大数据安全分析系统、NGFW、漏扫设备、防病毒软件等),可以降低零日攻击的影响范围和严重程度。

◆加强权限认证与审核:通过部署“零信任”安全方案,加强对用户操作的授权和用户身份的审核。

◆建立应急响应方案:无论采取何种安全措施,都不能完全排除零日攻击的威胁。应急响应方案可以帮助单位快速阻止攻击,将损失减少到最小。(余建

声明:本文来自教育网络信息安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。