在项目中使用预先编写好的代码集合,称为 库 或 软件包,是一种常见做法。这些代码模块能为您节省大量时间,让您专注于工作中新颖、创造性的部分,而无需从头编写大型可复用组件。添加到项目后,它们被称为 依赖,因为您的工作依赖于其中的代码。
虽然使用依赖是完全正常的,但依赖中可能包含代码漏洞,从而使您的项目不安全。幸运的是,Dependabot 等工具能够发现依赖漏洞,提交修复的拉取请求,甚至在未来防止此类漏洞的出现。在本教程中,您将学习如何启用并使用 Dependabot 及其功能来确保依赖的安全。
设置示例仓库
让我们通过 fork 一个带有一些依赖漏洞的示例项目来开始。由于我们不会部署该项目,此练习没有安全风险。
- 前往
new2code/dependabot-demo仓库。 - 在页面右上角,点击 派生.
- 在出现的页面上,点击 Create fork。
启用依赖安全功能
现在我们已经设置好项目,接下来配置 Dependabot 以查找并创建针对不安全依赖的修复。
- 在仓库的导航栏中,点击 Security and quality。
- 在 “Dependabot alerts” 行,点击 Enable Dependabot alerts。
- 在 “Dependabot” 部分的 “Dependabot alerts” 旁边,点击 Enable。
- 在出现的弹出窗口中,阅读关于启用依赖图的声明,然后点击 Enable。
- 要允许 Dependabot 自动打开修复依赖漏洞的拉取请求,在 “Dependabot security updates” 旁边,点击 Enable。
查看您的不安全依赖
配置好 Dependabot 后,让我们找出哪些依赖包含漏洞。
- 在仓库的导航栏中,点击 Security and quality。
- 要查看仓库的 Dependabot 警报,请在侧导航中点击 Dependabot.
- 要查看警报的详细信息,请点击警报标题。本练习中,请点击 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

漏洞详情
在修复详情下面,Dependabot 提供了关于漏洞的更多信息,包括
- 受影响软件包的名称
- 包含漏洞的该软件包版本
- 修复漏洞的该软件包版本
- 关于漏洞类型及其利用方式的细节

在本警报中,我们看到 hot-formula-parser 包中的 parse 函数未正确检查用户输入是否安全就直接执行,从而允许攻击者运行恶意指令。
提示
如果您仍未完全了解漏洞细节,可尝试 询问 Copilot Chat 进行解释。
时间线
最后,您可以在页面底部看到该警报的时间线。当前时间线显示的是 Dependabot 打开警报的时间戳,随后在我们修复漏洞后会自动更新。

保护您的依赖
为了快速、轻松地保护我们的项目,让我们应用 Dependabot 创建的修复。
-
在带有修复摘要的警报栏中,点击 Review security update.
-
在拉取请求页面,点击 Files changed 查看 Dependabot 的更改。审查完更改后,点击 Conversation 返回拉取请求概览。
-
要应用修复,请在页面底部点击 Merge pull request,随后点击 Confirm merge。
拉取请求合并后,关联的 Dependabot 警报会自动关闭,修复时间也会被加入时间线。
防止未来的依赖漏洞
为避免今后出现不安全依赖,让我们允许 Dependabot 在新版本发布时自动打开更新依赖的拉取请求。
- 在仓库的导航栏中,点击 设置.
- 在侧边栏的 “Security” 部分,点击 高级安全.
- 在 “Dependabot version updates” 旁边,点击 Enable。
后续步骤
现在您已经在示例仓库中体验了 Dependabot 及其功能,请在自己的项目中启用它们,即可轻松发现、修复并防止依赖漏洞。