How we exploited CodeRabbit: From simple PR to RCE and write access on 1M repos
CodeRabbit: от PR до RCE и доступа к 1 млн репозиториев
CodeRabbit — самое популярное AI-приложение на GitHub Marketplace (1 млн репозиториев, 5 млн PR). При установке он анализирует каждый PR и оставляет AI-комментарии.
Найденные уязвимости
-
RCE через Markdown-рендеринг
- Внутри контейнеров запускается
markdown-it
с плагиномmarkdown-it-katex
. - Плагин использует
child_process.exec
без фильтрации LaTeX-ввода. - Внедрённый в PR
$\input{/etc/passwd}$
запускает произвольные команды.
- Внутри контейнеров запускается
-
Утечка токенов
- Внутри контейнеров доступны переменные окружения:
GITHUB_TOKEN
,CODERABBIT_API_KEY
,DATABASE_URL
. - Чтение
/proc/self/environ
и~/.netrc
позволило получить токены GitHub, JWT-секреты и строку подключения к PostgreSQL.
- Внутри контейнеров доступны переменные окружения:
-
Доступ к 1 млн репозиториев
- Установленный GitHub-App имеет scope
contents:write
во всех подключённых репозиториях. - С помощью украденного токена можно клонировать/писать в приватные репы, создавать PR, коммиты и релизы.
- Установленный GitHub-App имеет scope
Цепочка атаки
- Создаём PR с вредным LaTeX.
- Получаем RCE в контейнере CodeRabbit.
- Считываем секреты.
- Используем токен GitHub для полного доступа к репозиториям.
Меры защиты
- Переход на изолированные sandbox-среды.
- Отключение опасных LaTeX-функций.
- Минимизация scope GitHub-токенов.