亚马逊AWS官方博客

Amazon Inspector 的三项新功能拓宽了工作负载的漏洞扫描领域

今天,Amazon Inspector 增加了三项新功能,以增加扫描工作负载中是否存在软件漏洞时的可能性:

  • Amazon Inspector 推出了一组新开源插件和一个 API,允许您在构建时直接从持续集成和持续交付(CI/CD)管道中评估容器映像是否存在软件漏洞,而无论它们在哪里运行。
  • Amazon Inspector 现在可以持续监控您的 Amazon Elastic Compute Cloud(Amazon EC2)实例,而无需安装代理或其他软件(预览版)。
  • Amazon Inspector 使用生成式人工智能(AI)和自动推理为您的 AWS Lambda 函数提供辅助代码修复。

Amazon Inspector 是一项漏洞管理服务,可持续扫描您的 AWS 工作负载,以查找已知的软件漏洞和意外网络攻击。Amazon Inspector 会自动发现和扫描正在运行的 EC2 实例、Amazon Elastic Container Registry(Amazon ECR)和您的 CI/CD 工具中的容器映像,以及 Lambda 函数。

我们都知道,在迅速解决漏洞方面,工程团队经常会面临挑战。这是因为紧迫的发布截止日期,迫使团队优先考虑开发而非解决漏洞待办事项中的问题。但是,这也是由于安全格局复杂且不断演变的性质。结果,有一项研究表明,组织平均需要 250 天才能解决关键漏洞。因此,至关重要的是要在开发生命周期中及早发现潜在的安全问题,以防止将其部署到生产环境中。

检测 AWS Lambda 函数代码中的漏洞
让我们从 Lambda 函数代码开始走近开发人员。

2022 年 11 月2023 年 6 月,Amazon Inspector 增加了扫描函数依赖项和代码的功能。今天,我们增加了生成式人工智能和自动推理,用于分析您的代码并以代码补丁的形式自动创建补救措施。

Amazon Inspector 现在可为安全扫描期间检测到的多类漏洞提供上下文代码补丁。Amazon Inspector 扩展了对您的代码的评测,以解决注入缺陷、数据泄露、密码学薄弱或加密缺失等安全问题。多亏了生成式人工智能,Amazon Inspector 现在可以提供关于其修复方法的建议。它在上下文中显示受影响的代码段以及建议的补救措施。

请看以下示例。我用硬编码 AWS 密钥写了一段简短的 Python 代码段。切勿这样操作!

def create_session_noncompliant():
    import boto3
    # Noncompliant: uses hardcoded secret access key.
    sample_key = "AjWnyxxxxx45xxxxZxxxX7ZQxxxxYxxx1xYxxxxx"
    boto3.session.Session(aws_secret_access_key=sample_key)
    return response

我部署了代码。这会触发评测。打开 AWS 管理控制台并导航至 Amazon Inspector 页面。在调查发现部分,我发现了漏洞。它以通俗易懂的解释语言以及 diff 文本和图形的格式为我提供了漏洞位置建议的补救措施

Inspector 自动代码修复

检测容器 CI/CD 管道中的漏洞
现在,让我们在构建容器时转到您的 CI/CD 管道。

直到今天,Amazon Inspector 在容器映像构建并存储 Amazon Elastic Container Registry(Amazon ECR)中后就能够对其进行评测。从今天开始,在 CI/CD 工具中构建容器映像期间,Amazon Inspector 可以对其进行评测,从而更快地发现开发过程中的安全问题。评测结果几乎实时地返回到 CI/CD 工具的控制面板。无需启用 Amazon Inspector 即可使用这项新功能。

我们为 JenkinsJetBrain 的 TeamCity 提供即用型 CI/CD 插件,未来还会有更多。我们的 AWS 开发工具包AWS 命令行界面(AWS CLI)还提供了新的 API(inspector-scan)和命令(inspector-sbomgen)。这种新 API 允许您将 Amazon Inspector 集成到您选择的 CI/CD 工具中。

执行后,该插件会在配置的资源上运行容器提取引擎,并生成与 CycloneDX 兼容的软件物料清单(SBOM)。然后,该插件将 SBOM 发送给 Amazon Inspector 进行分析。该插件几乎实时接收扫描结果。它解析响应并生成输出,Jenkins 或 TeamCity 可使用这些输出来通过或驳回管道的执行。

