Лента угроз

CVE-2026-60004 — инъекция кода в Gitea, ведущая к выполнению команд на сервере

CVE-2026-60004 — инъекция кода (CWE-94, CVSS 9,8, KEV) в эндпоинте diffpatch Gitea, исправлено в 1.27.1. Почему открытая регистрация соответствует условию доступа на запись.

Опубликовано 2026-09-05 Обновлено 2026-10-04 Последняя проверка 2026-09-05 7 мин чтения
На этой странице

Краткий обзор уязвимости с подтвержденной эксплуатацией (включена в каталог CISA KEV): что происходит, что затронуто и что делать — со стороны защитника, без шагов воспроизведения.

Сводка по бюллетеню
CVE
CVE-2026-60004
Серьезность
Критическая (CVSS 9,8, v3.1; оценка, указанная в NVD, приписывается органу, присваивающему номера CVE)
Класс
Инъекция кода (CWE-94)
Последствия
Устанавливается вредоносный Git-хук → команды выполняются от имени пользователя ОС Gitea
Затронуто
Gitea 1.17 – 1.27.0 по данным бюллетеня производителя. Исправлено в 1.27.1
Эксплуатация
Включена в CISA KEV (добавлена 25 августа 2026, срок — 28 августа). Использование в программах-вымогателях отмечено как «Unknown»
Вероятность
EPSS 0,868 (по нашей ленте на 2026-09-05) — верхний уровень
9,8
CVSS v3.1
1.27.1
Исправленный выпуск
0,868
EPSS (оценка эксплуатации)
KEV
Эксплуатируется в реальных атаках

Не воспринимайте «требуемые привилегии» как успокоение

Прочтение A (описание CISA)

«злоумышленник с доступом на запись в репозиторий» — звучит как условие

Прочтение B (вектор CVSS)

PR:N — привилегии не требуются

↓ бюллетень производителя объясняет оба

При включенной открытой регистрации

регистрация → создание репозитория → выдача себе доступа на запись, нужного для атаки

Если нужная привилегия доступна через регистрацию, условие о привилегиях стоит злоумышленнику лишь одного дополнительного шага: создания учетной записи.

Успокаивать себя фразой «но для этого нужна привилегия X» — распространенная ошибка в оценке уязвимости. Вопрос не в том, кто обладает этой привилегией, а в том, можно ли получить ее извне. Открытая регистрация, регистрация без приглашения, права, выдаваемые по умолчанию, — если у привилегии есть путь получения, это не настоящее условие.

Это то же самое, что пункт ② в статье типичные ошибки — это ошибки в допущениях. И проверяйте путь регистрации через HTTP, а не по конфигурационному файлу (Аутентификация и авторизация).

В чем состоит уязвимость

Из бюллетеня производителя
Путь
Эндпоинт diffpatch неправильно обрабатывает применение патча во временных общих клонах
Результат
Может быть установлен вредоносный Git-хук (hooks/post-index-change)
Триггер
Хук выполняется от имени пользователя ОС Gitea, когда Git записывает индекс
Доступно оттуда
Секреты приложения, учетные данные базы данных, токены OAuth, подключенные репозитории
Предусловия
По заявлению производителя, эксплуатация требует Git 2.32+, включенного маршрута diffpatch и доступной для записи и выполнения временной файловой системы

Установленный Git-хук остается после обновления, поэтому обновление — не конец работы

Эта уязвимость заканчивается тем, что на сервере остается исполняемый объект. Обновление закрывает путь, по которому он устанавливается, но не удаляет ничего из уже установленного.

Git-хук задуман как легитимная точка удаленного выполнения, поэтому после установки он не выглядит подозрительно. Отличить законное обслуживание от бэкдора можно только по тому, кто его создал, с чьего разрешения и попал ли он в журнал. После устранения уязвимости проверьте, не оставил ли злоумышленник что-либо. Не пропускайте этот шаг.

Что делать

1

Обновитесь до 1.27.1 или новее (основное действие)

В бюллетене производителя затронутый диапазон указан как 1.17 – 1.27.0, исправление — 1.27.1. Начните с этого. Никто не обновит самостоятельно размещенный экземпляр за вас. Сначала проверьте запущенную версию, как описано в playbook по устранению CVE.

2

Проверьте настройку регистрации по-настоящему

Как сказано выше, включенная открытая регистрация фактически снимает условие о привилегиях. Не читайте настройку — откройте страницу регистрации без входа в систему и посмотрите, что произойдет. Для внутреннего экземпляра отключите регистрацию и, кроме того, ограничьте доступ на сетевом уровне, а не полагайтесь только на аутентификацию.

