Hacker News 中文摘要

RSS订阅

RubyGems.org如何保护开源软件基础设施 -- How RubyGems.org protects OSS infrastructure

文章摘要

RubyGems.org通过多层次的安全措施保护开源社区,包括自动化检测、风险评分、回溯扫描和外部合作。每项上传的gem都会经过静态和动态代码分析,高风险包会进行人工审查。随着检测技术的进步,旧包也会被重新扫描,确保及时发现潜在威胁。团队还与外部安全研究机构合作,共同应对恶意gem的挑战。

文章总结

标题:RubyGems.org如何保护我们社区的关键开源基础设施

主要内容:

最近,Socket.dev发布了一项研究,揭示了旨在窃取社交媒体凭证的恶意Ruby gems。RubyGems.org借此机会分享了其安全机制、如何主动处理此类事件以及团队为维护生态系统安全所做的日常工作。

恶意gem的检测机制:

  1. 自动化检测: 每个gem上传后都会通过静态和动态代码分析进行审查,包括行为检查和元数据审查。这一功能主要依赖于Mend.io的供应链安全工具。
  2. 风险评分: 每个包都会被评分,高风险gem会由安全团队进行人工审查。
  3. 回溯扫描: 随着检测技术的改进,旧包会自动重新扫描,以发现过去可能遗漏的威胁。
  4. 外部来源: 有时会收到来自漏洞数据库、行业合作伙伴和跨注册表协作的警报,帮助识别跨生态系统的模式。

通过这些步骤,团队在恶意包被报告之前就能检测到大部分(约70-80%)的威胁。

处理被标记的gem:

  1. 验证: 安全工程师审查代码以确认恶意意图(约95%的被标记包是合法的)。
  2. 复核: 如有疑问,团队内部会进行二次审查。
  3. 移除: 确认恶意的gem会通过管理面板的标准流程移除。
  4. 记录: 每个操作都会被记录,以便追溯。
  5. 进一步保护: 有时会预先阻止可疑的gem名称,以防止可能的滥用。

此次事件的时间线:

  • 2025年7月20日: 系统标记了可疑gem,团队确认了恶意窃取凭证的行为。
  • 2025年7月23-28日: 移除了几乎所有受影响的包并终止了相关账户。
  • 2025年8月7日: Socket.dev发布报告并通知了16个相关账户的gem,这些gem也被移除。

总共移除了该威胁行为者的所有恶意包,包括原始报告中未涵盖的两个包。

供应链安全的现实:

RubyGems.org虽然比npm等生态系统小,但恶意活动仍然是一个严重威胁。平均每周移除约一个恶意或垃圾包,有时数量会更高。

这项工作资源密集,目前主要由Mend.io和Alpha-Omega等赞助商支持,但很大一部分时间来自志愿维护者的贡献。许多维护者已经为这一关键工作奉献了十多年,他们的热情和承诺是保持Ruby生态系统安全的关键。

结语:

此次事件展示了我们的安全系统按预期工作:威胁在造成广泛损害之前被检测、移除和遏制。开源安全始终是一项共同的努力,我们感谢Socket.dev的研究以及社区持续报告问题。

联系方式:

  • 邮箱: security@rubygems.org
  • Slack: 加入Bundler Slack与RubyGems.org团队和社区开发者联系。

RubyGems安全团队

评论总结

评论内容总结:

  1. 对Ruby/Rails生态系统的认可

    • 评论1和评论2对Ruby/Rails及其生态系统表示高度认可,认为其是可靠且实用的工具。
    • 关键引用:
      • "Ruby/Rails and its ecosystem continues to prove itself the practical, boring, reliable workhorse option."(Ruby/Rails及其生态系统继续证明自己是实用、可靠的工作马选项。)
      • "I should have turned to RoR 3 years ago."(我三年前就该转向RoR了。)
  2. 对安全性的担忧

    • 评论3和评论4指出RubyGems在安全性方面存在不足,特别是缺乏强制性的gem签名,以及某些维护者故意规避安全措施。
    • 关键引用:
      • "But still lacks mandatory gem signing. I also wonder how many malicious gems were published prior to this."(但仍然缺乏强制性的gem签名。我也想知道在此之前发布了多少恶意gem。)
      • "I don't ever want users viewing me as trustworthy nor liable for anything I do, so no MFA nor sigs from me."(我不希望用户认为我值得信赖或对我的行为负责,所以我不会使用MFA或签名。)
  3. 对团队工作的赞赏

    • 评论1和评论5对团队的辛勤工作表示赞赏,认为他们避免了“enshittification”(劣化)的趋势。
    • 关键引用:
      • "You have a dedicated team that sits there and diligently works on the quality of their product."(你们有一个专注的团队,致力于提高产品质量。)
      • "Reading this, I couldn't help but think these guys really know where their towel is. The opposite of enshittification?"(读到这里,我不禁认为这些人真的知道自己在做什么。这是“enshittification”的反面吗?)

总结:评论总体上对Ruby/Rails生态系统及其团队的工作表示认可,但也对其安全性问题提出了担忧,特别是关于gem签名和维护者的责任问题。