NPM 在 CLI 中引入了新的 `allowScripts` 策略,允许用户在运行 `npm install` 时选择性地启用或禁用安装脚本(如 `preinstall`、`postinstall` 等)。该策略旨在增强安全性,让开发者能够更细粒度地控制哪些包可以执行脚本,避免恶意脚本自动执行带来的风险。
#npm
30 条相关内容
研究人员发现了一场大规模的恶意NPM包分发活动,该活动由176个包组成,旨在绕过企业的内部依赖管理机制。攻击者通过精心构造的包名和版本策略,诱使开发者误将恶意包作为内部私有依赖引入项目。这场持续数月的供应链攻击暴露了依赖混淆攻击的严重威胁,企业需加强内部包管理审查和依赖锁定策略。
一名恶意软件开发者试图通过NPM包窃取Claude AI用户的机密信息,却因疏忽泄露了自己的GitHub私有令牌。这一安全事件暴露了供应链攻击中攻击者自身的操作失误,同时也凸显了开源生态系统中代码审查和令牌管理的重要性。
本文介绍了如何通过 NPM 的分阶段发布功能,以近乎一键的方式为每个包完成发布流程。该方法简化了多包仓库的版本管理和发布操作,提升了开发效率,同时保持了对发布流程的精细控制。
安全研究人员发现一场名为 TrapDoor 的供应链攻击活动,该活动同时在 NPM、PyPI 和 Crates.io 三大软件包管理平台上投放恶意软件包,专门窃取加密货币钱包凭证和敏感数据。攻击者通过植入后门代码,伪装成合法库的依赖项,利用软件供应链的信任链传播恶意代码,对开发者和用户构成重大威胁。
NPM 包的分阶段发布
3.0分阶段发布(Staged Publishing)是一种 NPM 包发布策略,允许开发者先向一小部分用户发布新版本,逐步扩大范围,最终面向所有用户。这种方法有助于在全面发布前发现潜在问题,降低风险,确保包的质量和稳定性。
SafeDeps 是一款本地依赖安全检查工具,支持 Python、NPM 和 NuGet 生态系统。它能在本地环境中扫描项目依赖,识别已知漏洞,在问题代码进入生产环境前提供安全屏障,无需将依赖信息上传至外部服务。
GSD 项目(原 NPM 包 get-shit-done-cc)正式更名为 OpenGSD。新名称和品牌反映了项目向更开放、更社区驱动的方向演变,同时保持了其核心的“搞定事情”(Get Shit Done)理念和高效的任务管理功能。
该分析揭示了 Art-Template NPM 包中一个严重的安全漏洞,该漏洞影响 Coruna 浏览器。攻击者能够利用此漏洞进行代码注入和远程执行攻击,导致用户数据暴露和系统被窃取。文章详细描述了漏洞的技术细节、潜在影响范围以及针对开发者和用户的缓解建议。
安全研究人员在NPM、PyPI和crates.io平台上发现了一起新的供应链攻击,涉及34个软件包共100个版本。这些恶意软件包通过植入后门窃取加密货币,对开发者和用户构成严重威胁。建议开发者及时检查依赖项,避免使用受影响版本。
TrapDoor 是一种新型供应链攻击,同时影响了 PyPI、NPM 和 crates.io 三大主流软件包管理器。攻击者通过向这些平台发布含有恶意代码的软件包,在开发者安装时窃取敏感数据。该攻击展示了跨生态系统的供应链威胁正变得愈发复杂和普遍。
这是一款轻量级、开源且零依赖的SDK,专为应用引导和用户入门流程设计。它帮助开发者快速构建交互式教程,提升用户体验,无需引入额外依赖,适合集成到各类Web应用中。
Machine 是一款全新的开发工具,旨在彻底改变 JavaScript 项目的依赖管理方式。它承诺让开发者告别在本地运行 NPM install 的繁琐操作,从而避免 node_modules 目录膨胀、依赖冲突和磁盘空间占用等问题。通过将依赖管理移至云端或容器化环境,Machine 试图为前端开发者提供更干净、更高效的开发工作流。
安全团队发现一起活跃的供应链攻击,波及 NPM、PyPI 和 Crates.io 三大包管理器。攻击者通过恶意包传播,影响范围广泛,开发者需立即审查依赖并采取防范措施。
作者认为,将 vendor/node_modules/venv 等依赖目录提交到 Git 仓库中,并直接从仓库部署,可以消除 99% 的供应链攻击。当前的依赖安装流程存在诸多隐患——npm install 会静默更新锁文件,恶意提交哈希可能混入混淆的漏洞代码,而 GitHub 的 fork 提交哈希漏洞更是被蠕虫利用。作者主张放弃自动化构建和安装步骤,通过检入依赖让每次变更都可追踪,尽管这会影响性能。
这意味着其搜索框功能已失效。如果搜索时看不到任何建议,必须点击按钮加载带有搜索结果的新页面,该页面同样有验证码,但因为是 HTML 页面,你可以点击通过。之后,建议 API 将停止返回 HTML,转而返回 JSON 格式的建议。
GitHub 宣布为 NPM 推出分阶段发布(Staged Publishing)功能以及新的安装时控制选项。分阶段发布允许维护者将软件包版本先发布到预演环境进行测试,再逐步推送给更广泛的用户,从而降低错误版本影响的风险。同时,新增的安装时控制可为用户提供更精细的权限和依赖管理能力。
本文详细对比了 pnpm 和 NPM 的差异,阐述了为什么你应该立即从 NPM 迁移到 pnpm。pnpm 通过硬链接和符号链接实现高效的磁盘空间利用,比 NPM 快约 2 倍,并且具有更严格的依赖隔离机制,避免幽灵依赖问题。文章还提供了从 NPM 迁移到 pnpm 的实用步骤和命令。
作者在LinkedIn上接下一个看似正常的客户项目,但在执行npm install后,项目中的恶意依赖包试图通过远程代码执行(RCE)后门入侵作者的机器。文章详细揭露了攻击者如何伪装成合法客户,在开源依赖中植入恶意代码,并警示开发者npm install并不一定安全,需要警惕供应链攻击。
在 art-template 通过 NPM 遭受供应链攻击的消息传出后,开发者和系统管理员紧急排查项目是否受影响。攻击者自 2025 年起控制了该仓库,并用于从第三方域名加载未经授权的 JavaScript(包括百度统计)。NPM 是过去十年全球 90% 供应链攻击发生的唯一包管理器,其项目遭受攻击的可能性是其他包管理器的 20 倍。程序员 Macy Von 女士表示:“这是一场可怕的悲剧,但有时这些事就是会发生,谁也阻止不了。”用户称自己“无能为力”。
NPM 注册表正在引入新的安全措施,旨在提升软件包发布流程的安全性。这些改进将帮助开发者更可靠地验证和发布软件包,减少供应链攻击的风险,为整个 JavaScript 生态系统的安全奠定更坚实的基础。
几个月前,我们的团队因一次普通的 npm install 遭遇了第一版 Shai-Hulud 攻击,发现时为时已晚。为此我打造了 Computer Police,让团队不再重蹈覆辙。它作为本地注册表代理运行在包管理器与 npm/PyPI 之间,在确认恶意的包触及磁盘之前就予以阻止。它刻意保持功能窄小:仅针对恶意软件,无 CVE 扫描、无启发式检测、无遥测、无需 root 权限,一条命令即可卸载。支持本地、CI 环境和 agent 沙箱中使用。
npmfind 是一个替代官方 NPM 注册表的包搜索工具,旨在帮助开发者更快速、更精准地查找 JavaScript 包。它提供了更友好的界面和更智能的搜索过滤功能,让包管理体验更加高效。
NPM 包的分阶段发布
2.0分阶段发布(Staged Publishing)是一种 NPM 包的发布策略,允许开发者先将包发布到注册表但标记为"暂存"状态,只有部分用户或测试环境可以访问。通过这种方式,团队可以在正式公开之前进行验证和测试,从而降低生产环境出问题的风险。一旦验证通过,包可以无缝升级为正式版本,供所有用户使用。
NPM 宣布将不再允许使用细粒度访问令牌(fine-grained tokens)来绕过双因素认证(2FA)进行包发布。这一变更旨在增强安全防护,确保所有发布操作都必须通过 2FA 验证,从而降低账号被盗用后恶意发布恶意包的风险。开发者需改用粒粒度令牌并配合 2FA,或使用其他受支持的认证方式。
NPM 包的分阶段发布
3.0分阶段发布(Staged Publishing)是 NPM 提供的一项功能,允许发布者在将包公开发布到注册表之前,先将其发布到一个暂存区域进行验证和测试。这种方式可以帮助开发者在不影响现有用户的情况下,提前检查包的完整性、依赖关系和功能表现,从而降低因发布错误版本或包含缺陷的包而导致的中断风险。
该工具旨在帮助开发者防御npm供应链攻击。它能够检测和防范恶意软件包,保护项目的依赖安全,是一款针对JavaScript生态系统的安全防护工具。
Infrawise 是一个 MCP(模型上下文协议)工具,能够将真实的基础设施配置和状态信息直接注入到 Claude Code 的对话上下文中。开发者可以通过该工具让 AI 助手实时感知云资源、网络拓扑、服务依赖等基础设施细节,从而生成更准确、更贴合实际环境的代码和运维建议。
NPM 包的可信发布
3.0可信发布(Trusted Publishing)是 NPM 的一项安全功能,允许用户通过 OpenID Connect (OIDC) 身份令牌,从受支持的 CI/CD 平台(如 GitHub Actions、GitLab CI/CD)向 NPM 注册表发布包,而无需手动管理或轮换长效身份验证令牌。这显著降低了令牌泄露的风险,简化了发布流程。
这份 Markdown 文档汇总了近一年来针对 npm 包的各种攻击技术,涵盖维护者账户劫持、生命周期钩子执行、自复制蠕虫、CI/CD 身份平面攻击等 12 类攻击手法及缓解措施。在发布前将此文档提供给编码助手,可对项目进行全面的供应链安全审查。