CodeQL 文档

在构建工件中存储敏感信息

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

单击以在 CodeQL 存储库中查看查询

如果构建工件被发布,包含在构建工件中的敏感信息可能允许攻击者访问敏感信息。

建议

仅在构建工件中存储打算公开的信息。

示例

以下示例创建了一个 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 })
        })
    ]
}];

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私