跳到主要内容

查看和更新 Dependabot 警报

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

谁可以使用此功能?

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

存储库的 Dependabot 警报选项卡列出了所有打开和关闭的 Dependabot 警报以及相应的 Dependabot 安全更新。您可以按软件包、生态系统或清单过滤警报。您可以对警报列表进行排序,也可以点击特定警报以获取更多详细信息。您还可以忽略或重新打开警报,一次一个或一次选择多个警报。有关更多信息,请参阅“关于 Dependabot 警报”。

您可以为使用 Dependabot 警报和依赖关系图的任何存储库启用自动安全更新。有关更多信息,请参阅“关于 Dependabot 安全更新”。

关于存储库中易受攻击依赖项的更新

当我们检测到代码库的默认分支正在使用具有已知安全风险的依赖项时,GitHub 会生成 Dependabot 警报。对于已启用 Dependabot 安全更新的存储库,当 GitHub 在默认分支中检测到易受攻击的依赖项时,Dependabot 会创建一个拉取请求来修复它。拉取请求将依赖项升级到避免漏洞所需的最低可能的安全版本。

Dependabot 不会为恶意软件生成 Dependabot 警报。有关更多信息,请参阅“关于 GitHub 咨询数据库”。

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

您可以使用用户界面上提供的各种过滤器和排序选项来过滤和排序 Dependabot 警报。有关更多信息,请参阅下面的“优先处理 Dependabot 警报”。

您还可以审核响应 Dependabot 警报采取的操作。有关更多信息,请参阅“审核安全警报”。

优先处理 Dependabot 警报

GitHub 可帮助您优先修复 Dependabot 警报。默认情况下,Dependabot 警报按重要性排序。“最重要”排序顺序可帮助您优先处理要首先关注的 Dependabot 警报。警报的排名基于其潜在影响、可操作性和相关性。我们的优先级计算不断改进,包括 CVSS 分数、依赖项范围以及是否为警报找到易受攻击的函数调用等因素。

您还可以使用 Dependabot 自动分类规则来优先处理 Dependabot 警报。有关更多信息,请参阅“关于 Dependabot 自动分类规则”。

您可以通过在搜索栏中键入过滤器作为key:value对来排序和过滤 Dependabot 警报。

选项描述示例
ecosystem显示所选生态系统的警报使用ecosystem:npm显示 npm 的 Dependabot 警报
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:development 显示仅在开发过程中使用的依赖项的警报
严重性根据警报的严重级别显示警报使用 severity:high 显示严重性为高的警报
排序根据选定的排序顺序显示警报警报的默认排序选项为 sort:most-important,它按重要性对警报进行排序
使用 sort:newest 显示 Dependabot 报告的最新警报

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

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

Screenshot of the filter and sort menus in the Dependabot alerts tab.

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

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

语言生态系统清单文件支持依赖项范围
Dartpubpubspec.yaml
Dartpubpubspec.lock
GoGo 模块go.mod不支持,默认为运行时
JavaMavenpom.xml test 映射到开发,否则范围默认为运行时
JavaScriptnpmpackage.json
JavaScriptnpmpackage-lock.json
JavaScriptnpmpnpm-lock.yaml
JavaScriptyarn v1yarn.lock不支持,默认为运行时
PHPComposercomposer.json
PHPComposercomposer.lock
PythonPoetrypoetry.lock
PythonPoetrypyproject.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当标签 != runtime 时

列为开发依赖项的软件包的警报在 Dependabot 警报页面上标有 Development 标签,也可以通过 scope 过滤器进行过滤。

Screenshot showing the "Development" label assigned to an alert in the list of alerts. The label is highlighted with a dark orange outline.

开发范围软件包的警报详情页面显示包含 Development 标签的“标签”部分。

Screenshot showing the "Tags" section in the alert details page. The label is highlighted with a dark orange outline.

关于对调用漏洞函数的检测

