Skip to main content

查看和更新 Dependabot 警报

如果 GitHub 发现项目中存在不安全的依赖项,你可以在存储库的 Dependabot 警报选项卡中查看详细信息。 然后,你可以更新项目以解决或忽略警报。

谁可以使用此功能?

  • 存储库管理员、组织所有者以及具有“写入”或“维护”访问权限的人员********
  • 具有显式访问权限的用户和团队。 请参阅“授予对安全警报的访问权限”。

存储库的 Dependabot alerts 选项卡列出所有打开和关闭的 Dependabot alerts 以及对应的 Dependabot security updates。 可以按包、生态系统或清单筛选警报。 还可以对警报列表进行排序,单击特定警报以获取更多详细信息。 还可以逐个关闭或重新打开警报,也可以一次选择多个警报。 有关详细信息,请参阅“关于 Dependabot 警报”。

你可以为任何使用 Dependabot alerts 和依赖项关系图的存储库启用自动安全更新程序。 有关详细信息,请参阅“关于 Dependabot 安全更新”。

关于仓库中有漏洞的依赖项的更新

在检测到代码库的默认分支正在使用具有已知安全风险的依赖项时,GitHub 会生成 Dependabot alerts。 对于启用了 Dependabot security updates 的仓库,当 GitHub 在默认分支中检测到有漏洞的依赖项时,Dependabot 会创建拉取请求来修复它。 拉取请求会将依赖项升级到避免漏洞所需的最低安全版本。

Dependabot 不会为恶意软件生成 Dependabot alerts。 有关详细信息,请参阅“关于 GitHub 公告数据库”。

每个 Dependabot 警报都有一个唯一的数字标识符,Dependabot alerts 选项卡列出了每个检测到的漏洞的警报。 旧版 Dependabot alerts 按依赖项对漏洞进行分组,并为每个依赖项生成一个警报。 如果导航到旧版 Dependabot 警报,则会将您重定向到为该包筛选的 Dependabot alerts 选项卡。

可以使用用户界面上提供的各种筛选器和排序选项对 Dependabot alerts 进行筛选和排序。 有关详细信息,请参阅下面的“确定 Dependabot alerts 优先级”。

还可以审核为响应 Dependabot 警报而执行的操作。 有关详细信息,请参阅“审核安全警报”。

确定 Dependabot alerts 优先级

GitHub 可帮助确定修复 Dependabot alerts 的优先级。 默认情况下,Dependabot alerts 按重要性排序。 “最重要”排序顺序有助于确定需首先处理的 Dependabot alerts。 警报根据其潜在影响、可操作性和相关性进行排序。 优先级计算正在逐步完善,包括 CVSS 分数、依赖范围以及是否为警报找到易受攻击的函数调用等因素。

还可以使用 Dependabot 自动分类规则 确定 Dependabot alerts 的优先级。 有关详细信息,请参阅“关于 Dependabot 自动分类规则”。

可以通过将筛选器作为 key:value 对输入到搜索栏中,对 Dependabot alerts 进行排序和筛选。

选项说明示例
ecosystem显示有关所选生态系统的警报使用 ecosystem:npm 显示 npm 的 Dependabot alerts
has显示符合所选筛选条件的警报使用 has:patch 显示与具有补丁的公告相关的警报
使用 has:vulnerable-calls 显示与调用易受攻击函数相关的警报
is基于警报状态显示警报使用 is:open 显示打开的警报
manifest显示有关所选清单的警报使用 manifest:webwolf/pom.xml 显示有关 webwolf 应用程序的 pom.xml 文件的警报
package显示有关所选包的警报使用 package:django 显示有关 django 的警报
resolution显示所选解决状态的警报使用 resolution:no-bandwidth 显示以前因缺乏用于修复的资源或时间而停止的警报
repo基于相关存储库显示警报
请注意,此筛选器仅适用于安全概述。 有关详细信息,请参阅“关于安全概述”。
使用 repo:octocat-repo 显示名为 octocat-repo 的存储库中的警报
scope基于相关依赖项范围显示警报使用 scope:development 显示仅在开发过程中使用的依赖项的警报
severity基于严重性级别显示警报使用 severity:high 显示严重性为“高”的警报
sort根据所选排序顺序显示警报警报的默认排序选项是 sort:most-important,这会按重要性对警报进行排名
使用 sort:newest 显示 Dependabot 报告的最新警报

