Apache Log4j2 远程代码执行漏洞已爆发一周,安全厂商提供各类防御方案和检测工具,甲方团队连夜应急。

影响持续至今,网上流传的各种利用和绕过姿势还在层出不穷,影响面持续扩大。所有安全人都开始反思一个问题:当前的防御是否有效?针对这样的 0day 再次发生,什么是有效的手段?

阿里云安全团队此次参与了诸多客户应急,并从云平台自身防御总结经验,尝试抛出一些观点以供讨论。

首先,我们先来从技术层面分析一下为什么这次 Log4j2 这么难搞。

Apache Log4j2 漏洞们的特质

此次 Log4j2 漏洞有两个很棘手的特质:

可以实现任意远程代码执行

“懂规矩”的漏洞,危险大的利用门槛高,利用门槛低的危害小,还算符合自然规律。这个漏洞并不按常规出牌,不但影响面广,利用门槛低,危害还极大。三个因素重叠,到处被冠上“史诗级”的头衔。

Java 的应用极其广泛且生态庞大,而 Log4j 作为日志处理的基础组件被几乎所有应用程序所使用。

通过 JNDI 注入的手段,可以实现任意远程代码执行,意味着攻击者可以在存在漏洞的服务器上为所欲为。

即使在内网环境中 JNDI 外联无法成功,攻击者也可以结合 lookup 特性去读取很多敏感信息(如数据库密码、JAVA 环境变量等),再通过 DNS 协议把敏感信息带出内网。

流量特征隐蔽

某些场景下几乎没有可以跟正常请求区分开来的强特征。

本次漏洞 PoC 构造非常简单,漏洞触发的点广泛而灵活,配合各种变量和协议的嵌套绕过方式,导致流量特征非常复杂和隐蔽。Log4j2 的 lookup 功能支持一些特殊的写法来对字符做二次处理,如 ${lower:j}Ndi、${upper:JN}di、${aaa:vv:cc:-j}ndi 等写法,都能打破字符串的连续性,造成利用时候的流量特征极为不明显。

这是对所有基于流量特征安全防护产品的巨大挑战。

当流量特征不够明显时,基于流量特征的规则陷入尴尬:要么覆盖不到,要么产生严重误报。只能持续不断补充规则,在绕过和被绕过中循环往复。这种防御手段,能在 0day 爆发初期非常有效的为漏洞修复争取时间。但随着各种利用手段的变化越来越多,则很难保证没有被绕过或误报。

与 Log4j2 漏洞的某些“弱特征”甚至“0 特征”利用方式类似的场景,还有加密流量、内存马等,这些手段都曾在大型攻防演练中大放异彩,难以检测的原理是类似的。

所以,有没有一种技术,可以无视漏洞利用手法在流量特征上的各种变化或隐藏,防御的更天然,甚至不依赖规则更新就可以防御这类 0day?

RASP 在此次事件中重回视野

RASP(Runtime Application Self-Protection),运行时应用自我防护,安全行业其实对其并不陌生,却因为传统印象而采纳不多。

这类技术的优势在于,以疫情类比,传统的边界防御类产品,类似口罩/防护服,而 RASP 则类似疫苗,会将自己注入到应用当中,伴随应用一起运行,通过 hook 关键函数实时检测应用执行的高危行为。

RASP 是哪一类 0day 的天敌

不同于基于流量特征的检测,RASP 核心关注应用行为,而非流量本身。

当 RASP 发现一个应用,做了它正常不应该做的事情时,大概率意味着当前应用已经被攻击者利用漏洞攻陷并做了一些高危操作(比如命令执行、文件读取、文件上传、SSRF 等)。

其第一个优势是:凡是被 RASP 防御的行为,都已经是真正可以被成功利用的攻击行为。

而应用的行为类型,相比于变幻无穷近乎无限的流量特征来说,往往是可以穷举的。从应用行为异常的角度去检测,范围可以大幅收敛到有限的类型,这是RASP可以无视流量特征并且不依赖规则更新就可以防御几乎全部0day(包括加密流量和内存马) 的根本原因。

0day 和一些弱特征漏洞利用方式之所以难以防御的原因,上文已经提及。但不管流量特征如何变化,漏洞利用的本质:还是要回归到让应用来做一些不安全的动作上——也就是应用行为或者企图。