注意

  • Dependabot 对调用漏洞函数的检测处于公开预览阶段,可能随时更改。
  • 对漏洞调用的检测已在公共存储库中启用。此分析也适用于由使用 GitHub Enterprise Cloud 并已获得 GitHub 高级安全许可的组织拥有的私有存储库。

更多信息,请参见“关于 GitHub 高级安全”。

当 Dependabot 告知您您的存储库使用漏洞依赖项时,您需要确定漏洞函数是什么,并检查您是否正在使用它们。获得此信息后,您可以确定需要多紧急升级到安全版本的依赖项。

对于支持的语言,Dependabot 会自动检测您是否使用了漏洞函数,并将标签“漏洞调用”添加到受影响的警报中。您可以使用 Dependabot 警报视图中的此信息更有效地分类和优先处理补救工作。

注意

在公开预览版发布期间,此功能仅适用于 2022 年 4 月 14 日 *之后* 创建的新 Python 建议以及一部分历史 Python 建议。GitHub 正在努力补充更多历史 Python 建议的数据,这些数据将陆续添加。漏洞调用仅在 Dependabot 警报页面上突出显示。

Screenshot showing an alert with the "Vulnerable call" label. The label is outlined in orange.

您可以过滤视图,仅显示 Dependabot 检测到至少一个对漏洞函数的调用的警报,方法是在搜索字段中使用 has:vulnerable-calls 过滤器。

对于检测到漏洞调用的警报,警报详情页面会显示其他信息

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

Screenshot showing a Dependabot alert with a "Vulnerable call" label. A code block, showing "Vulnerable function called", and a link, titled "See all your affected repositories", are highlighted with a dark orange outline.

更多信息,请参见下面的“查看和修复警报”。

查看 Dependabot 警报

您可以在存储库的 Dependabot 警报选项卡中查看所有打开和关闭的 Dependabot 警报和相应的 Dependabot 安全更新。您可以通过从下拉菜单中选择过滤器来对 Dependabot 警报进行排序和筛选。

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

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

    Screenshot of a repository header showing the tabs. The "Security" tab is highlighted by a dark orange outline.

  3. 在安全概述的“漏洞警报”侧边栏中,单击**Dependabot**。如果缺少此选项,则表示您无权访问安全警报,需要获得访问权限。更多信息,请参见“管理存储库的安全和分析设置”。

    Screenshot of security overview, with the "Dependabot" tab highlighted with a dark orange outline.

  4. 或者,要筛选警报,请在下拉菜单中选择一个过滤器,然后单击要应用的过滤器。您也可以在搜索栏中键入过滤器。或者,要按标签筛选,请单击分配给警报的标签,即可自动将该过滤器应用于警报列表。有关筛选和排序警报的更多信息,请参见“优先处理 Dependabot 警报”。

    Screenshot of the filter and sort menus in the Dependabot alerts tab.

  5. 单击您要查看的警报。

  6. 或者,要建议改进相关的安全建议,请在警报详情页面的右侧单击**建议改进 GitHub 安全建议数据库中的此建议**。更多信息,请参见“编辑 GitHub 安全建议数据库中的安全建议”。

    Screenshot of the right sidebar of a Dependabot alert. A link, titled "Suggest improvements for this advisory on the GitHub Advisory Database", is highlighted with an orange outline.

查看和修复警报

务必确保所有依赖项都不存在任何安全漏洞。当 Dependabot 在您的依赖项中发现漏洞时,您应该评估项目的暴露级别,并确定采取哪些补救措施来保护您的应用程序。

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

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

对于支持的语言,Dependabot 会为您检测对漏洞函数的调用。当您查看标有“漏洞调用”的警报时,详细信息包括函数名称和指向调用该代码的代码的链接。通常,您可以根据此信息做出决定,而无需进一步探索。

修复漏洞依赖项

  1. 查看警报的详细信息。更多信息,请参见上面的“查看 Dependabot 警报”。

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

    Screenshot of a Dependabot alert with the "Create Dependabot security update" button highlighted with a dark orange outline.

  3. 或者,如果您不使用 Dependabot 安全更新,您可以使用页面上的信息来决定要升级到哪个版本的依赖项,并创建一个拉取请求以将依赖项更新到安全版本。

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

    Dependabot 提出的每个拉取请求都包含有关您可以用来控制 Dependabot 的命令的信息。更多信息,请参见“管理依赖项更新的拉取请求”。

