Gitea, платформата за хостване на Git среди, отстрани критична уязвимост за отдалечено изпълнение на код (RCE). Потребител с обикновен достъп за писане в дадено хранилище може да превърне контролирано от атакуващия съдържание на корекция (patch) в активен Git hook и да изпълнява shell команди с правата на системния акаунт, под който работи услугата Gitea.
Проследявана като CVE-2026-60004 (CVSS резултат: 9.8), уязвимостта засяга версии на Gitea от 1.17 и по-нови, преди 1.27.1, и е коригирана във версия 1.27.1. Засегнатото API повикване изисква автентификация и разрешение за писане в хранилището. Въпреки това, Gitea позволява регистрация на нови потребители по подразбиране, така че външен посетител може да създаде нормален акаунт и хранилище при инсталация с фабрични настройки, след което да експлоатира уязвимостта без предварително съществуващи идентификационни данни.
Решението е обновяване до версия 1.27.1. От Gitea съобщиха на 27 юли, че инстанциите в Gitea Cloud ще бъдат обновени автоматично. В препоръките за сигурност на Gitea от 28 юли не се посочва уязвимостта да е била експлоатирана в реална среда, но се включва публичен код за потвърждение на концепцията (PoC).
Деактивирането на свободната регистрация може да премахне публичния път за създаване на акаунти, докато се внедрява актуализацията, но това не коригира уязвимостта и не защитава от съществуващи потребители с права за писане в хранилището.
Несъвършенството в сигурността беше докладвано от изследователя по сигурността Шай Род, известен като NightRang3r. Gitea изразява благодарност на NightRang3r в своята препоръка за сигурност.
Засегнатият път в Gitea извиква функцията reqToken(), която отхвърля заявки без влязъл в системата потребител. Пътят без предварителни идентификационни данни идва от конфигурацията по подразбиране на проекта, която оставя регистрацията отворена, не изисква имейл или ръчно одобрение, не маркира новите потребители като ограничени и не налага лимит за създаване на хранилища по подразбиране.
Слабостта се намира в endpoint-а POST /api/v1/repos/{owner}/{repo}/diffpatch. Според препоръката за сигурност на Gitea, тази крайна точка прилага предоставената кръпка в рамките на споделено bare временно клонирано хранилище. Уязвимите компилации извикват git apply с параметрите --index, --recount, --cached и --binary, като добавят и опцията за тристранно резервно възстановяване (three-way fallback) -3, когато сървърът изпълнява Git 2.32 или по-нова версия.
Атакуващият изпраща една и съща корекция два пъти, за да създаде колизия от тип „добавяне/добавяне“. Тристранното резервно възстановяване тогава извлича индексирания път, въпреки че операцията използва --cached. Тъй като временното клонирано хранилище е bare, неговата коренна директория е $GIT_DIR. Следователно изпълним файл, поставен в hooks/post-index-change, попада директно в директорията с куки на Git и става активен. Git го изпълнява по време на обновяване на индекса.
Демонстрацията на концепцията (PoC) влиза в системата с обикновен акаунт, създава инициализирано частно хранилище, изпраща злонамерения код два пъти и извлича изхода от командите. Не е необходимо обратно повикване извън мрежата. Git hook-ът съхранява изходните данни в Git обекти, създава клон, съдържащ резултата, и позволява на атакуващия да го изтегли чрез автентикиран smart HTTP.
Към 29 юли 2026 г. нито един от цитираните първични източници не съобщава дали уязвимостта е била експлоатирана преди или след като версия 1.27.1 е станала налична.
Успешното експлоатиране дава на атакуващия привилегиите на системния акаунт на операционната система, под който работи Gitea. В зависимост от това как е изолирана инстанцията, от Gitea заявяват, че това може да изложи на риск тайни на приложението и средата, прикачени хранилища, идентификационни данни и съдържание на бази данни, OAuth идентификационни данни и достъпни вътрешни услуги.
Експлоатирането все пак изисква достъп за писане в хранилище, Git 2.32 или по-нова версия, активиран diffpatch маршрут и временно записваема, изпълнима файлова система. Регистрацията по подразбиране позволява на външен субект да получи необходимия достъп за писане при инсталация с непроменени настройки.
Корекцията за сигурност лесно може да бъде пропусната в списъка с промени. Gitea промени временното клонирано хранилище от bare на non-bare. Коментарът в кода изрично предупреждава, че Git командите, използващи --index, могат да оперират върху работното дърво. Промяната беше слята и пренесена към по-старите версии на 26 юли 2026 г.
Версия 1.27.1 беше пусната на 27 юли, а препоръката за сигурност последва на 28 юли. Бележките по изданието изброяват промяната под категорията MISC като „refactor: git patch apply“, а не в секцията SECURITY.
Род е демонстрирал RCE уязвимостта заедно с отделен проблем за включване на локални файлове (LFI), при който PoC извлича файла /etc/passwd от хост с Gitea 1.27.0. Този проблем изглежда съответства на друга промяна, включена в 1.27.1, която променя Org-mode рендерера на Gitea, така че пътищата в #+INCLUDE да се връщат като обикновен текст, вместо да се четат от файловата система на сървъра. Gitea не е публикувала отделно предупреждение или CVE за този проблем с включването на файлове.