使用未加密的通信通道下载依赖项¶
ID: js/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:
- javascript-code-scanning.qls
- javascript-security-extended.qls
- javascript-security-and-quality.qls
使用 HTTP 或 FTP 等不安全协议下载构建依赖项会使构建过程容易受到中间人 (MITM) 攻击。
这可能允许攻击者将恶意代码注入到下载的依赖项中,从而感染构建工件并在构建工件的机器上执行任意代码。
建议¶
在从 URL 下载工件时始终使用安全协议,例如 HTTPS 或 SFTP。
示例¶
以下示例显示了一个 package.json
文件,该文件使用不安全的 HTTP 协议下载依赖项。
{
"name": "example-project",
"dependencies": {
"unencrypted": "http://example.org/foo/tarball/release/0.0.1",
"lodash": "^4.0.0"
}
}
修复方法是将协议更改为 HTTPS。
{
"name": "example-project",
"dependencies": {
"unencrypted": "https://example.org/foo/tarball/release/0.0.1",
"lodash": "^4.0.0"
}
}
参考资料¶
Jonathan Leitschuh: 想接管 Java 生态系统吗?您只需要一个 MITM!
Max Veytsman: 如何接管任何 Java(或 Closure 或 Scala)开发人员的计算机。
维基百科: 供应链攻击。
维基百科: 中间人攻击。
通用弱点枚举: CWE-300.
通用弱点枚举: CWE-319.
通用弱点枚举: CWE-494.
通用弱点枚举: CWE-829.