在构建工件中存储敏感信息¶
ID: js/build-artifact-leak
Kind: path-problem
Security severity: 7.5
Severity: error
Precision: high
Tags:
- security
- external/cwe/cwe-312
- external/cwe/cwe-315
- external/cwe/cwe-359
Query suites:
- javascript-code-scanning.qls
- javascript-security-extended.qls
- javascript-security-and-quality.qls
如果构建工件被发布,包含在构建工件中的敏感信息可能允许攻击者访问敏感信息。
建议¶
仅在构建工件中存储打算公开的信息。
示例¶
以下示例创建了一个 webpack
配置,该配置将主机的所有环境变量插入构建工件
const webpack = require("webpack");
module.exports = [{
plugins: [
new webpack.DefinePlugin({
"process.env": JSON.stringify(process.env)
})
]
}];
环境变量可能包括 API 密钥或其他敏感信息,构建系统应该只插入应该公开的环境变量。
该问题已在下面修复,其中仅 DEBUG
环境变量被插入工件。
const webpack = require("webpack");
module.exports = [{
plugins: [
new webpack.DefinePlugin({
'process.env': JSON.stringify({ DEBUG: process.env.DEBUG })
})
]
}];
参考资料¶
webpack: DefinePlugin API.
常见弱点枚举:CWE-312.
常见弱点枚举:CWE-315.
常见弱点枚举:CWE-359.