AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

以 Log4j 为例,如何评估和划分安全风险

作者:Owen Garrett

  • 2022-04-28
  • 本文字数:2753 字

    阅读完需:约 9 分钟

以Log4j为例,如何评估和划分安全风险

开源软件支撑着绝大多数面向互联网的应用程序。这类项目的可用性、可获取性和质量提升了企业的创新能力,并帮助它们取得成功。它们是很好的公共产品,应该受到赞美和保护。


开源的普遍存在意味着任何已经被发现的漏洞都会产生深远的影响。攻击者看到了巨大的机会,大量的企业和用户必须快速做出响应,在他们开发的应用程序以及使用的第三方应用程序和组件中识别易受攻击的软件实例。


事实上,软件漏洞是很常见的。那么,安全专业人员如何评估漏洞可能带来的风险,并将组织的精力集中在修复那些最重要的漏洞上呢?


建立全面的可见性——你无法保护你看不到的东西


安全团队负责整个应用程序的完整性,包括所有不是由企业开发人员开发的开源组件和第三方依赖项。人们已经做了很多工作来改进软件开发过程的安全性,并通过“左移”计划和 SBOM(Software Bill of Materials,软件物料清单)来跟踪依赖项,让部署到生产环境中的代码具有高度的安全性。但是,每当有新漏洞被发布时,该如何快速识别已经部署到生产环境中的代码在哪些地方将会出现这些漏洞?安全程序的第一步通常是全面获取整个 CI/CD 管道范围内的应用程序代码安全性的可见性,一直从构建阶段到部署阶段,并跨越所有的应用程序和基础设施,包括运行的容器、Kubernetes、云供应商、虚拟机和/或裸机。消除你的盲点,以便尽早检测到并降低攻击的破坏性。


关注最重要的东西:可利用性与脆弱性


在获得全面的可见性之后,组织经常会看到大型的基础设施中存在数以万计的漏洞。然而,理论上的漏洞列表几乎没有什么实际用途。在企业可以花时间修复的所有漏洞中,最重要的是要找出哪些漏洞对应用程序的安全性影响最大,因此必须首先修复它们。


为了找出这些漏洞,关键在于要了解脆弱性(Vulnerability,在已部署的软件中可被攻击者利用从而产生特定结果的弱点)与可利用性(Exploitability,可被攻击者用于获取利益的攻击路径)之间的区别。


需要高级别和本地访问权限的漏洞通常较少受到关注,因为对于远程攻击者来说要获得攻击路径比较困难(除非攻击者已经获得访问本地主机的高级权限,他们才有机会获得进一步的控制权)。值得关注的是可能由以下因素触发的漏洞,例如,不会被防火墙设备过滤的远程网络流量,以及直接从不可信的网络源接收流量的主机。


评估和划分潜在的漏洞利用


在根据漏洞的可利用性对其进行划分并以此来确定修复优先级时,你需要考虑以下的部分或全部标准:


  • 漏洞的严重程度:CVSS(Common Vulnerability Scoring System,通用漏洞评分系统)分数为漏洞的严重程度提供了一个基线,可用于对漏洞进行比较。然而,CVSS 分数并没有考虑实际的应用程序和基础设施的上下文,所以离获得准确的信息存在一定的差距。

  • 攻击向量——网络与本地系统访问:网络访问漏洞通常是攻击的第一步,而本地系统访问漏洞要在攻击者进入应用程序后才能发挥作用。这意味着你需要立即封掉任何会导致服务受攻击的网络攻击路径,同时找到服务节点上潜在的攻击行为,并采取纠正措施。

  • 贴近攻击表面:是否存在一种攻击路径,攻击者可以通过该路径到达并利用该漏洞?在考虑攻击路径时,需要考虑攻击者可能会绕过防火墙、负载平衡器、代理和其他跳转点,并解决其中的任何一个攻击点,同时让开发人员更新、测试和重新部署易受攻击的应用程序。

  • 网络连接的存在:尽管所有可以从外部触及的漏洞都值得关注,但带有通用网络连接的应用程序的漏洞是最值得关注的。攻击者通常会使用侦察(Recon)技术发现这些漏洞。


这里的关键是将运行时上下文添加到漏洞数据中,这样就能够识别最容易被利用的漏洞,并确定首先要修补哪些漏洞,因为它们对应用程序的安全性构成了最大的危险。


考虑使用开源的ThreatMapper等工具来帮助你识别最容易被利用的漏洞。随着条件发生变化,你需要持续不断地运行这样的工具,将安全工作放在在最需要的地方。


限制侦察活动


攻击者通常会根据事先准备好的剧本,使用在MITRE ATT&CK中记录的战术和技术展开攻击活动。这些战术遵循的是网络杀伤链等模型,从侦察活动开始,然后再进行初步的攻击。最初的攻击通常旨在获得有限的本地控制权,然后攻击者就有了大量的选择来探索、升级特权、安装持久控制系统和侦察邻近的系统,以便横向传播并找到更大的战利品。


要限制侦察活动的有效性,首先要确定攻击者可能采取的攻击路径。为了实现双保险,确保每一条攻击路径都有过滤技术保护:


  • 通过 WAF 捕获并丢弃已知的侦察流量;

  • 使用基于协议和源的过滤技术来限制能够访问这些路径的客户端;

  • 使用额外的应用程序级过滤:

  • 确保事务经过身份验证;

  • 对于 API 流量,确保事务来自可信的客户端。


