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

引入@truffle/contract时npm decompress包存在任意文件写入漏洞求助

解决@truffle/contract依赖decompress的高危Arbitrary File Write漏洞问题

针对你遇到的npm依赖审计无补丁高危漏洞问题,我整理了几个适配不同场景的处理方案,你可以根据项目实际情况选择:

1. 移除直接依赖的decompress包

从你的package.json可以看到,decompress是作为devDependencies直接声明的(版本^4.2.0)。如果你的项目开发流程中并没有直接用到这个包,优先建议删除它:

  • 打开package.json,删除devDependencies里的"decompress": "^4.2.0"条目
  • 执行npm install重新安装依赖

这会直接消除一条漏洞依赖路径(也就是你列出的第4条:decompress),减少风险。

2. 临时绕过漏洞审计(仅开发环境使用)

如果你的项目处于开发测试阶段,且运行环境是完全受控的,可临时跳过该高危漏洞的检查:

  • 单次安装时使用命令:
npm install --audit-omit=high
  • 或者在项目根目录创建.npmrc文件,添加配置永久生效:
audit-omit=high

⚠️ 注意:这个方法只是绕过审计,并没有修复漏洞,绝对不能在生产环境使用。

3. 锁定依赖版本防止风险扩大

使用npm shrinkwrap生成依赖锁定文件,固定当前所有依赖的版本,避免后续安装时引入更危险的依赖版本:

npm shrinkwrap

生成的npm-shrinkwrap.json会精确锁定每个依赖的版本,你可以手动检查其中的decompress相关条目,确保版本稳定(不过目前暂无可用补丁,所以主要是防止漏洞进一步升级)。

4. 等待上游依赖修复

这个漏洞的根源是swarm-js依赖的旧版decompress,而swarm-js又被web3-bzz、@truffle/interface-adapter等上游包引用。你可以:

  • 关注swarm-js、web3-bzz或者@truffle/contract的代码仓库,等待它们更新依赖到修复后的decompress版本
  • 也可以给这些项目提交Issue,提醒维护者关注该安全问题,加快修复进度

5. 替换@truffle/contract为替代库

如果项目对依赖的灵活性较高,可以考虑替换@truffle/contract为更安全的替代方案,比如ethers.js的合约交互模块。ethers.js的依赖链相对简洁,目前没有这个漏洞问题,而且功能上可以覆盖大部分@truffle/contract的使用场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:57:45