Hacker News 中文摘要

RSS订阅

我们如何利用CodeRabbit:从简单PR到RCE及百万仓库的写权限 -- How we exploited CodeRabbit: From simple PR to RCE and write access on 1M repos

文章摘要

研究人员通过简单的PR(拉取请求)成功在CodeRabbit的生产服务器上实现了远程代码执行(RCE),泄露了其API令牌和密钥,并可能访问了PostgreSQL数据库,最终获得了对100万个代码仓库(包括私有仓库)的读写权限。该漏洞展示了安全问题的严重性,旨在提醒开发者加强安全防护,避免类似问题。

文章总结

标题:如何利用CodeRabbit:从简单的PR到RCE及对100万个仓库的写权限

主要内容:

在这篇博客中,作者详细描述了如何通过远程代码执行(RCE)漏洞,成功入侵CodeRabbit的生产服务器,泄露其API令牌和密钥,并获取了对100万个代码仓库(包括私有仓库)的读写权限。这一漏洞的发现和利用过程在2025年的Black Hat USA大会上进行了披露。

背景:

CodeRabbit是一款AI代码审查工具,广泛应用于GitHub和GitLab,拥有100万个仓库的审查权限和500万个拉取请求(PR)的审查记录。用户安装CodeRabbit后,每次创建或更新PR时,CodeRabbit会分析代码变更并通过AI进行审查,最终将审查结果以评论的形式发布在PR中。

漏洞发现与利用:

作者通过注册CodeRabbit的免费试用版,创建了一个私有GitHub仓库,并授予CodeRabbit访问权限。随后,作者创建了一个包含恶意代码的PR,利用CodeRabbit支持的Rubocop工具,成功执行了远程代码,并泄露了服务器的环境变量。这些环境变量中包含了大量敏感信息,如API密钥、数据库凭证等。

进一步利用:

通过泄露的GitHub应用私钥,作者能够生成访问令牌,获取对CodeRabbit安装的所有GitHub仓库的读写权限。这意味着攻击者可以克隆私有仓库、修改代码历史、甚至替换GitHub发布中的文件,从而进行供应链攻击。

影响总结:

  • 访问私有仓库,侵犯隐私。
  • 修改代码历史,进行供应链攻击。
  • 替换GitHub发布文件,分发恶意软件。
  • 通过RCE执行破坏性操作或拒绝服务攻击。

修复与响应:

作者在发现漏洞后,立即向CodeRabbit团队进行了负责任的披露。CodeRabbit团队迅速响应,禁用了Rubocop并轮换了所有密钥,随后修复了漏洞。

结论:

在AI产品快速推向市场的过程中,许多公司忽视了安全性,导致严重的安全漏洞。作者呼吁将安全性作为开发过程的核心,确保产品不仅创新,而且安全可靠。CodeRabbit团队的快速响应和修复展示了应对漏洞的关键步骤。

总结:

安全是一个持续的过程,需要不断的警惕和改进。通过将安全性融入开发流程,AI公司可以创建既创新又安全的产品,真正实现负责任的技术进步。

评论总结

评论内容总结:

  1. CodeRabbit的安全漏洞与响应

    • 评论1指出,CodeRabbit在检测到安全风险的同时仍执行了恶意代码,但赞扬了其快速响应和修复漏洞的能力。
      • 引用:“CodeRabbit would still review our pull request and post a comment on the GitHub PR saying that it detected a critical security risk, yet the application would happily execute our code.”
      • 引用:“Being quick to respond and remediate, as the CodeRabbit team was, is a critical part of addressing vulnerabilities.”
    • 评论7(CodeRabbit团队)回应称,该漏洞已在1月修复,且未影响客户数据,并强调了其沙盒机制的安全性。
      • 引用:“this RCE was reported and fixed in January. it was entirely prospective and no customer data was affected.”
  2. 环境变量与密钥管理的批评

    • 评论8和9批评CodeRabbit将GitHub应用的私钥存储在环境变量中,认为这是基本的安全管理失误。
      • 引用:“It is incredibly bad practice that their 'become the github app as you desire' keys to the kingdom private key was just sitting in the environment variables.”
      • 引用:“global scoped installations or keys always scare me for this reason.”
  3. CodeRabbit的功能与表现

    • 评论6赞扬CodeRabbit在代码审查中的出色表现,能够发现其他工具遗漏的错误。
      • 引用:“CodeRabbit at times does reviews that are super. It is able to catch bugs that even claude code misses on our Github PRs.”
  4. 对安全漏洞的广泛担忧

    • 评论11和14表达了对安全漏洞可能导致的全球性灾难的担忧,认为类似漏洞可能仍存在于其他系统中。
      • 引用:“That could have been a worldwide catastrophe. And who knows what other similar vulnerabilities might still exist elsewhere.”
      • 引用:“When the exploit is so simple, I find it likely that bots or Black Hats or APTs had already found a way in.”
  5. 对CodeRabbit的负面印象

    • 评论4提到对CodeRabbit的广告内容感到不满,认为其广告内容不够专业。
      • 引用:“I cannot take a company seriously that had something like that inside an ad that is supposed to show the best they're capable of.”
  6. 技术细节与疑问

    • 评论2和5对CodeRabbit为何需要环境变量和写权限提出疑问。
      • 引用:“Why did CodeRabbit run external tools on external code within its own set of environment variables?”
      • 引用:“Why does CodeRabbit need write access to the git repo?”
  7. 对漏洞披露与奖励的讨论

    • 评论10询问是否为此漏洞支付了赏金,评论11则建议此类严重漏洞应被公开披露以保护消费者。
      • 引用:“No bounty was paid for this?”
      • 引用:“Security fuckups of this disastrous scale should get classified as 'breaches' or 'incidents' and be required to be publicly disclosed.”

总结:评论中对CodeRabbit的安全漏洞、响应速度、密钥管理、功能表现等进行了多角度的讨论,既有对其快速修复的肯定,也有对其安全管理失误的批评,同时表达了对类似漏洞可能带来的广泛影响的担忧。