ThreatMapper 可以可视化最容易被利用的漏洞的攻击路径,这样你就可以确定如何将它们关闭。


收集“攻击指标”和“损害指标”


尽管已经尽了最大的努力来保护攻击表面并限制了可见性,但仍然可能由于各种原因发生攻击——零日攻击、蓄意破坏供应链、对影子 IT 和其他非托管资产缺乏可见性,等等。通过NVD发布的 CVE 大约是每天50个,因此在产品中发现新漏洞的可能性非常大。


因此,另一条关键的防线是监控内部网络、主机和工作负载的攻击指标(IoA)和损害指标(IoC)。


IoA 可以包括来自不寻常来源的探测、侦察流量,或者可能表明存在 C2C(容器到容器)网络、远程遥测或泄漏企图的网络流量。IoC 表明主机出现了问题,攻击者已经进入,包括异常的进程行为、文件系统访问或文件系统修改。


建议构建“红色团队”功能,让它定期扫描应用程序,找出攻击信号及其对组织的影响。寻找一些可以帮助你自动化和管理大量 IoA 和 IoC 事件的工具,包括最小化误报、存储事件以供后续的分析,最重要的是将事件关联起来,以便了解攻击特征以及这些攻击对应用程序的渗透情况。有了这些知识,你就可以部署有针对性的对策,阻止来自内部或外部的侦察或攻击流量,并隔离受损的工作负载。


结论


Log4j 告诉我们,漏洞是不可避免的,但这不应该成为阻止组织使用开源代码作为创新和实现其他有价值的目标的障碍。在指导组织开展安全工作时,安全主管们可以获取跨所有基础设施的应用程序流量的全面可见性,结合漏洞可利用性评估和优先级排序的策略,在寻找攻击痕迹时持续保持警惕,降低与 Log4j 和下一个重大漏洞相关的风险。


作者简介


Owen Garrett 是 Deepfence 公司的产品和社区主管,为 Deepfence 的安全技术制定开源战略。他以他在 Riverbed、NGINX 和 F5 等公司 20 年的软件工程和产品领导经验为基础,在 Deepfence 指导公司的路线图,为云原生应用创建一个开源的“安全和可观察性”平台。在加入 Deepfence 之前,Owen 领导 NGINX 的产品开发,让 NGINX 发展成为部署最为广泛的开源项目之一,保护了超过 5 亿个网站,成为无数生态系统项目的核心。Owen 在网络技术方面拥有多项专利,经常在技术会议上发表演讲,是行业活动的思想领袖。


原文链接

Strategies for Assessing and Prioritizing Security Risks Such as Log4j

2022-04-28 09:582625

评论

发布
暂无评论
发现更多内容

35张图,直观理解Stable Diffusion

OneFlow

人工智能 深度学习 Stable Diffusion

浅谈服务接口的高可用设计

京东科技开发者

负载均衡 接口 后端 混沌工程 企业号 1 月 PK 榜

Python报错:ModuleNotFoundError: No module named 'xxx'

Geek_7ubdnf

Python

粒子滤波 PF(Particle filter)算法

Geek_7ubdnf

机器学习

智能图像处理:基于边缘去除和迭代式内容矫正的复杂文档图像校正

合合技术团队

图像处理 图像预处理 人工智能’

数维图可视化编辑器超10项功能升级,您的需求就在其中

2D3D前端可视化开发

数据可视化 数字孪生 三维可视化 web3d web组态软件

互联网医疗月度观察:规范化、合法化的网络售药新时代到来

易观分析

互联网医疗

Linux安装与卸载软件

Geek_7ubdnf

Linux

【玩转 Cloud Studio】 Cloud Studio的入门教程

Geek_7ubdnf

studio

Spring+Vue增删改查实例

Geek_7ubdnf

Vue springboot

mmdetection训练数据遇到的问题

Geek_7ubdnf

Python 机器学习

【1.6-1.13】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动

还在自建MQTT物联网平台?快来试试开源MQTT托管型物联网平台——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

微信小程序实验案例:简易成语小词典

TiAmo

小程序 微信小程序

pip安装报错:UnicodeDecodeError 'utf-8' codec can't decode byte 0xc3 in position 4

Geek_7ubdnf

Python

Spring获取Bean的9种方式

小小怪下士

Java spring 程序员 springboot

Python报错:ImportError cannot import name 'imresize'

Geek_7ubdnf

Python

中移链合约常用开发介绍 (二)多索引表的使用

BSN研习社

再获殊荣!图数据库 NebulaGraph 获得 ITPUB 2022 创新产品奖

最新动态

Win10桌面图标显示问题

Geek_7ubdnf

windows

如何使用免适配云鹰模组实现多网可切?——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

JDBC的基本概念

Geek_7ubdnf

Java

Vue实现登录功能

Geek_7ubdnf

Vue

2022总结,强风吹拂

程思扬

总结 年终总结 经验分享、

conda安装报错:PermissionError [Errno 13] Permission denied

Geek_7ubdnf

Python

如何使用企业账户进行协作?

Towify

如何使用滑块实现切换图片功能?

Towify

10分钟玩转阿里云物联网平台设备接入、管理、运维——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

电脑音视频暂停再继续,声音突然变大

Geek_7ubdnf

windows

2022年IAA行业品类年度表现总结

易观分析

视频 IAA

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

九章云极DataCanvas

以Log4j为例,如何评估和划分安全风险_语言 & 开发_InfoQ精选文章