3

Ищите хуки и файлы, которые вы не узнаете

После обновления проверьте скрипты в каталогах хуков репозиториев, которые вы туда не помещали, неожиданные исполняемые файлы и незнакомый исходящий трафик от процесса Gitea. Вопрос не в том, «обновились ли мы», а в том, «осталось ли что-нибудь после атаки».

4

Если компрометация правдоподобна, считайте доступный набор скомпрометированным

Производитель перечисляет доступными секреты приложения, учетные данные базы данных и токены OAuth. Если проверка не дает ответа, помните: «мы не знаем» — это не то же самое, что «ничего не произошло» — смените их. Работа с ключами описана в статье что опасно в .env и API-ключах.

5

Пересмотрите сам выбор (без спешки)

Самостоятельное размещение означает обязанность самостоятельно устанавливать обновления. Компромиссы описаны в статье self-hosted Git против GitHub: что безопаснее. Это не призыв к миграции — это повод решить, исходя из того, можете ли вы действительно регулярно применять обновления.

Мнение этого сайта: CVSS и KEV измеряют разное, поэтому читайте оба

Этот случай стал наглядным примером того, о чем мы писали в статье сортировка CVE с CVSS, EPSS и KEV. CVSS показывает, насколько уязвимость серьезна технически, запись CISA — как ее используют на практике, а EPSS оценивает вероятность эксплуатации — это три разных измерения.

Здесь вектор CVSS PR:N и формулировка CISA «требуется доступ на запись» выглядели противоречиво. Если читать только одно из них, можно было бы решить, что «нужна привилегия, значит, можно подождать». Расхождение редко означает ошибку в данных; это сигнал, что упущено какое-то допущение. В данном случае ответ был в бюллетене производителя (открытая регистрация).

Источники (первичные)

  • Бюллетень безопасности Gitea GHSA-rcr6-4jqh-j84m — github.com (затронуто 1.17–1.27.0 / исправлено в 1.27.1 / условие о привилегиях и его связь с открытой регистрацией / что доступно / предусловия)
  • NIST NVD, «CVE-2026-60004» — nvd.nist.gov (CVSS v3.1 9.8, вектор, CWE-94; статус Analyzed)
  • CISA Known Exploited Vulnerabilities Catalog — cisa.gov (добавлена 25 августа 2026, срок — 28 августа, использование в программах-вымогателях «Unknown»)
  • Gitea, «Release of 1.27.1» — blog.gitea.com

Все проверено 5 сентября 2026 года. Шаги воспроизведения и ссылки на код доказательства концепции здесь не публикуются.

Читайте далее

FAQ

QЧто происходит с CVE-2026-60004?
A

Согласно бюллетеню безопасности производителя, эндпоинт diffpatch неправильно обрабатывает применение патча, в результате чего может быть установлен вредоносный Git-хук (hooks/post-index-change). Этот хук выполняется от имени пользователя ОС Gitea, когда Git записывает индекс. Производитель перечисляет секреты приложения, учетные данные базы данных, токены OAuth и подключенные репозитории среди того, что становится доступным.

QТребуется ли аутентификация? CVSS говорит, что привилегии не нужны, CISA — что нужен доступ на запись к репозиторию.
A

Оба утверждения верны и не противоречат друг другу. В бюллетене производителя сказано, что для эксплуатации необходим доступ на запись к репозиторию, а затем объясняется, что при включенной открытой регистрации неаутентифицированный пользователь может зарегистрировать учетную запись и создать репозиторий, чтобы получить именно этот доступ. Иными словами, когда требуемую привилегию может получить любой, она фактически не является требованием — это и отражает вектор CVSS.

QКакие версии затронуты и как это исправить?
A

В бюллетене производителя затронутый диапазон указан как 1.17–1.27.0, исправленный выпуск — 1.27.1. Исправление — обновление до 1.27.1 или более поздней версии. Самостоятельно размещенный Gitea не обновляется сам, поэтому чем дольше экземпляр оставлен без внимания, тем дольше он остается уязвимым.

QДостаточно ли обновления?
A

Обновление — основное действие, но не вся работа. Итогом этой уязвимости является исполняемый артефакт, оставленный на сервере — Git-хук, а обновление закрывает путь, по которому такой хук устанавливается, но не удаляет уже установленное. После обновления проверьте хуки и файлы, которые вы не узнаете, и убедитесь, что настройка регистрации соответствует вашим намерениям. Если компрометация выглядит правдоподобной, считайте скомпрометированным то, что производитель перечисляет как доступное, — секреты, учетные данные базы данных, токены OAuth, — и смените их.