以此次漏洞来看,RASP 并不关注请求中的流量是否包含了恶意的 payload,而是去关注 Log4j2 究竟使用 JNDI 功能去做了什么。如果进行正常的 JNDI 查询,就没有问题;但如果企图使用 JNDI 功能进行命令执行,就是一个显而易见的危险行为。

RASP 正是在这个阶段发挥了极其重要的作用:在应用犯错之前将其“悬崖勒马”。

从这个角度上还可以引申出 RASP 的第二个优势:误报极低。

比如:如果应用压根没有使用 Log4j2,基于 payload 中的恶意特征上报攻击就意味着误报,一定程度上消耗安全人员的精力。

而由于 RASP 运行在应用内部,可以明确知道来自流量层的 payload 是否成功进入了 Log4j2 的危险函数,所以不会存在“无效告警”。

近些年来,从 weblogic 到 shiro、dubbo 再到今天的 Log4j2,由第三方组件导致的 0day 不断的大规模爆发。

因为这类组件的代码并不由使用它的应用的开发们维护,一旦漏洞爆发,安全人员第一时间首先需要投入大量的精力去排查哪些应用在使用存在漏洞的组件,这并不是一个容易的事情。特别是对应用众多、迭代快速的企业来说,自己也说不清楚哪些应用、在使用哪些组件的、哪些版本是非常正常的事情。

这里引出了 RASP 的第三个优势:第三方组件自查。

当一个 0day 出现时,可以第一时间排查到受影响组件的路径,如下图所示:

(通过阿里云RASP定位的Log4j组件路径)

对于历史上已经爆出过 CVE 漏洞的组件,RASP 可以自动检测并关联其对应的 CVE 漏洞编号、漏洞等级等信息,方便安全和开发人员及时修复。

云原生 RASP,架构优势加速落地

2014 年,Gartner 就将 RASP 列为应用安全的关键趋势,但实际上 RASP 在生产环境中大规模落地一直比较缓慢,目前也只有少数头部的互联网公司做到了。究其原因,最大的阻碍在于 RASP 技术对应用自身的入侵性,开发人员会非常担忧产生性能、稳定性、兼容性下降等问题。

阿里巴巴集团从 2015 年开始部署自研的 RASP 产品,多年实践已完成在生产网的大规模部署,并且经历了生产网超大流量业务的实战检验,在性能、稳定性和安全性(自我保护)控制方面实现最佳表现。不得不说,这其中的确需要大量时间来沉淀经验和教训,不断调优,这也是甲方安全团队自建 RASP 最大的难点。

阿里云安全团队将 RASP 最佳实践尝试输出,去年推出更通用、更适合用户场景的 RASP 版本,并在多个金融、教育用户的生产网中部署和应用。今年,打通云架构优势,实现云原生 ARMS 产品应用一键接入 RASP 的丝滑体验(开启路径:阿里云 ARMS-应用安全菜单),极大降低云上用户使用 RASP 防御能力的门槛。

近期事件接入 RASP 的用户中,阿里云安全团队观测到非常凶猛的 Log4j2 漏洞利用和危险行为。以某金融用户为例,接入 2 天,RASP 检测并拦截了涉及 8 个 Java 应用的 184 次真实攻击,其中包含 43 次命令执行和 141 次 DNS 漏洞探测。如果缺少 RASP 的防御一环阻拦,这些是极大可能真实执行成功的攻击。

当前版本免费公测,应急的安全同志们可以接入 RASP 再从容升级。如果需保护应用暂时没有上云,也可以联系我们部署线下版 RASP。

PS:因漏洞管理规定,文中图片漏洞细节通过马赛克做了模糊处理,敬请谅解

点击**此处**,了解更多ARMS相关信息!

对 ARMS 感兴趣的同学,可以钉钉搜索群号(34833427)或扫描下方二维码入群交流、答疑~

