Skip to main content

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

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

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

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

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

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

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

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

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

在 Dependabot 识别出依赖项中的若干漏洞后,现在我们来详细解析“Command Injection in hot-formula-parser”警报所提供的信息。

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

此部分还会跟踪 Dependabot 创建修复漏洞的拉取请求的进度。 某个修补程序可用后,你将看到一个标记为“ Review security update”的按钮,该按钮链接到拉取请求。

Dependabot 警报修补程序摘要部分的屏幕截图。

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

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

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

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

提示

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

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

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

为了快速轻松地保护项目,让我们应用 Dependabot 生成的修补程序。

  1. 在带有修补程序摘要的警报字段中,单击“Review security update”****。

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

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

    拉取请求合并后,链接的 Dependabot 警报将自动关闭,修复时间也会同步记录到时间线。

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

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

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