跳至主要内容

查找并修复您的第一个依赖漏洞

了解如何通过在示例仓库中启用 Dependabot 及其功能来保持依赖安全。

在项目中使用预先编写好的代码集合,称为 软件包,是一种常见做法。这些代码模块能为您节省大量时间,让您专注于工作中新颖、创造性的部分,而无需从头编写大型可复用组件。添加到项目后,它们被称为 依赖,因为您的工作依赖于其中的代码。

虽然使用依赖是完全正常的,但依赖中可能包含代码漏洞,从而使您的项目不安全。幸运的是,Dependabot 等工具能够发现依赖漏洞,提交修复的拉取请求,甚至在未来防止此类漏洞的出现。在本教程中,您将学习如何启用并使用 Dependabot 及其功能来确保依赖的安全。

设置示例仓库

让我们通过 fork 一个带有一些依赖漏洞的示例项目来开始。由于我们不会部署该项目,此练习没有安全风险

  1. 前往 new2code/dependabot-demo 仓库。
  2. 在页面右上角,点击 派生.
  3. 在出现的页面上,点击 Create fork

启用依赖安全功能

现在我们已经设置好项目,接下来配置 Dependabot 以查找并创建针对不安全依赖的修复。

  1. 在仓库的导航栏中,点击 Security and quality
  2. 在 “Dependabot alerts” 行,点击 Enable Dependabot alerts
  3. 在 “Dependabot” 部分的 “Dependabot alerts” 旁边,点击 Enable
  4. 在出现的弹出窗口中,阅读关于启用依赖图的声明,然后点击 Enable
  5. 要允许 Dependabot 自动打开修复依赖漏洞的拉取请求,在 “Dependabot security updates” 旁边,点击 Enable

查看您的不安全依赖

配置好 Dependabot 后,让我们找出哪些依赖包含漏洞。

  1. 在仓库的导航栏中,点击 Security and quality
  2. 要查看仓库的 Dependabot 警报,请在侧导航中点击 Dependabot.
  3. 要查看警报的详细信息,请点击警报标题。本练习中,请点击 Command Injection in hot-formula-parser

了解 Dependabot 警报

现在 Dependabot 已经识别出我们的一些依赖漏洞,让我们拆解 “Command Injection in hot-formula-parser” 警报中提供的信息。

修复摘要

在警报标题下方,您可以看到此漏洞的 修复 简要概要,包括将关闭的警报数量以及漏洞所在位置。就本例而言,警报告知我们将 hot-formula-parser 包升级到 3.0.1 版即可修复位于 javascript/package-lock.json 文件中的一个 Dependabot 警报。

此部分还会跟踪 Dependabot 创建拉取请求以修复漏洞的进度。一旦修复可用,您将看到一个标有Review security update

Screenshot of the fix summary section of a Dependabot alert.

漏洞详情

在修复详情下面,Dependabot 提供了关于漏洞的更多信息,包括

  • 受影响软件包的名称
  • 包含漏洞的该软件包版本
  • 修复漏洞的该软件包版本
  • 关于漏洞类型及其利用方式的细节

Screenshot of the vulnerability details section of a Dependabot alert.

在本警报中,我们看到 hot-formula-parser 包中的 parse 函数未正确检查用户输入是否安全就直接执行,从而允许攻击者运行恶意指令。

提示

如果您仍未完全了解漏洞细节,可尝试 询问 Copilot Chat 进行解释。

时间线

最后,您可以在页面底部看到该警报的时间线。当前时间线显示的是 Dependabot 打开警报的时间戳,随后在我们修复漏洞后会自动更新。

Screenshot of the timeline for a Dependabot alert.

保护您的依赖

为了快速、轻松地保护我们的项目,让我们应用 Dependabot 创建的修复。

  1. 在带有修复摘要的警报栏中,点击 Review security update.

  2. 在拉取请求页面,点击 Files changed 查看 Dependabot 的更改。审查完更改后,点击 Conversation 返回拉取请求概览。

  3. 要应用修复,请在页面底部点击 Merge pull request,随后点击 Confirm merge

    拉取请求合并后,关联的 Dependabot 警报会自动关闭,修复时间也会被加入时间线。

防止未来的依赖漏洞

为避免今后出现不安全依赖,让我们允许 Dependabot 在新版本发布时自动打开更新依赖的拉取请求。

  1. 在仓库的导航栏中,点击 设置.
  2. 在侧边栏的 “Security” 部分,点击 高级安全.
  3. 在 “Dependabot version updates” 旁边,点击 Enable

后续步骤

现在您已经在示例仓库中体验了 Dependabot 及其功能,请在自己的项目中启用它们,即可轻松发现、修复并防止依赖漏洞。

© . This site is unofficial and not affiliated with GitHub, Inc.