除了通过搜索栏提供的筛选器之外,还可以使用警报列表顶部的下拉菜单对 Dependabot alerts 进行排序和筛选。 或者,若要按标签进行筛选,请按下分配给警报的标签,将该筛选器自动应用于警报列表。

搜索栏还允许对警报和相关安全公告进行全文搜索。 可以搜索安全公告名称或说明的一部分,以返回存储库中与该安全公告相关的警报。 例如,搜索 yaml.load() API could execute arbitrary code 会返回链接到“PyYAML 未安全地反序列化 YAML 字符串,导致任意代码执行”的 Dependabot alerts,因为该搜索字符串出现在公告说明中。

Dependabot alerts 选项卡中筛选器和排序菜单的屏幕截图。

依赖项范围的受支持生态系统和清单

下表总结了各种生态系统和清单是否支持依赖项范围,即 Dependabot 是否可以识别依赖项用于开发还是生产。

语言生态系统清单文件支持的依赖项范围
Dart酒馆pubspec.yaml
Dart酒馆pubspec.lock
GoGo 模块go.mod否,默认为运行时
JavaMavenpom.xml test 映射到开发,否则范围默认为运行时
JavaScriptnpmpackage.json
JavaScriptnpmpackage-lock.json
JavaScriptnpmpnpm-lock.yaml
JavaScriptyarn v1yarn.lock否,默认为运行时
PHP编辑器composer.json
PHP编辑器composer.lock
Python诗歌poetry.lock
Python诗歌pyproject.toml
Pythonpiprequirements.txt 如果文件名包含 testdev,则范围为开发,否则为运行时
Pythonpippipfile.lock
Pythonpippipfile
RubyRubyGemsGemfile
RubyRubyGemsGemfile.lock否,默认为运行时
RustCargoCargo.toml
RustCargoCargo.lock否,默认为运行时
YAMLGitHub Actions-否,默认为运行时
.NET(C#、F#、VB 等)NuGet.csproj/.vbproj .vcxproj/.fsproj否,默认为运行时
.NETNuGetpackages.config否,默认为运行时
.NETNuGet.nuspec When the tag != runtime

作为开发依赖项列出的包的警报在 Dependabot alerts 页上用 Development 标签标记,还可以通过 scope 筛选器进行筛选。

显示分配给警报列表中某个警报的“开发”标签的屏幕截图。 标签以深橙色边框突出显示。

开发范围包警报的警报详细信息页显示包含 Development 标签的“标记”部分。

显示警报详细信息页中“标记”部分的屏幕截图。 标签以深橙色边框突出显示。

关于检测对易受攻击函数的调用

Note

  • 检测 Dependabot 对易受攻击函数的调用的功能为 公共预览版,可能随时更改。
  • 在公共存储库上启用对易受攻击的调用的检测。 此分析也可用于使用 GitHub Enterprise Cloud 并获得 GitHub Advanced Security 许可的组织所拥有的专用存储库。

有关详细信息,请参阅“关于 GitHub 高级安全性”。

当 Dependabot 告知存储库使用易受攻击的依赖项时,需要确定易受攻击的函数,并检查是否正在使用它们。 获取此信息后,可以确定升级到依赖项的安全版本的紧迫程度。

对于支持的语言,Dependabot 会自动检测你是否使用易受攻击的函数,并将标签“易受攻击的调用”添加到受影响的警报。 可以在 Dependabot alerts 视图中使用此信息来更有效地对修正工作进行会审和确定优先级。

Note

在 公共预览版 期间,此功能仅适用于在 2022 年 4 月 14 日之后创建的新 Python 公告,以及一部分历史 Python 公告__。 GitHub 正在努力在滚动添加的其他历史 Python 公告中回填数据。 易受攻击的调用仅在 Dependabot alerts 页上突出显示。

屏幕截图显示带有“易受攻击的调用”标签的警报。 标签用橙色框出。

可以在搜索字段中使用 has:vulnerable-calls 筛选器进行筛选,以仅显示 Dependabot 检测到至少一次对易受攻击的函数的调用的警报。

对于检测到易受攻击的调用的警报,警报详细信息页显示其他信息:

  • 显示函数使用位置的一个或多个代码块。
  • 列出函数本身的注释,其中包含指向调用函数的行的链接。

屏幕截图显示带有“易受攻击的调用”标签的 Dependabot 警报。 显示“调用的易受攻击的函数”的代码块和标题为“查看所有受影响的存储库”的链接以深橙色边框突出显示。

有关详细信息,请参阅下面的“查看和修复警报”。

查看 Dependabot alerts

你可以在存储库的 Dependabot alerts 选项卡中查看所有打开和关闭的 Dependabot alerts 以及对应的 Dependabot security updates。 可以通过从下拉菜单中选择筛选器来对 Dependabot alerts 进行排序和筛选。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。

    存储库标头的屏幕截图,其中显示了选项卡。 “安全性”选项卡以深橙色边框突出显示。

  3. 在安全概览的“漏洞警报”边栏中,单击“Dependabot”。 如果缺少此选项,则表示你无权访问安全警报,需要被授予访问权限。 有关详细信息,请参阅“管理存储库的安全和分析设置”。

    安全概览的屏幕截图,其中用深橙色边框突出显示了“Dependabot”选项卡。

  4. (可选)若要筛选警报,请在下拉菜单中选择筛选器,然后单击要应用的筛选器。 您还可以在搜索栏中键入过滤条件。 或者,若要按标签进行筛选,请按下分配给警报的标签,将该筛选器自动应用于警报列表。 有关对警报进行筛选和排序的详细信息,请参阅“确定 Dependabot alerts 优先级”。

    Dependabot alerts 选项卡中筛选器和排序菜单的屏幕截图。

  5. 单击要查看的警报。

  6. (可选)若要对相关安全公告提出改进建议,请在警报详细信息页面右侧,单击“建议对关于 GitHub Advisory Database 的此公告进行改进”。 有关详细信息,请参阅“在 GitHub Advisory Database 中编辑安全公告”。

    Dependabot 警报右侧边栏的屏幕截图。 标题为“建议对关于 GitHub Advisory Database 的此公告进行改进”的链接以橙色边框突出显示。

查看和修复警报

请务必确保所有依赖项都没有任何安全弱点。 当 Dependabot 在依赖项中发现漏洞时,应评估项目的暴露级别并确定保护应用程序的修正步骤。

如果依赖项的修补版本可用,则可以生成 Dependabot 拉取请求,以直接从 Dependabot 警报更新此依赖项。 如果启用了 Dependabot security updates,拉取请求可能会链接到 Dependabot 警报。

如果修补版本不可用,或者无法更新到安全版本,Dependabot 会共享其他信息,以帮助确定后续步骤。 单击查看 Dependabot 警报时,可以看到依赖项的安全公告的完整详细信息,包括受影响的函数。 然后,可以检查代码是否调用受影响的函数。 此信息可以帮助你进一步评估风险级别,并确定解决方法,或者是否能够接受安全咨询所代表的风险。

对于支持的语言,Dependabot 可检测对易受攻击函数的调用。 查看标记为“易受攻击的调用”的警报时,详细信息包括函数的名称和调用它的代码的链接。 通常,无需进一步探索即可基于此信息做出决策。

修复易受攻击的依赖项

  1. 查看警报的详细信息。 有关详细信息,请参阅“查看 Dependabot alerts”(上文)。

  2. 如果启用了 Dependabot security updates,则可能会有一个指向可修复依赖项的拉取请求的链接。 或者,可以单击警报详细信息页顶部的“创建 Dependabot 安全更新”以创建拉取请求。

    Dependabot 警报的屏幕截图,其中“创建 Dependabot 安全更新”按钮以深橙色轮廓突出显示。

  3. (可选)如果不使用 Dependabot security updates,可以使用页面上的信息来确定要升级到哪个版本的依赖项,并创建拉取请求以将依赖项更新到安全版本。

  4. 当您准备好更新依赖项并解决漏洞时,合并拉取请求。

    Dependabot 提出的每个拉取请求都包含可用于控制 Dependabot 的命令的信息。 有关详细信息,请参阅“管理依赖项更新的所有拉取请求”。

消除 Dependabot alerts

Tip

你只能消除未解决的警报。

如果你安排大量工作来升级依赖项,或者决定不需要修复警报,则可以消除警报。 消除已评估的警报可以更轻松地在新警报出现时对其进行会审。

  1. 查看警报的详细信息。 有关详细信息,请参阅上面的“查看易受攻击的依赖项”。

  2. 选择“关闭”下拉列表,然后按下关闭警报的原因。 以后可以重新打开未修复的已关闭的警报。

  3. (可选)添加消除注释。 消除操作注释将添加到警报时间线,可在审核和报告期间用作理由。 可使用 GraphQL API 检索或设置注释。 注释包含在 dismissComment 字段中。 有关详细信息,请参阅 GraphQL API 文档中的“对象”。

    Dependabot 警报页面的屏幕截图,其中包含“消除”下拉列表,以及以深橙色轮廓突出显示的用于添加消除注释的选项。

  4. 单击“消除警报”。

一次忽略多个警报

  1. 查看打开的 Dependabot alerts。 有关详细信息,请参阅“查看和更新 Dependabot 警报”。
  2. (可选)通过选择下拉菜单筛选警报列表,然后单击要应用的筛选器。 您还可以在搜索栏中键入过滤条件。
  3. 在每个警报标题的左侧,选择要消除的警报。
    Dependabot alerts 视图的屏幕截图。 选择了两个警报,这些复选框以橙色边框突出显示。
  4. (可选)在警报列表顶部,选择页面上的所有警报。
    Dependabot alerts 视图标头部分的屏幕截图。 “全选”复选框以深橙色边框突出显示。
  5. 选择“消除警报”下拉列表,然后单击消除警报的原因。
    警报列表的屏幕截图。 在“消除警报”按钮下方,将展开标有“选择消除原因”的下拉列表。 下拉列表包含各种选项的单选按钮。

查看和更新已关闭的警报

可以查看所有打开的警报,并且可以重新打开之前消除的警报。 已修复的已关闭警报无法重新打开。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。

    存储库标头的屏幕截图,其中显示了选项卡。 “安全性”选项卡以深橙色边框突出显示。

  3. 在安全概览的“漏洞警报”边栏中,单击“Dependabot”。 如果缺少此选项,则表示你无权访问安全警报,需要被授予访问权限。 有关详细信息,请参阅“管理存储库的安全和分析设置”。

    安全概览的屏幕截图,其中用深橙色边框突出显示了“Dependabot”选项卡。

  4. 若要仅查看已关闭的警报,请单击“已关闭”。

    显示 Dependabot alerts 列表的屏幕截图,其中“已关闭”选项卡以深橙色轮廓突出显示。

  5. 单击要查看或更新的警报。

  6. (可选)如果警报已关闭,并且想要重新打开警报,请单击“重新打开”。 已修复的警报无法重新打开。

    屏幕截图显示关闭的 Dependabot 警报。 名为“重新打开”的按钮以深橙色边框突出显示。

一次重新打开多个警报

  1. 查看已关闭的 Dependabot alerts。 有关详细信息,请参阅“查看和更新 Dependabot 警报”(上文)。
  2. 在每个警报标题的左侧,选择要重新打开的警报,方法是单击每个警报旁边的复选框。
  3. (可选)在警报列表顶部,选择页面上的所有已关闭的警报。
    “已关闭”选项卡中的警报的屏幕截图。“全选”复选框以深橙色边框突出显示。
  4. 单击“重新打开”以重新打开警报。 已修复的警报无法重新打开。

查看 Dependabot alerts 的审核日志

当组织成员执行与 Dependabot alerts 相关的操作时,你可以在审核日志中查看这些操作。 有关访问日志的更多信息,请参阅“审查组织的审核日志”。

显示 Dependabot 警报的审核日志的屏幕截图。

Dependabot alerts 审核日志中的事件包括详细信息,例如执行操作的人员、操作内容以及操作执行时间。 该事件还包括指向警报本身的链接。 当组织的成员关闭警报时,该事件会显示关闭原因和评论。 有关 Dependabot alerts 操作的信息,请参阅 repository_vulnerability_alert 类别,其位于“组织的审核日志事件”。