文章摘要
研究人员通过简单的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公司可以创建既创新又安全的产品,真正实现负责任的技术进步。
评论总结
评论内容总结:
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.”
- 评论1指出,CodeRabbit在检测到安全风险的同时仍执行了恶意代码,但赞扬了其快速响应和修复漏洞的能力。
环境变量与密钥管理的批评
- 评论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.”
- 评论8和9批评CodeRabbit将GitHub应用的私钥存储在环境变量中,认为这是基本的安全管理失误。
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.”
- 评论6赞扬CodeRabbit在代码审查中的出色表现,能够发现其他工具遗漏的错误。
对安全漏洞的广泛担忧
- 评论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.”
- 评论11和14表达了对安全漏洞可能导致的全球性灾难的担忧,认为类似漏洞可能仍存在于其他系统中。
对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.”
- 评论4提到对CodeRabbit的广告内容感到不满,认为其广告内容不够专业。
技术细节与疑问
- 评论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?”
- 评论2和5对CodeRabbit为何需要环境变量和写权限提出疑问。
对漏洞披露与奖励的讨论
- 评论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.”
- 评论10询问是否为此漏洞支付了赏金,评论11则建议此类严重漏洞应被公开披露以保护消费者。
总结:评论中对CodeRabbit的安全漏洞、响应速度、密钥管理、功能表现等进行了多角度的讨论,既有对其快速修复的肯定,也有对其安全管理失误的批评,同时表达了对类似漏洞可能带来的广泛影响的担忧。