无法修复包漏洞(svg-sprite-loader)
Unable to fix package vulnerability (svg-sprite-loader)
编辑 3: 不确定这里的要点是什么 - 这是包裹的问题,还是我的问题尝试修复它时正在做。很高兴知道是否有人成功安装了我的 package.json
的依赖项而没有 任何问题
编辑 2: 在另一台机器上安装相同的软件包只会导致 2 个漏洞,但同样,它们似乎无法修复. NPM 这次只推荐人工审核,而不是npm audit fix --force
。 svg-sprite-loader
似乎仍然是罪魁祸首。
Manual Review
Some vulnerabilities require your attention to resolve
Visit https://go.npm.me/audit-guide for additional guidance
Moderate Regular Expression Denial of Service in postcss
Package postcss
Patched in >=7.0.36
Dependency of svg-sprite-loader [dev]
Path svg-sprite-loader > svg-baker > postcss
More info https://github.com/advisories/GHSA-566m-qj78-rww5
Moderate Regular Expression Denial of Service in postcss
Package postcss
Patched in >=7.0.36
Dependency of svg-sprite-loader [dev]
Path svg-sprite-loader > svg-baker-runtime > svg-baker > postcss
More info https://github.com/advisories/GHSA-566m-qj78-rww5
found 2 moderate severity vulnerabilities in 459 scanned packages
2 vulnerabilities require manual review. See the full report for details.
编辑: 如果有人有建议,我也愿意完全放弃 svg-sprite-loader
运行 npm audit
发现 4 个漏洞并建议强制对 svg-sprite-loader
进行重大更改(将其从 v6 恢复到 v2??)。
这修复了一个漏洞,但其余 3 个漏洞似乎不受建议的 运行 npm audit fix
的影响。我不知道如何修复它。
npm: 8.10.0
Node: 16.14.0
webpack: 5.72.1
svg-sprite-loader: 6.0.11
运行之前的审计报告npm audit fix --force
:
postcss <7.0.36
Severity: moderate
Regular Expression Denial of Service in postcss - https://github.com/advisories/GHSA-566m-qj78-rww5
fix available via `npm audit fix --force`
Will install svg-sprite-loader@2.0.3, which is a breaking change
node_modules/postcss
svg-baker >=1.2.5
Depends on vulnerable versions of postcss
node_modules/svg-baker
svg-baker-runtime >=1.4.0-alpha.10475b37
Depends on vulnerable versions of svg-baker
node_modules/svg-baker-runtime
svg-sprite-loader >=2.0.4
Depends on vulnerable versions of svg-baker
Depends on vulnerable versions of svg-baker-runtime
node_modules/svg-sprite-loader
4 moderate severity vulnerabilities
npm audit fix --force
后的报告
postcss <7.0.36
Severity: moderate
Regular Expression Denial of Service in postcss - https://github.com/advisories/GHSA-566m-qj78-rww5
fix available via `npm audit fix`
node_modules/postcss
svg-baker >=1.2.5
Depends on vulnerable versions of postcss
node_modules/svg-baker
svg-baker-runtime >=1.4.0-alpha.10475b37
Depends on vulnerable versions of svg-baker
node_modules/svg-baker-runtime
3 moderate severity vulnerabilities
运行 npm audit fix
没有修复那些漏洞,我真的不知道如何处理它们。如果有人看一看可能比我更了解问题,我将不胜感激
**编辑:
package.json 修复前
{
"name": "vanilla-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"svg-sprite-loader": "^6.0.11",
"webpack": "^5.72.1",
"webpack-dev-server": "^4.9.0"
}
}
package.json 修复后
{
"name": "vanilla-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"svg-sprite-loader": "^2.0.3",
"webpack": "^5.72.1",
"webpack-dev-server": "^4.9.0"
}
}
尝试使用这个命令:
npm ci //In your terminal
确保你有 package-lock
和 up-to-date install
。
此命令与 npm install
类似,不同之处在于它用于自动化环境,例如测试平台、持续集成和部署,或者您希望确保完全安装依赖项的任何情况。通过跳过某些 user-oriented 功能,它可以比常规 npm 安装快得多。它也比常规安装更严格,这可以帮助捕获由大多数 npm 用户的 incrementally-installed 本地环境引起的错误或不一致。
简而言之,使用npm install
和npm ci
的主要区别是:
• 项目必须具有现有的 package-lock.json
或 npm-shrinkwrap.json
。
• 如果 package lock
中的依赖项与 package.json 中的依赖项不匹配,npm ci
将退出并出错,而不是更新 package lock
.
• npm ci
一次只能安装整个项目:不能使用此命令添加单个依赖项。
• 如果 node_modules
已经存在,它将在 npm ci
开始安装之前自动删除。
• 它永远不会写入 package.json
或任何 package-locks
:安装基本上已冻结。
如果以上方法没有帮助,请尝试:
npm install //In your terminal
说明:
在全局模式下(即在命令后附加 -g
或 --global
),它将当前包上下文(即当前工作目录)安装为全局包。
默认情况下,npm install
将安装在 package.json
中作为依赖项列出的所有模块。
使用 --production flag
(或当 NODE_ENV
环境变量设置为生产时),npm 将不会安装 devDependencies
中列出的模块。要在 NODE_ENV
环境变量设置为生产时安装 dependencies
和 devDependencies
中列出的所有模块,您可以使用 --production=false
.
这是修复漏洞的更好方法。
原因:
您的一个包中存在安全漏洞,它不是直接的顶级依赖项,而是嵌套依赖项。因为,这种嵌套依赖关系很容易受到攻击,导致 npm audit
抛出安全警告。
如果我们以某种方式找到一种方法将这个嵌套依赖项更新为安全版本,所有漏洞都应该得到解决。
为此,我们将使用一个名为 npm-force-resolutions
的包。本包修改package-lock.json强制安装特定版本的传递依赖(dependency of dependency)。
步骤:
安装为开发依赖
npm i -D npm-force-resolutions
在 package.json 中添加一个包含要修复的依赖版本的字段 resolutions。您可以从上述咨询中找到安全版本
https://github.com/advisories/GHSA-566m-qj78-rww5
。这个 link 有 npm 审计报告吗。
"resolutions": {
"postcss": "7.0.36"
}
然后将 npm-force-resolutions 添加到预安装脚本中。这使得它 运行 每次你 运行 npm install。它修补了 package-lock 文件中的嵌套依赖项。
现在运行npm audit
验证。
found 0 vulnerabilities
您的 package.json 文件应如下所示
{
"name": "vanilla-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"preinstall": "npx npm-force-resolutions"
},
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"svg-sprite-loader": "^6.0.11",
"webpack": "^5.72.1",
"webpack-dev-server": "^4.9.0",
"npm-force-resolutions": "^0.0.10"
},
"resolutions": {
"postcss": "7.0.36"
}
}
警告:由于嵌套的依赖项被强制更新到较新的版本,因此可能会由于依赖项的重大更改而中断。请验证一次是否一切正常。
编辑 3: 不确定这里的要点是什么 - 这是包裹的问题,还是我的问题尝试修复它时正在做。很高兴知道是否有人成功安装了我的 package.json
的依赖项而没有 任何问题
编辑 2: 在另一台机器上安装相同的软件包只会导致 2 个漏洞,但同样,它们似乎无法修复. NPM 这次只推荐人工审核,而不是npm audit fix --force
。 svg-sprite-loader
似乎仍然是罪魁祸首。
Manual Review
Some vulnerabilities require your attention to resolve
Visit https://go.npm.me/audit-guide for additional guidance
Moderate Regular Expression Denial of Service in postcss
Package postcss
Patched in >=7.0.36
Dependency of svg-sprite-loader [dev]
Path svg-sprite-loader > svg-baker > postcss
More info https://github.com/advisories/GHSA-566m-qj78-rww5
Moderate Regular Expression Denial of Service in postcss
Package postcss
Patched in >=7.0.36
Dependency of svg-sprite-loader [dev]
Path svg-sprite-loader > svg-baker-runtime > svg-baker > postcss
More info https://github.com/advisories/GHSA-566m-qj78-rww5
found 2 moderate severity vulnerabilities in 459 scanned packages
2 vulnerabilities require manual review. See the full report for details.
编辑: 如果有人有建议,我也愿意完全放弃 svg-sprite-loader
运行 npm audit
发现 4 个漏洞并建议强制对 svg-sprite-loader
进行重大更改(将其从 v6 恢复到 v2??)。
这修复了一个漏洞,但其余 3 个漏洞似乎不受建议的 运行 npm audit fix
的影响。我不知道如何修复它。
npm: 8.10.0
Node: 16.14.0
webpack: 5.72.1
svg-sprite-loader: 6.0.11
运行之前的审计报告npm audit fix --force
:
postcss <7.0.36
Severity: moderate
Regular Expression Denial of Service in postcss - https://github.com/advisories/GHSA-566m-qj78-rww5
fix available via `npm audit fix --force`
Will install svg-sprite-loader@2.0.3, which is a breaking change
node_modules/postcss
svg-baker >=1.2.5
Depends on vulnerable versions of postcss
node_modules/svg-baker
svg-baker-runtime >=1.4.0-alpha.10475b37
Depends on vulnerable versions of svg-baker
node_modules/svg-baker-runtime
svg-sprite-loader >=2.0.4
Depends on vulnerable versions of svg-baker
Depends on vulnerable versions of svg-baker-runtime
node_modules/svg-sprite-loader
4 moderate severity vulnerabilities
npm audit fix --force
postcss <7.0.36
Severity: moderate
Regular Expression Denial of Service in postcss - https://github.com/advisories/GHSA-566m-qj78-rww5
fix available via `npm audit fix`
node_modules/postcss
svg-baker >=1.2.5
Depends on vulnerable versions of postcss
node_modules/svg-baker
svg-baker-runtime >=1.4.0-alpha.10475b37
Depends on vulnerable versions of svg-baker
node_modules/svg-baker-runtime
3 moderate severity vulnerabilities
运行 npm audit fix
没有修复那些漏洞,我真的不知道如何处理它们。如果有人看一看可能比我更了解问题,我将不胜感激
**编辑:
package.json 修复前
{
"name": "vanilla-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"svg-sprite-loader": "^6.0.11",
"webpack": "^5.72.1",
"webpack-dev-server": "^4.9.0"
}
}
package.json 修复后
{
"name": "vanilla-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"svg-sprite-loader": "^2.0.3",
"webpack": "^5.72.1",
"webpack-dev-server": "^4.9.0"
}
}
尝试使用这个命令:
npm ci //In your terminal
确保你有 package-lock
和 up-to-date install
。
此命令与 npm install
类似,不同之处在于它用于自动化环境,例如测试平台、持续集成和部署,或者您希望确保完全安装依赖项的任何情况。通过跳过某些 user-oriented 功能,它可以比常规 npm 安装快得多。它也比常规安装更严格,这可以帮助捕获由大多数 npm 用户的 incrementally-installed 本地环境引起的错误或不一致。
简而言之,使用npm install
和npm ci
的主要区别是:
• 项目必须具有现有的 package-lock.json
或 npm-shrinkwrap.json
。
• 如果 package lock
中的依赖项与 package.json 中的依赖项不匹配,npm ci
将退出并出错,而不是更新 package lock
.
• npm ci
一次只能安装整个项目:不能使用此命令添加单个依赖项。
• 如果 node_modules
已经存在,它将在 npm ci
开始安装之前自动删除。
• 它永远不会写入 package.json
或任何 package-locks
:安装基本上已冻结。
如果以上方法没有帮助,请尝试:
npm install //In your terminal
说明:
在全局模式下(即在命令后附加 -g
或 --global
),它将当前包上下文(即当前工作目录)安装为全局包。
默认情况下,npm install
将安装在 package.json
中作为依赖项列出的所有模块。
使用 --production flag
(或当 NODE_ENV
环境变量设置为生产时),npm 将不会安装 devDependencies
中列出的模块。要在 NODE_ENV
环境变量设置为生产时安装 dependencies
和 devDependencies
中列出的所有模块,您可以使用 --production=false
.
这是修复漏洞的更好方法。
原因:
您的一个包中存在安全漏洞,它不是直接的顶级依赖项,而是嵌套依赖项。因为,这种嵌套依赖关系很容易受到攻击,导致 npm audit
抛出安全警告。
如果我们以某种方式找到一种方法将这个嵌套依赖项更新为安全版本,所有漏洞都应该得到解决。
为此,我们将使用一个名为 npm-force-resolutions
的包。本包修改package-lock.json强制安装特定版本的传递依赖(dependency of dependency)。
步骤:
安装为开发依赖
npm i -D npm-force-resolutions
在 package.json 中添加一个包含要修复的依赖版本的字段 resolutions。您可以从上述咨询中找到安全版本
https://github.com/advisories/GHSA-566m-qj78-rww5
。这个 link 有 npm 审计报告吗。
"resolutions": {
"postcss": "7.0.36"
}
然后将 npm-force-resolutions 添加到预安装脚本中。这使得它 运行 每次你 运行 npm install。它修补了 package-lock 文件中的嵌套依赖项。
现在运行
npm audit
验证。
found 0 vulnerabilities
您的 package.json 文件应如下所示
{
"name": "vanilla-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"preinstall": "npx npm-force-resolutions"
},
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"svg-sprite-loader": "^6.0.11",
"webpack": "^5.72.1",
"webpack-dev-server": "^4.9.0",
"npm-force-resolutions": "^0.0.10"
},
"resolutions": {
"postcss": "7.0.36"
}
}
警告:由于嵌套的依赖项被强制更新到较新的版本,因此可能会由于依赖项的重大更改而中断。请验证一次是否一切正常。