Apache Log4j2,RASP 防御优势及原理的更多相关文章

  1. 超级干货:动态防御WAF技术原理及编程实战!

    本文带给大家的内容是动态防御WAF的技术原理及编程实战. 将通过介绍ShareWAF的核心技术点,向大家展示动态防御的优势.实现思路,并以编程实战的方式向大家展示如何在WAF产品开发过程中应用动态防御 ...

  2. DDoS 攻击与防御:从原理到实践

    本文来自 网易云社区 . 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁. 危害 根据卡巴斯基 2 ...

  3. DDoS 攻击与防御:从原理到实践(上)

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁 ...

  4. Apache Log4j2远程代码执行漏洞攻击,华为云安全支持检测拦截

    近日,华为云安全团队关注到Apache Log4j2 的远程代码执行最新漏洞.Apache Log4j2是一款业界广泛使用的基于Java的日志工具,该组件使用范围广泛,利用门槛低,漏洞危害极大.华为云 ...

  5. Apache log4j2 远程代码执行漏洞复现👻

    Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...

  6. DDoS 攻击与防御:从原理到实践(下)

    欢迎访问网易云社区,了解更多网易技术产品运营经验. DDoS 攻击与防护实践 DDoS 攻击的实现方式主要有如下两种: 自建 DDoS 平台 现在有开源的 DDoS 平台源代码,只要有足够机器和带宽资 ...

  7. 【】二次通告--Apache log4j-2.15.0-rc1版本存在绕过风险,请广大用户尽快更新版本

    [转载自360众测] Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架,并且引入了大量丰富的特性.我们可以控制日志信息输送的目的地为控制台.文件.GUI组件等,通 ...

  8. 转:关于Apache与Nginx的优势比较(经典)

    不断有人跟我说Nginx比Apache好.比Apache快之类.Nginx更主要是作为反向代理,而非Web服务器使用.我翻译过一本关于反向代理的技术书籍,同时精通Apache API开发,对Nginx ...

  9. apache与nginx对比优势及劣势

    1.nginx相对于apache的优点:轻量级,同样起web 服务,比apache占用更少的内存及资源抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能 ...

随机推荐

  1. [cf1184E]Daleks' Invasion

    先求出任意一棵最小生成树,然后对边分类讨论1.非树边,答案即最小生成树的环上的最长边2.树边,反过来考虑,相当于对于每一个点对那条路经打上标记,取min对于1直接用倍增维护即可,对于2可以用树链剖分/ ...

  2. Elastic AMP监控.NET程序性能

    什么是Elastic AMP Elastic APM 是一个应用程序性能监控系统.它可以请求的响应时间.数据库查询.对缓存的调用.外部 HTTP 请求等的详细性能信息,可以实时监控软件服务和应用程序. ...

  3. 【树莓派】Python开发工控机急停设计

    背景 我们在一些工业产品中使用树莓派替代了PLC和上位机,并借助树莓派的算力将AI和机器视觉引入工业领域. 以前的产品都不存在动作机构,仅仅将结果输出到指示灯.蜂鸣器或者显示器上,没有安全隐患, 现在 ...

  4. IDEA 2021.2.3 安装与破解教程

    首先说明,大部分情况下,花10块钱都可以在淘宝找人直接帮你完美解决这个资源问题 所以千万不要相信一些所谓的百度结果,一般都是花费了时间却最后无法解决破解的问题 我相信任何一个想要学习软件开发的人一定要 ...

  5. CF1610F F. Mashtali: a Space Oddysey

    我们首先发现有如下性质: 我们不妨先随机定向边,那么我们发现无论我们如何翻转边. 都会对其两端的点,造成 \(2 / 4\) 的影响,所以我们发现如果一个点其和他相连的所有边权和为偶数,则我们不能调整 ...

  6. [省选联考 2020 A 卷] 组合数问题

    题意 [省选联考 2020 A 卷] 组合数问题 想法 自己在多项式和数论方面还是太差了,最近写这些题都没多少思路,看完题解才会 首先有这两个柿子 \(k*\dbinom{n}{k} = n*\dbi ...

  7. 洛谷 P3750 - [六省联考2017]分手是祝愿(期望 dp)

    题面传送门 首先我们需注意到这样一个性质:那就是对于任何一种状态,将其变为全 \(0\) 所用的最小步数的方案是唯一的--考虑编号为 \(n\) 的灯,显然如果它原本是暗着的就不用管它了,如果它是亮着 ...

  8. 66-Reorder List

    Reorder List My Submissions QuestionEditorial Solution Total Accepted: 64392 Total Submissions: 2818 ...

  9. rabbit mq的php使用 amqp 的支持

    rabbit mq的php使用 php想要操作rabbit 需要扩展amqp 1,先查看自己的php版本 phpinfo() 接下来下载dll文件 地址http://pecl.php.net/pack ...

  10. 利用python爬取城市公交站点

    利用python爬取城市公交站点 页面分析 https://guiyang.8684.cn/line1 爬虫 我们利用requests请求,利用BeautifulSoup来解析,获取我们的站点数据.得 ...