管理安全漏洞并非易事,这不仅是因为漏洞可能很难被发现,还因为漏洞类型繁多。最新国家信息安全漏洞共享平台(CNVD)漏洞信息月度通报(2023年第5期)显示:“收集整理信息安全漏洞1581个,其中高危漏洞727个,中危漏洞746个,低危漏洞108个。上述漏洞中,可被利用来实施远程网络攻击的漏洞有1357个。”而幸运的是,相关工具和技术可以解决各种可能潜伏在技术栈任何一层的漏洞。
什么是安全漏洞?
安全漏洞是IT资源中可能被攻击者利用的错误或缺陷,其形式多种多样。安全漏洞可能是应用程序源代码中的一个编码错误,能够被用于发动缓冲区溢出攻击。它可能是开发人员的疏忽,忘记在应用程序中对输入内容妥当地进行验证,从而使注入攻击成为可能。它可能是访问控制策略或网络配置中的一个错误配置,使外部人士能够访问敏感资源。
安全漏洞、漏洞利用、漏洞威胁、漏洞攻击
“安全漏洞”、“漏洞利用”、“漏洞威胁”和“漏洞攻击”这几个词往往会接连出现。然而,尽管这些术语密切相关,但它们各自指的是可能导致安全事件的事件链中不同部分:
• 安全漏洞是有可能被利用以发动攻击的缺陷。
• 漏洞利用是指利用漏洞来执行攻击的方法。比如,将恶意代码注入到应用程序中,就可能造成漏洞利用。
• 漏洞威胁是导致漏洞利用发生的一组必要条件。威胁可能只存在于软件在某个操作系统上运行之时,或者当攻击者能够访问某个界面时。
• 漏洞攻击是指发生的攻击。当威胁者成功地执行一个漏洞时,就会发生漏洞攻击。
• 由于安全漏洞构成了上述漏洞利用、漏洞威胁和漏洞攻击的基础,对漏洞进行检测是将安全风险扼杀在萌芽状态的最佳方式。如果消除了漏洞,也就消除了其可能导致的漏洞利用、漏洞威胁和潜在的漏洞攻击。
安全漏洞的主要类型
虽然IT环境中可能存在各种各样安全漏洞,但大多数都归属于以下四类:
• 恶意代码: 恶意方插入代码库的代码(如恶意软件),可被利用,以对系统进行未授权访问或对应用程序进行控制。
• 错误配置:云身份和访问管理(IAM)规则等的配置错误,提供了对敏感数据的公共访问,可能导致漏洞攻击。
• 编码缺陷: 编码错误或疏忽(例如未能执行输入验证,因此不能检测旨在获得未授权访问的应用程序输入),可能导致漏洞。
• 缺少加密: 未妥善加密的的数据,无论是静态数据还是网络中正在传输的数据,都容易受到攻击。
检测应用程序的安全漏洞
鉴于安全漏洞形式多样,对其检测也需要多管齐下。有多种技术有助于发现安全风险。
静态应用安全分析
静态应用安全分析(SAST)是安全测试的一个类别,通过扫描源代码和(在某些情况下)二进制代码,以确定其中存在的漏洞。通常情况下,SAST会寻找漏洞的“签名”,如已知不安全的依赖项。
动态应用安全分析
动态应用安全分析(DAST)通过对测试环境中的应用自动发起主动攻击来识别漏洞。如攻击成功,则能揭示应用程序中的漏洞。
渗透测试
在渗透测试中,安全测试人员会手动尝试识别和利用漏洞。渗透测试不同于DAST之处在于,渗透测试需要安全专家来主动寻找漏洞,而DAST则有赖于自动攻击模拟。
图像扫描器
图像扫描器(例如JFrog Xray)能够在软件被编译或打包后检测其漏洞。因此,对于识别应用程序包中可能招致攻击的薄弱依赖项或配置,图像扫描器是非常有用的。例如,图像扫描器可以检查容器图像,以确定该图像的任何依赖项是否包含漏洞。
配置审计
配置审计工具通常用于验证承载应用程序的基础设施的配置,而非应用程序本身(尽管在某些情况下,配置审计可在定义了应用程序设置的配置文件上执行)。
例如,云环境的配置审计能够检测不安全的IAM规则或网络配置。此外,配置审计器可用于扫描Kubernetes环境,以检测Kubernetes安全上下文、网络策略或其他会削弱环境安全态势的设置中的错误配置。