本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
修复代码审查结果
查看代码审查的安全发现后,您可以使用 AWS 安全代理针对 GitHub 存储库源中的发现生成代码修复程序。对于私有存储库,AWS 安全代理会打开包含建议修复程序的拉取请求。对于公共存储库,AWS Security Agent 会将可下载的差异附加到您可在本地应用的发现中。来自 S3 来源的发现必须手动修复。
先决条件
在开始之前,请确保您满足以下条件:
-
已完成的代码审查并附有调查结果
-
GitHub 作为代码审查来源连接的存储库
-
访问 AWS 安全代理 Web 应用程序
-
熟悉应用程序的架构和安全要求
代码修复的工作原理
当您触发发现的代码修复时,AWS 安全代理会分析该发现及其代码位置,然后生成代码修复。修复程序的交付方式取决于来源:
-
私有 GitHub 存储库 — AWS 安全代理向相关存储库提交拉取请求。拉取请求包括对安全问题和所做更改的描述。
-
公共 GitHub 存储库 — AWS Security Agent 在发现中附上了建议的差异,因此漏洞在修复之前不会被披露。您可以从 Web 应用程序下载差异,然后使用将其应用到本地。
git apply /path/to/code_remediation_changes.diff -
S3 源-代码补救不可用。使用发现的描述、代码位置和风险推理来手动应用修复。
重要
AWS Security Agent 创建的拉取请求对所有拥有存储库读取权限的用户都可见。合并前请检查更改,确保它们符合应用程序的要求。
自动代码修复
如果您在创建代码审查时启用了自动代码修复,AWS Security Agent 会在审查完成后立即为所有符合条件的发现生成修复程序。您无需采取任何其他操作——当运行结束时,拉取请求会出现在您连接的私有 GitHub 存储库中,而差异会出现在公共 GitHub 存储库的结果上。
手动代码修复
如果禁用了自动代码修复,则可以针对来自 GitHub 源的单个发现触发补救措施。
-
导航到已完成的代码审查运行的 “发现” 选项卡。
-
选择要修复的调查结果。
-
在查找结果详细信息面板中,选择修复代码。
-
AWS Security Agent 会生成代码修复,并根据存储库的可见性向存储库提交拉取请求或在发现结果中附加可下载的差异。
查看补救拉取请求
AWS 安全代理向私有 GitHub 存储库提交补救拉取请求后:
-
导航到您的 GitHub 存储库。
-
找到 AWS 安全代理创建的拉取请求。
-
查看更改,包括:
-
解释安全发现和修复的描述
-
针对该漏洞的代码进行了更改
-
有关补救方法的任何相关背景
-
-
如果修复合适,请合并拉取请求,或者将其关闭并实施替代解决方案。
提示
合并修复拉取请求后,开始运行新的代码审查,以验证修复程序是否解决了发现的问题,并且不会引入新的安全问题。
应用补救差异
要获得来自公共 GitHub 存储库的结果,请在本地应用可下载的差异。
-
在查找结果详细信息面板中,从 “代码修复” 部分下载差异。
-
在存储库的本地克隆中,运行
git apply /path/to/code_remediation_changes.diff。 -
查看已应用的更改,根据您的应用程序对其进行测试,然后通过正常的开发工作流程进行提交。
限制
-
代码补救仅适用于来自 GitHub 存储库来源的发现。来自 S3 来源的发现必须手动修复。
-
AWS 安全代理根据其对漏洞的分析生成修复程序。在合并或提交更改之前,请先查看所有更改,以确保它们适合您的应用程序。
-
除了自动修复之外,一些复杂的发现可能需要手动干预。
后续步骤
修复发现后:
-
查看和合并 GitHub 仓库中的拉取请求,或者通过正常工作流程提交已应用的差异
-
运行新的代码审查以验证修复并检查是否存在剩余问题
-
确认补救后解决 Web 应用程序中的发现问题
-
根据需要调整代码审查来源或设置(请参阅启用代码审查)