Dependabot
概述
Dependabot 使用 GitHub Actions 和独立环境来运行检查。有几个公共资源可以帮助审查内部实现细节:
dependabot/updater-action 负责运行 Dependabot 更新的 action。
dependabot/dependabot-core 实现核心逻辑的 action。查看
dependabot-core
的架构。dependabot-updater 是启动扫描的 Docker 镜像(包含
dependabot-core
作为组件)。dependabot-update-job-proxy 带有代理的 Docker 镜像,用于认证对特定 GitHub API 端点的请求,并允许 dependabot 不泄露 GitHub API 令牌。
代码执行
Dependabot 能够从清单文件中收集依赖信息,如 setup.py 或 .gemspec,这些文件可能被滥用来执行任意代码。具有 package-ecosystem 值 bundler
、mix
和 pip
的包管理器可能被滥用,在版本更新过程中在清单文件中执行外部代码。因此,如果您能够篡改清单文件,可以在 Dependabot 运行时执行任意代码。
Dependabot 允许开发者通过将 insecure-external-code-execution 设置为 deny
来防止代码执行。此外,当在更新配置中使用 registries 设置时,Dependabot 会自动将 insecure-external-code-execution
设置为 deny
并防止外部代码执行。然而,这可能导致版本更新失败,因此开发者可以通过将 insecure-external-code-execution
设置为 allow
来覆盖此行为并允许代码执行。
私有仓库的发布说明和提交信息泄露
如果 Dependabot 检测到未更新的依赖,它将创建一个 PR 来提升这些依赖的版本。Dependabot 添加有关更改的附加信息,其中可能包含发布说明和带有消息的提交列表。您可以在以下屏幕截图中找到此类 PR 的示例:

然而,Dependabot 支持私有依赖,它也会将这些数据添加到私有依赖的 PR 中。因此,如果公共项目有私有依赖,Dependabot 将泄露这些项目的发布说明和提交。
参考资料
最后更新于