要在 Jenkins 中使用插件,我首先要确保安装了 Jenkins 的 EC2 实例附加有角色,或者我有 AWS 访问密钥和秘密访问密钥,有权调用 Amazon Inspector API。

我直接从 Jenkins 安装插件(Jenkins 控制面板 > 管理 Jenkins > 插件

检查 CICD 安装 Jenkins 插件

然后,我在自己的流程中添加了 Amazon Inspector 扫描步骤。

Inspector CICD - 添加 Jenkins 步骤

我使用自己创建的 IAM 角色(或在本地运行时使用 AWS 访问密钥和秘密访问密钥)、我的 Docker 凭证AWS 区域映像 ID 来配置该步骤。

Inspector CICD - 配置 Jenkins 插件

当 Amazon Inspector 检测到漏洞时,会将其报告给插件。构建失败,我可以直接在 Jenkins 中查看详细信息。

Inspector CICD - Jenkins 中的调查发现

SBOM 生成了解流行操作系统的软件包或应用程序,例如 Alpine、Amazon Linux、Debian、Ubuntu 和 Red Hat 软件包。它还可检测 Go、Java、NodeJS、C#、PHP、Python、Ruby 和 Rust 编程语言的软件包。

无需安装代理即可检测 Amazon EC2 上的漏洞(预览版)
最后,让我们谈谈对您的 EC2 实例进行的无代理检查。

目前,Amazon Inspector 使用 AWS Systems ManagerAWS Systems Manager Agent(SSM Agent)来收集有关您的 EC2 实例库存的信息。为了确保 Amazon Inspector 能够与您的实例通信,您必须确保三个条件。首先,实例上安装了最新版本的 SSM 代理。其次,SSM 代理已启动。第三,您向实例附加了一个 IAM 角色以允许 SSM 代理与 SSM 服务进行反向通信。这看上去既合理而简单。但是,在考虑到跨多个操作系统版本、AWS 区域和账户进行大规模部署时,或者在管理传统应用程序时,情况并非如此。启动的每个不满足这三个条件的实例都可能成为基础设施中的安全漏洞。

使用无代理扫描(预览版),Amazon Inspector 不需要 SSM 代理扫描您的实例。它会自动发现现有和新的实例,并为其安排漏洞评测。它通过拍摄实例 EBS 卷的快照并分析快照来实现这一点。这种技术的额外优势是不会消耗您的实例上的任何 CPU 周期或内存,从而将 100% 的(虚拟)硬件可用于您的工作负载。分析后,Amazon Inspector 将删除快照。

首先,请在 AWS 管理控制台的 Amazon Inspector 部分中的 EC2 扫描设置下启用混合扫描。混合模式意味着 Amazon Inspector 将继续使用基于 SSM 代理的扫描来扫描由 SSM 管理的实例,对于非由 SSM 管理的实例,则自动切换到无代理模式。

Inspector 启用混合扫描

账户管理下,我可以验证扫描的实例列表。我可以查看哪些实例使用 SSM 代理扫描,哪些不使用。

Inspector 的监控实例列表

调查发现下,我可以按漏洞、按账户、按实例等进行筛选。我按实例选择,然后选择要审核的无代理实例。

对于该特定实例,Amazon Inspector 列出了 200 多项调查发现,并按严重性排序。

Inspector 的调查发现列表

像往常一样,我可以看到调查发现的细节,从而了解风险是什么以及如何缓解风险。

Inspector 的调查发现详情

定价和可用性
适用于 Lambda 函数的 Amazon Inspector 代码修复在十个区域中可用:美国东部(俄亥俄州、弗吉尼亚州北部)、美国西部(俄勒冈州)、亚太地区(新加坡、悉尼、东京)和欧洲(法兰克福、爱尔兰、伦敦、斯德哥尔摩)。无需额外成本即可使用。

适用于 Amazon EC2 的 Amazon Inspector 无代理漏洞扫描现已在三个 AWS 区域提供预览版:美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)和欧洲地区(爱尔兰)。

用于在构建时扫描容器的新 API 如今已在推出了 Amazon Inspector 的 21 个 AWS 区域中可用

无预付费用或订阅费用。我们根据活动量按需收费。每种 EC2 实例或容器映像扫描都有各自的价格。与往常一样,Amazon Inspector 定价页面上提供了详细信息。

从今天开始,将 Jenkins 或 TeamCity 代理添加到您的容器化应用程序 CI/CD 管道中,或激活无代理的 Amazon EC2 检查。

立即构建

— seb