关闭 Dependabot 警报

提示

您只能关闭打开的警报。

如果您安排了大量工作来升级依赖项,或者决定不需要修复警报,则可以关闭警报。关闭您已评估的警报可以更容易地对出现的新警报进行分类。

  1. 查看警报的详细信息。更多信息,请参见上面的“查看漏洞依赖项”。

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

  3. 可选:添加驳回评论。驳回评论将添加到警报时间线中,并可在审计和报告期间用作证明。您可以使用 GraphQL API 来检索或设置评论。该评论包含在dismissComment字段中。更多信息,请参见GraphQL API 文档中的“对象”。

    Screenshot of the page for a Dependabot alert, with the "Dismiss" dropdown and the option to add a dismissal comment highlighted with a dark orange outline.

  4. 点击驳回警报

一次驳回多个警报

  1. 查看未关闭的 Dependabot 警报。更多信息,请参见“查看和更新 Dependabot 警报”。
  2. 可选:通过选择下拉菜单,然后点击您想要应用的筛选器来筛选警报列表。您也可以在搜索栏中输入筛选条件。
  3. 在每个警报标题左侧,选择您要驳回的警报。
    Screenshot of the Dependabot alerts view. Two alerts are selected and these check boxes are highlighted with an orange outline.
  4. 可选:在警报列表顶部,选择页面上的所有警报。
    Screenshot of the header section of the Dependabot alerts view. The "Select all" checkbox is highlighted with a dark orange outline.
  5. 选择“驳回警报”下拉菜单,然后点击驳回警报的原因。
    Screenshot of a list of alerts. Below the "Dismiss alerts" button, a dropdown labeled "Select a reason to dismiss" is expanded. The dropdown contains radio buttons for various options.

查看和更新已关闭的警报

您可以查看所有未关闭的警报,并且可以重新打开之前已被驳回的警报。已经修复的已关闭警报无法重新打开。

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

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

    Screenshot of a repository header showing the tabs. The "Security" tab is highlighted by a dark orange outline.

  3. 在安全概述的“漏洞警报”侧边栏中,单击**Dependabot**。如果缺少此选项,则表示您无权访问安全警报,需要获得访问权限。更多信息,请参见“管理存储库的安全和分析设置”。

    Screenshot of security overview, with the "Dependabot" tab highlighted with a dark orange outline.

  4. 要仅查看已关闭的警报,请点击已关闭

    Screenshot showing the list of Dependabot alerts with the "Closed" tab highlighted with a dark orange outline.

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

  6. 可选:如果警报已被驳回并且您希望重新打开它,请点击重新打开。已经修复的警报无法重新打开。

    Screenshot showing a closed Dependabot alert. A button, titled "Reopen", is highlighted in a dark orange outline.

一次重新打开多个警报

  1. 查看已关闭的 Dependabot 警报。更多信息,请参见“查看和更新 Dependabot 警报”(上文)。
  2. 在每个警报标题左侧,通过点击每个警报旁边的复选框,选择您要重新打开的警报。
  3. 可选:在警报列表顶部,选择页面上的所有已关闭警报。
    Screenshot of alerts in the "Closed" tab. The "Select all" checkbox is highlighted with a dark orange outline.
  4. 点击重新打开以重新打开警报。已经修复的警报无法重新打开。

查看 Dependabot 警报的审计日志

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

Screenshot of the audit log showing Dependabot alerts.

您组织的 Dependabot 警报审计日志中的事件包括详细信息,例如谁执行了操作、操作是什么以及何时执行操作。该事件还包含指向警报本身的链接。当您组织的成员驳回警报时,该事件会显示驳回原因和评论。有关 Dependabot 警报操作的信息,请参见“您组织的审计日志事件”中的repository_vulnerability_alert类别。