Skip to main content

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

了解如何通过在演示仓库中启用 Dependabot 及其功能来保护依赖项。

常见做法是在项目中使用预先编写好的代码集合(称为库或包)********。 这些代码模块能为你节省大量时间,使你无需从头开始编写大型可重用组件,从而专注于工作中更具创造性的新内容。 添加到项目时,它们称为“依赖项”,因为你的工作依赖于它们包含的代码****。

虽然使用依赖项是完全正常的做法,但这些依赖项可能包含代码漏洞,会导致你的项目存在安全隐患。 幸运的是,Dependabot 等工具可以找到依赖项漏洞,发起拉取请求进行修复,甚至预防未来可能出现的同类漏洞。 在本教程中,你将学习如何启用和使用 Dependabot 及其功能来确保依赖项的安全。

设置演示仓库

现在,我们通过复刻一个包含若干依赖项漏洞的演示项目来开始操作。 由于我们不会部署项目,因此本练习不存在安全风险****。

  1. 导航到 new2code/dependabot-demo 仓库。
  2. 在页面右上角,单击 Fork
  3. 在出现的页面中,单击“Create fork”****。

启用依赖项安全功能

现在项目已设置完成,接下来我们将配置 Dependabot 来发现并修复不安全的依赖项。

  1. 在仓库的导航栏中,单击带有图标的【安全性】****。
  2. 在“Dependabot alerts”这一行,单击“启用 Dependabot alerts”****。
  3. 在“Dependabot”部分,点击“Dependabot alerts”旁的启用
  4. 在出现的弹出窗口中,阅读有关启用依赖项关系图的说明,然后单击“Enable”****。
  5. 要允许 Dependabot 自动打开用于修复依赖项漏洞的拉取请求,请单击“Dependabot security updates”旁边的“Enable”****。

查看不安全的依赖项

配置好 Dependabot 后,我们来找出包含漏洞的依赖项。

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

了解 Dependabot 警报

Dependabot 已识别我们依赖项中的若干漏洞,现在我们来仔细剖析“在 hot-formula-parser 中注入命令”警报中提供的信息。

修复摘要

在警报标题下方,你可以看到针对该漏洞的简短修补程序摘要,包括要关闭的警报数量以及漏洞所在位置****。 在本案例中,警报提示我们将 hot-formula-parser 包升级到 3.0.1 版本,即可修复 javascript/package-lock.json 文件中由 Dependabot 识别出的一个安全警报。

本部分还会跟踪 Dependabot 创建拉取请求来修复漏洞的进度。 当有修复可用时,将看到标有“ 查看安全更新”且链接到拉取请求的按钮。

Dependabot 警报的修复摘要部分的屏幕截图。

漏洞详细信息

在修补程序详细信息下方,Dependabot 提供了有关漏洞的详细信息,包括:

  • 受影响包的名称
  • 包含漏洞的包的版本
  • 修复漏洞的包的版本
  • 有关漏洞类型以及漏洞利用方式的详细信息

Dependabot 警报的漏洞详细信息部分的屏幕截图。

在此警报中,我们发现 parse 包中的 hot-formula-parser 函数在执行用户输入前未进行充分安全检查,这将允许攻击者执行恶意命令。

提示

如果你未完全了解漏洞详细信息,可尝试让 Copilot对话 阐释详情。

时间线

最后,可以在页面底部看到警报的时间线。 当前时间线已记录 Dependabot 触发警报的时间戳,并将在漏洞修复后自动更新。

Dependabot 警报时间线的屏幕截图。

保护依赖项

若要快捷地保护我们的项目,请应用创建的修复 Dependabot。

  1. 在包含修补程序摘要的警报字段中,单击 查看安全更新

  2. 在拉取请求页上,单击“ Files changed”,查看 Dependabot 的更改****。 查看更改后,点击 Conversation 以返回到拉取请求概述。

  3. 要应用修补程序,请在页面底部单击“Merge pull request”,然后单击“Confirm merge”********。

    拉取请求合并后,相关联的 Dependabot 通知将自动关闭,修复时间也将被加入到时间线中。

防止未来出现依赖项漏洞

为避免未来引入不安全的依赖项,我们将允许 Dependabot 自动创建拉取请求,在发布新版本时更新依赖项。

  1. 在存储库的导航栏中,点击 Settings
  2. 在边栏的“安全性”部分,单击 Advanced Security
  3. 在“Dependabot version updates”旁边,单击“Enable”****。

后续步骤

在演示仓库中体验 Dependabot 及其功能后,现在即可在你自己的项目中启用这些功能,轻松实现依赖项漏洞的查找、修复和预防****。