Баг в Gitea Registry Утечка Приватных Образов на Протяжении Четырёх Лет
Каждый, кто когда-либо держал самостоятельно развёрнутый Git-сервер, знает цену этому решению: вы отказываетесь от управляемого SaaS-сервиса в обмен на операционную поверхность, которой теперь владеете сами в три часа ночи. CVE-2026-27771 — именно тот тип уязвимости, который делает эту сделку дорогостоящей. Логическая ошибка во встроенном реестре контейнеров Gitea почти четыре года молча отдавала приватные OCI-образы неаутентифицированным клиентам, и примерно 31 750 интернет-доступных инстансов всё ещё были уязвимы на момент выхода уведомления.
Ключевые детали
Уязвимость, зарегистрированная как CVE-2026-27771 и раскрытая 28 мая 2026 года, представляет собой обход аутентификации в логике контроля доступа реестра контейнеров Gitea. Как сообщает Rescana, конечная точка реестра отвечает на стандартные запросы Docker и OCI pull от неаутентифицированных клиентов, даже если соответствующий репозиторий помечен как приватный. Без токена. Без cookie. Без учётной записи. Просто pull-запрос.
Масштаб проблемы широк. Затронуты все релизы Gitea с версии 1.13.0 включительно по 1.26.1, а также более ранние версии с включённой функцией реестра. Это длинный хвост версий, уходящий примерно на четыре года назад. Forgejo, известный форк сообщества, унаследовал уязвимый код и также затронут, и другие производные форки, по всей видимости, находятся в такой же ситуации. Развёрнут ли сервис локально или в облаке — не имеет значения. Ошибка находится в коде, а не в топологии развёртывания.
Агент автономного тестирования на проникновение компании NoScope Security обнаружил уязвимость в апреле 2026 года и ответственно раскрыл её мейнтейнерам Gitea. Исправление вышло в Gitea 1.26.2. Для команд, которые не могут обновить бинарник сегодня, задокументированный обходной путь — установить [service].REQUIRE_SIGNIN_VIEW=true в конфигурации Gitea. Этот флаг полностью отключает анонимный доступ, в том числе к публичным репозиториям и образам, поэтому это грубый инструмент, но он закрывает брешь.
Масштаб раскрытия — именно та часть, которая должна беспокоить руководителей платформ. Примерно 31 750 интернет-доступных развёртываний Gitea более чем в 30 странах доступны извне, и более половины из них размещены на крупных облачных платформах. Затронутые отрасли включают здравоохранение, аэрокосмическую промышленность, ритейл, интернет-провайдеров и компании корпоративного ПО. На момент выхода отчёта публичного PoC не было и подтверждённых случаев эксплуатации в дикой природе не зафиксировано, ни одна APT-группа не атрибутирована. Каталог MITRE — место, где стоит следить за развитием записи CVE.
Почему это важно для команд безопасности
Образ контейнера — это не просто бинарный блоб. Это упакованное признание того, как построен ваш сервис. Приватные образы регулярно содержат исходный код приложений, проприетарную бизнес-логику, встроенные API-ключи, учётные данные баз данных и файлы конфигурации инфраструктуры. Скачайте один — и вы фактически подсмотрели через плечо инженера за неделю его работы.
Это меняет расчёт для данной уязвимости. Неаутентифицированный pull-запрос заметен только в том случае, если вы ведёте логи доступа к реестру на том уровне, где видны неаутентифицированные запросы. Большинство команд, с которыми я работал, хорошо логируют аутентифицированную активность и воспринимают анонимные ответы 200 как скучный CDN-шум. Производственные инциденты, которые я наблюдал, как правило, всплывают через недели — когда утёкший API-ключ появляется в чужом оповещении о выставленном счёте, а не в момент самого pull-запроса.
Четыре года уязвимости — ещё один неприятный факт. Если вы запускали Gitea между версиями 1.13.0 и 1.26.1 с включённым реестром и любым портом, доступным из интернета (или с скомпрометированного внутреннего хоста), вы не можете предполагать, что ваши приватные образы оставались приватными. Вы должны исходить из того, что секреты в этих слоях раскрыты. Ротируйте их.
Моё мнение: патч — это лёгкая половина. Трудная половина — это позиция реагирования на инциденты, которую вы принимаете после установки патча. Это означает перечисление каждого образа, который хранился в реестре за этот период, выявление тех, что содержат учётные данные или конфигурацию, и ротацию этих секретов исходя из предположения о компрометации. Относитесь к этому как к событию раскрытия учётных данных, а не как к тикету CVE. Каталог CISA KEV пока не включает эту уязвимость, и это не повод расслабляться. Это повод действовать, пока она туда не попала.
Один острый урок: если ваш реестр раздаёт артефакты, содержащие секреты, — ваш реестр является хранилищем секретов, независимо от того, проектировали ли вы его таким образом или нет.
Влияние на отрасль
Для компаний в сфере iGaming и финтех самостоятельно развёрнутый Git распространён именно потому, что регуляторы не в восторге от хранения исходного кода в чужом S3-бакете. Gitea и Forgejo — популярный выбор, поскольку они лёгкие, быстрые и не требуют JVM. Обратная сторона — вы сами отвечаете за цикл установки патчей, а в команде из 10 человек обновление Gitea регулярно откладывается за обновлением Kafka и минорным патчем Postgres каждый квартал.
Цифру 31 750 стоит интерпретировать в операционных терминах. Если даже один процент этих развёртываний содержит единственную утёкшую облачную учётную запись с широкими правами IAM, это сотни потенциальных инцидентов в дальнейшей цепочке. Для среднего оператора стоимость единственной ротации учётных данных производственной базы данных — включая дежурные часы, поэтапный rollout и неизбежный шторм соединений после ротации — легко обходится в неделю инженерного времени. Умножьте это на каждый секрет, который предположительно раскрыт, и вы смотрите на реальный бюджет. В команде из 10 человек это работа двух инженеров на спринт — потраченная на устранение последствий.
Облачное большинство среди уязвимых инстансов также кое-что говорит о том, как команды относятся к Gitea. Это сервис категории «настроил, направил на него домен, забыл». Именно такая операционная модель порождает многолетние окна уязвимости. Неудобный вывод: большинство затронутых организаций, вероятно, не знали, что функция реестра вообще была включена.
Для компаний в сфере ad-tech и DeFi, использующих Gitea для внутреннего инструментария, главной угрозой является атака на цепочку поставок. Утёкший образ с NPM-токеном времени сборки или учётными данными приватного реестра пакетов — идеальная точка опоры для атаки на цепочку поставок. OWASP Top Ten неспроста постоянно фокусируется на нарушенном контроле доступа: эта категория продолжает порождать ошибки с наихудшим радиусом поражения.
За чем следить
В ближайшие несколько недель важны три сигнала. Первый — появление публичного PoC. Поверхность атаки — это стандартный Docker-инструментарий против OCI-эндпоинта, так что рабочий эксплойт представляет собой короткий скрипт. Как только он окажется на GitHub, оппортунистическое сканирование последует в течение нескольких часов. Операторы honeypot-ловушек увидят его раньше, чем защитники.
Второй — включение в каталог CISA KEV. Если активная эксплуатация будет подтверждена и уязвимость попадёт в каталог KEV, вступят в силу федеральные требования и волна крупных предприятий будет вынуждена установить патчи в соответствии с календарём. Именно тогда длинный хвост незакрытых систем начнёт видимо сокращаться.
Третий — следите за темпом релизов Forgejo. Сообщество форка движется по собственному расписанию, и не каждый администратор Forgejo отслеживает номера CVE в upstream Gitea. Ожидайте вторичную волну раскрытия по мере распространения специфического для Forgejo уведомления.
Мой прогноз: в течение 60 дней мы увидим хотя бы одно раскрытое нарушение, которое можно будет отследить до утёкших учётных данных, полученных из реестра Gitea, — даже если сам факт pull-запроса не станет заголовком новости. Именно так подобные истории обычно и всплывают — ниже по течению от реальной уязвимости.
Ключевые выводы
- Обновите Gitea до версии 1.26.2 немедленно, или установите
[service].REQUIRE_SIGNIN_VIEW=trueв качестве временной меры. Forgejo и другие форки нуждаются в соответствующих патчах. - Относитесь к этому как к событию раскрытия учётных данных. Перечислите образы, хранившиеся в вашем реестре, выявите встроенные секреты и выполните ротацию исходя из предположения о компрометации.
- Уязвимость охватывает Gitea с версии 1.13.0 по 1.26.1 — примерно четыре года релизов. Ваше окно раскрытия, вероятно, превышает срок хранения данных об инцидентах.
- Более 31 750 интернет-доступных инстансов уязвимы в более чем 30 странах, при этом более половины размещены на крупных облачных платформах. Считайте, что ваши коллеги также устанавливают патчи на этой неделе.
- Проведите аудит ваших реестров контейнеров в целом. Если pull-запрос образа даёт злоумышленнику рабочие учётные данные, ваш реестр является частью поверхности хранения секретов и должен рассматриваться соответственно.
Часто задаваемые вопросы
В: Что такое CVE-2026-27771 и насколько это серьёзно?
CVE-2026-27771 — критическая уязвимость обхода аутентификации во встроенном реестре контейнеров Gitea, позволяющая неаутентифицированным удалённым злоумышленникам скачивать приватные образы контейнеров без каких-либо учётных данных. Это серьёзно, поскольку приватные образы часто содержат исходный код, API-ключи и учётные данные баз данных, а уязвимость существует почти четыре года на примерно 31 750 раскрытых развёртываниях.
В: Какие версии Gitea затронуты и как это исправить?
Затронуты все версии Gitea с 1.13.0 по 1.26.1, а также Forgejo и другие форки, унаследовавшие уязвимый код. Исправление — обновление до Gitea 1.26.2 или более поздней версии. В качестве временного обходного пути установите [service].REQUIRE_SIGNIN_VIEW=true в конфигурации Gitea, что отключает весь анонимный доступ, включая доступ к публичным репозиториям.
В: Активно ли эксплуатируется CVE-2026-27771?
По состоянию на уведомление от 28 мая 2026 года подтверждённых сообщений об активной эксплуатации нет, и публичный код proof-of-concept не опубликован. Ни одна APT-группа публично не атрибутирована. Тем не менее атака использует стандартный Docker-инструментарий и не требует учётных данных, поэтому эксплуатация станет тривиальной, как только появится PoC.
77% обновили облачную безопасность для ИИ, но лишь 26% могут её применять
Отчёт Check Point 2026 фиксирует разрыв в 51 пункт между компаниями, обновившими облачную безопасность для ИИ (77%), и теми, чья архитектура реально способна её обеспечить (26%).
Окно эксплуатации Zero-Day сократилось до 24 часов
Zero-Day Clock фиксирует: среднее время от раскрытия уязвимости до эксплуатации составляет чуть больше суток — против года в 2021-м. Цикл патчей 90 дней мёртв.
Уязвимость нулевого дня KnowledgeDeliver: 100% установок с одним hardcoded ключом
Каждая установка KnowledgeDeliver до 24 февраля 2026 года содержала один и тот же hardcoded ASP.NET machineKey. Один утёкший секрет, один ViewState-пейлоад — полный RCE.




