包漏洞扫描的最佳实践

JFrog支持
2021-08-23 15:09

安全漏洞扫描是确保几乎任何现代软件交付管道安全的基本步骤。与SCA工具,可以自动识别用于部署应用程序的包中的已知漏洞,包扫描器可以显著降低将不安全软件发布到生产环境中的风险。

然而,保护包需要的不仅仅是简单地设置一个自动包扫描程序并假设它将检测到所有潜在的漏洞。正如本文所解释的,团队应该采取额外的步骤来充分利用包漏洞扫描。

什么是包漏洞扫描?

软件包漏洞扫描是对软件包进行已知漏洞自动分析的过程。

漏洞扫描器几乎可以检查任何类型的包。例如,它们可以用来扫描Docker容器映像,或者扫描开发人员为在Linux系统上部署软件而创建的Debian或RPM包。

通常,包扫描器的工作原理是检查软件包的内容是否与已知的易受攻击的项目相匹配,这些项目基于跟踪应用程序和库中的安全缺陷的数据库。例如,漏洞扫描程序可以确定软件包包含包含已知安全错误的软件库的特定版本。扫描器将标记问题,并警告开发人员将库更新到最新的安全版本。

包漏洞扫描器的局限性

虽然漏洞扫描器是查找软件中许多类型的安全风险的重要工具,但重要的是要记住,它们只检查已经在漏洞数据库中识别的漏洞。

它们通常无法检测到安全漏洞,比如缓冲区溢出漏洞,这些漏洞存在于开发人员内部编写的代码中。这是静电的工作App 保护测试工具。它们也不监视应用程序行为以发现安全漏洞的迹象,这是siem和其他安全监视工具处理的任务。

另一个限制是解释漏洞扫描器可能生成的大量警报。当您扫描包时,您通常会收到一长串漏洞,并且扫描器不一定会评估它所识别的每个漏洞的严重性。出于这个原因,了解哪些漏洞严重到足以保证不使用映像,以及哪些构成微不足道的风险可能是一项挑战。收集这种洞察力通常需要手动分析每个漏洞及其对环境的潜在影响。

充分利用包漏洞扫描器

简单地将自动化包漏洞扫描程序作为CI/CD管道的一部分部署,是领先于安全问题的第一步。但是团队应该采取额外的步骤来最大化发现包中所有潜在漏洞的机会。

尽量保持包小

每个包中的代码和依赖项越多,漏洞扫描器就越难以解包所有层并检测漏洞。如果包包含许多项,修复安全问题和重新构建包也会更加困难。

最佳实践是确保您创建的每个包只包含部署某一方面功能所需的代码和其他资源。2022世界杯阿根廷预选赛赛程抵制将应用程序的多个组件塞进单个包的诱惑。

例如,与其创建包含多个微服务的Docker镜像,不如为每个微服务生成不同的镜像。或者,与其将应用程序前端和应用程序逻辑都打包到同一个Debian包中,不如将它们分离到不同的包中。

在开发生命周期的早期进行扫描

与其等到部署之前才扫描包,不如在包构建完成后立即执行扫描。

尽早扫描有两个好处。首先,漏洞更容易在CI/CD管道的早期处理,因为您的投资较少。如果等到已经对包执行了其他类型的测试后才进行扫描,那么如果检测到漏洞并且必须重新构建包,则需要再次运行这些测试。

其次,早期扫描可以最小化生产环境中使用不安全应用程序的风险。您不希望在扫描容器映像之前将它们推送到注册表中,因为用户可以在注册表中开始下载和安装它们。

早期扫描并不能代替部署之前的扫描,这对于确保您评估实际投入生产的软件的风险也很重要。但是,在开发周期的早期进行扫描也可以帮助您在潜在的漏洞转移到管道之前清除它们。

评估优先级

如上所述,如果您的团队努力确定哪些漏洞严重到足以使包无法使用,那么包中的长漏洞列表并不是很有帮助。要避免这个问题,可以购买一个扫描器,它可以根据对每个漏洞的实际安全影响的分析来进行有效的漏洞风险评估和优先级排序。这样,您就可以很容易地确定哪些漏洞是碍事的,哪些问题可以忽略。

扫描包,即使您信任源

有时,您部署的包来自第三方而不是内部。在这些情况下,无论您对源代码有多信任,确保扫描包都是至关重要的。

投资于一个全面的漏洞数据库

包漏洞扫描器的有效性取决于您提供给它们的漏洞数据。如果您的漏洞数据库不包含已知的安全问题,则扫描仪无法检测到它。虽然存在各种免费提供的公共漏洞数据库,例如MITRE CVE目录或者是国家漏洞数据库,它们并不总是包含最新的威胁信息。

这就是为什么投资是一个明智的选择在漏洞扫描解决方案中,供应商利用了一个全面的漏洞数据库,利用了多个威胁信息来源——包括公共风险目录、专有来源,如苏格兰皇家银行VulnDB以及安全专家的内部研究。所有这些漏洞资源都集成在一起2022世界杯阿根廷预选赛赛程JFrog x光