Hacker News 中文摘要

RSS订阅

你也可以从NPM运行恶意软件(我是说没有后果) -- You too can run malware from NPM (I mean without consequences)

文章摘要

GitHub项目“naugtur/running-qix-malware”展示了如何在平台上运行Qix恶意软件,并提供了相关导航菜单和功能链接,如GitHub Copilot、Actions、Codespaces等,帮助用户更好地理解和使用GitHub的各项开发工具。

文章总结

GitHub 项目:naugtur/running-qix-malware

该项目展示了如何在不受影响的情况下运行来自 NPM 的恶意软件。文章主要讨论了近期 NPM 包作者遭受钓鱼攻击的事件,特别是 is-arrayish 包被恶意篡改的情况。恶意软件通过覆盖 fetchXMLHttpRequestwindow.ethereum.request 等函数,将交易的目标地址替换为攻击者的地址。

文章通过一个简单的示例应用,展示了恶意软件如何在实际应用中生效。该应用允许用户发送无意义的交易,但由于使用了被篡改的 is-arrayish 包,交易地址被恶意替换。

为了防范此类攻击,文章介绍了 LavaMoat 工具。LavaMoat 通过为每个依赖包创建独立的词法全局上下文(称为 Compartment),并限制其访问权限,从而防止恶意代码执行。如果依赖包被更新为包含恶意代码,LavaMoat 的策略将阻止其访问未授权的全局变量或导入其他包。

此外,文章还提到了 LavaMoat Webpack 插件,该插件可以帮助项目在构建时应用 LavaMoat 的保护机制,确保依赖包的安全性。

总结来说,该项目通过实际案例展示了 NPM 包被恶意篡改的风险,并提供了 LavaMoat 作为有效的防御工具,帮助开发者保护应用免受供应链攻击的影响。

评论总结

  1. LavaMoat的局限性

    • 评论1指出,LavaMoat虽然看起来不错,但不支持Webpack HMR是一个致命缺点。
      引用: "LavaMoat looks great on paper, but not supporting Webpack HMR is a dealbreaker."
      中文: "LavaMoat在纸面上看起来不错,但不支持Webpack HMR是一个致命缺点。"
  2. npm的责任与改进

    • 评论2和评论8认为npm应承担更多责任,分析代码并标记可疑发布,防止恶意代码发布。
      引用: "npm should take responsibility and up their game here."
      中文: "npm应该承担责任并改进。"
      引用: "why doesn't npm have already a system in place to flag sketchy releases..."
      中文: "为什么npm还没有一个系统来标记可疑的发布..."
  3. npm生态的安全问题

    • 评论9和评论10表达了对npm生态安全性的担忧,甚至有人建议完全避免使用包。
      引用: "How does one avoid malware in npm specifically?"
      中文: "如何避免npm中的恶意软件?"
      引用: "I think JS should be all source and no packages at all."
      中文: "我认为JS应该全是源代码,完全不使用包。"
  4. 依赖管理与版本控制

    • 评论5质疑JS生态中依赖管理的常见做法,认为冻结版本可能不足以提供保护,建议使用提交哈希。
      引用: "Is it typical in the JS space to include dependencies without versioning?"
      中文: "在JS生态中,是否常见不指定版本的依赖?"
      引用: "Shouldn’t a commit hash be used?"
      中文: "不应该使用提交哈希吗?"
  5. 攻击的影响与追踪

    • 评论3关注攻击者窃取的金额,并询问是否有人对区块链上的目标地址进行了分析。
      引用: "How much money have the attackers stolen so far?"
      中文: "攻击者到目前为止窃取了多少资金?"
  6. 技术实现的成本

    • 评论6对LavaMoat的隔离技术表示好奇,质疑其是否成本过高。
      引用: "is that compartmentalization not incredibly expensive?"
      中文: "这种隔离技术是否成本过高?"
  7. 包命名空间问题

    • 评论4询问npm是否仍未引入包命名空间。
      引用: "are there still no package namespaces?"
      中文: "npm还没有包命名空间吗?"
  8. LavaMoat的贡献者

    • 评论7指出,原帖作者是LavaMoat的贡献者之一。
      引用: "Looks like OP is one of the contributors to LavaMoat."
      中文: "看起来原帖作者是LavaMoat的贡献者之一。"