TGViewer
Data Science by ODS.ai 🦜 Data Science by ODS.ai 🦜 @opendatascience · 38.3K subscribers
Post #3278 1.69K

Forwarded from Codeby

Один git push — и миллионы чужих репозиториев у тебя в кармане

В марте 2026 года команда Wiz Research отправила репорт в GitHub Bug Bounty. Через 40 минут уязвимость подтвердили, через два часа на github.com выкатили патч. Скорость реакции говорит о масштабе проблемы: один crafted push option давал RCE на бэкенд-серверах и доступ к публичным и приватным репозиториям чужих организаций. На момент раскрытия 88% self-hosted GHES-инстансов оставались уязвимы.

Но самое интересное тут — не сама дыра, а то, как её нашли.

🔍 Архитектура, которая подвела

Когда ты делаешь git push на GitHub через SSH, запрос проходит цепочку из четырёх сервисов: babeld (git-прокси) → gitauth (аутентификация) → gitrpcd (внутренний RPC) → pre-receive hook. Каждый написан на своём языке. И каждый безусловно доверяет предыдущему.

Связующее звено между ними — заголовок X-Stat. Формат примитивный: пары key=value, разделённые точкой с запятой. Парсинг — тривиальный split. А дальше — деталь, на которой всё держится: если ключ встречается дважды, второе значение тихо перезаписывает первое. Без предупреждений, без логов. Last-write-wins.

Push options — стандартная фича git-протокола (git push -o <value>). babeld кодирует их как поля в X-Stat. Пользователь контролирует значение. Точка с запятой не экранируется. Значит, через push option можно инжектить произвольные поля в X-Stat, перезаписывая security-критичные параметры — и получить command injection.

⚙️ Как AI помог — и где не помог

Wiz копали GHES и раньше, но объём закрытых бинарников делал полноценный аудит нерентабельным. Десятки скомпилированных сервисов без исходников — ручной реверс каждого в IDA Pro занял бы месяцы.

Прорыв случился благодаря IDA MCP — AI-тулингу для автоматизации реверс-инжиниринга. Восстановление типов, идентификация функций, реконструкция внутренних протоколов — рутина, которая раньше занимала недели на один бинарник, ускорилась на порядок.

Но вот что важно: AI ускорил рутину, а не нашёл баг. Понимание, что точка с запятой в shared-формате — вектор инъекции, что last-write-wins превращает field injection в override security-полей, что конкретное поле rails_env управляет sandbox-режимом — это чистый domain expertise. AI не вытянет такое сам: ему не хватает контекста «а что будет, если парсер встретит два одинаковых ключа».

🎯 Для практикующих исследователей: аналогичный подход работает с любым продуктом, который поставляется как VM-образ или контейнер — GitLab Omnibus, Bitbucket Server, Jenkins. Для SaaS-only — вектор закрыт.

Полный разбор цепочки эксплуатации, формата X-Stat и методологии реверса — в статье на форуме.

https://codeby.net/threads/github-enterprise-rce-cve-2026-3854-ot-reversa-zakrytykh-binarnikov-do-polnoi-komprometatsii-servera.92950/
  • 👍 1
More from @opendatascience
  1. Oct 11, 2026Всем привет! Встречайте воскресный выпуск подкаста "Капитанский мостик". В этот раз подкас…
  2. Oct 5, 2026Доброе утро! ☀️ Встречайте новый выпуск подкаста "Капитанский мостик". Ведущие Валентин Ма…
  3. Oct 3, 2026PewDiePie учил свой ИИ на ответах OpenAI. Получил бан. Обжаловал. Попробовал снова. Ещё ба…
  4. Sep 30, 2026GOOOGLEEE!!🌈🌈🌈🌈 https://blog.google/innovation-and-ai/models-and-research/gemini-model…
  5. Sep 27, 2026Доброе утро! ☀️ Представляем Вашему вниманию выпуск подкаста "Капитанский мостик". Ведущие…
  6. Sep 23, 2026Каждый релиз ллм все больше напоминает выход новых айфонов. Крутого нового уже ничего, кам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →