使用未加密通信通道下载依赖项¶
ID: rb/insecure-dependency
Kind: problem
Security severity: 8.1
Severity: warning
Precision: high
Tags:
- security
- external/cwe/cwe-300
- external/cwe/cwe-319
- external/cwe/cwe-494
- external/cwe/cwe-829
Query suites:
- ruby-code-scanning.qls
- ruby-security-extended.qls
- ruby-security-and-quality.qls
使用 HTTP 或 FTP 等不安全的协议下载依赖项,会使构建过程容易受到中间人 (MITM) 攻击。
这将允许攻击者将恶意代码注入下载的依赖项,从而感染构建工件并在构建工件的机器上执行任意代码。
建议¶
在从 URL 下载工件时,始终使用安全的协议,例如 HTTPS 或 SFTP。
示例¶
以下示例显示了一个 Gemfile
,它使用不安全的 HTTP 协议指定了一个 gem 源。
source "https://rubygems.org.cn"
gem "my-gem-a", "1.2.3"
修复方法是将协议更改为 HTTPS。
source "https://rubygems.org.cn"
gem "my-gem-a", "1.2.3"
参考资料¶
Jonathan Leitschuh: 想接管 Java 生态系统吗?你只需要一个 MITM!
Max Veytsman: 如何接管任何 Java(或 Clojure 或 Scala)开发人员的计算机。
维基百科: 供应链攻击。
维基百科: 中间人攻击。
通用弱点枚举: CWE-300.
通用弱点枚举: CWE-319.
通用弱点枚举: CWE-494.
通用弱点枚举: CWE-829.