You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级npm至6.14.7后dot-prop高风险漏洞修复求助

修复npm嵌套依赖中dot-prop原型污染漏洞的方案

问题背景

你升级npm到6.14.7后执行npm audit,发现两个高风险的Prototype Pollution漏洞,涉及dot-prop包,且漏洞位于npm自身的依赖链中:

npm>libnpx>update-notifier>configstore>dot-prop
npm>update-notifier>configstore>dot-prop

你尝试直接升级项目中的dot-prop到^5.1.1但无效,这是因为这些有问题的dot-prop实例是npm内置的bundled依赖,不属于你项目的直接或间接依赖,所以项目内的升级不会影响到npm自带的嵌套依赖。

审计报告详情

命令行输出

[root@redhatdev client]# npm audit
=== npm audit 安全报告 ===
手动审查
部分漏洞需您关注以解决
访问官方审计指南获取更多指导
高风险 Prototype Pollution
包 dot-prop
修复版本 >=5.1.1
依赖于 npm [dev]
路径 npm>libnpx>update-notifier>configstore>dot-prop
更多信息参考npm官方安全公告1213
高风险 Prototype Pollution
包 dot-prop
修复版本 >=5.1.1
依赖于 npm [dev]
路径 npm>update-notifier>configstore>dot-prop
更多信息参考npm官方安全公告1213
在1674个扫描包中发现2个高风险漏洞
2个漏洞需手动审查,查看完整报告了解详情。
[root@redhatdev client]#

完整JSON报告

{
  "actions": [
    {
      "action": "review",
      "module": "dot-prop",
      "resolves": [
        {
          "id": 1213,
          "path": "npm>libnpx>update-notifier>configstore>dot-prop",
          "dev": true,
          "optional": false,
          "bundled": true
        },
        {
          "id": 1213,
          "path": "npm>update-notifier>configstore>dot-prop",
          "dev": true,
          "optional": false,
          "bundled": true
        }
      ]
    }
  ],
  "advisories": {
    "1213": {
      "findings": [
        {
          "version": "4.2.0",
          "paths": [
            "npm>libnpx>update-notifier>configstore>dot-prop",
            "npm>update-notifier>configstore>dot-prop"
          ]
        }
      ],
      "id": 1213,
      "created": "2019-10-14T17:43:55.291Z",
      "updated": "2020-07-29T20:58:02.206Z",
      "deleted": null,
      "title": "Prototype Pollution",
      "found_by": {
        "link": "",
        "name": "Unknown",
        "email": ""
      },
      "reported_by": {
        "link": "",
        "name": "Unknown",
        "email": ""
      },
      "module_name": "dot-prop",
      "cves": [
        "CVE-2020-8116"
      ],
      "vulnerable_versions": "<5.1.1",
      "patched_versions": ">=5.1.1",
      "overview": "Versions of `dot-prop` before 5.1.1 are vulnerable to prototype pollution. The function `set` does not restrict the modification of an Object's prototype, which may allow an attacker to add or modify an existing property that will exist on all objects.\n\n",
      "recommendation": "Upgrade to version 5.1.1 or later.",
      "references": "- GitHub advisory\n- CVE-2020-8116",
      "access": "public",
      "severity": "high",
      "cwe": "CWE-471",
      "metadata": {
        "module_type": "",
        "exploitability": 4,
        "affected_components": ""
      },
      "url": "npm官方安全公告1213"
    }
  },
  "muted": [],
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 2,
      "critical": 0
    },
    "dependencies": 61,
    "devDependencies": 1612,
    "optionalDependencies": 31,
    "totalDependencies": 1674
  },
  "runId": "9b99170c-35c0-44b1-a0e6-8b714069a255"
}

解决方案

根据你的情况,推荐以下几种解决方式,按优先级排序:

1. 升级npm到同分支的最新稳定版

npm 6.14.7之后的6.x版本已经修复了这个内置依赖的漏洞,你可以直接升级全局npm:

npm install -g npm@6-latest

升级完成后,重新运行npm audit,应该会显示漏洞已修复。

2. 使用npm-force-resolutions强制修复嵌套依赖

如果因为环境限制无法升级npm,可以用这个工具强制将所有嵌套的dot-prop实例升级到安全版本:

  • 首先安装工具作为开发依赖:
    npm install --save-dev npm-force-resolutions
    
  • 在你的package.json中添加resolutions字段,指定dot-prop的安全版本:
    "resolutions": {
      "dot-prop": "^5.1.1"
    }
    
  • 修改package.json的scripts,添加preinstall钩子自动执行resolution:
    "scripts": {
      "preinstall": "npx npm-force-resolutions"
    }
    
  • 重新安装依赖:
    npm install
    
  • 最后运行npm audit验证漏洞是否解决。

3. 忽略dev依赖漏洞(生产环境可选)

从审计报告可以看到,这些漏洞属于dev依赖(dev: true),如果你的项目是生产环境部署,dev依赖不会被安装到生产环境,所以可以安全地忽略这些漏洞。你可以运行:

npm audit --production

只检查生产依赖的漏洞,确认生产环境无风险即可。


内容的提问来源于stack exchange,提问作者Prashant Biradar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:37:54