Навигация
Безопасность GitRiver
Порядок сообщения об уязвимостях: куда писать, какие версии поддерживаются и в какие сроки отвечает издатель
Куда сообщать об уязвимости
Пишите на этот адрес, а не в публичные задачи и не в обсуждения: до выпуска исправления описание уязвимости — готовая инструкция для нападающего, а установки GitRiver обновляются не в один день.
Если нужен закрытый канал с шифрованием, напишите об этом первым письмом без подробностей находки — договоримся о способе и продолжим уже по нему.
Что приложить к сообщению
Чем полнее письмо, тем быстрее ответ. Достаточно того, что у вас есть:
- версия GitRiver и способ установки (пакет, образ,
docker compose, чарт); - что происходит и чем это опасно — какие данные или действия становятся доступны;
- как воспроизвести: запросы, шаги в интерфейсе, минимальный пример;
- при наличии — предположение о причине.
Просьба: не проверяйте находки на чужих установках. Поднимите свою —
docker compose up описан в installation.md.
Отказ в обслуживании, подбор паролей и рассылки на чужих установках мы
исследованием не считаем.
Сроки
| Что | Срок |
|---|---|
| Подтверждение получения письма | 3 рабочих дня |
| Оценка, решение «уязвимость / не уязвимость» и план исправления | 10 рабочих дней |
| Согласованное публичное раскрытие | 90 календарных дней с даты сообщения |
Сроки считаются от письма, а не от нашего ответа. Если 90 дней не хватает — скажем об этом заранее и объясним, почему, а не поставим перед фактом в последний день. Если мы молчим дольше обещанного, вы вправе раскрыть находку самостоятельно: обязательство здесь наше, а не ваше.
Порядок раскрытия
- Вы сообщаете о находке на адрес выше.
- Мы подтверждаем получение и заводим закрытую задачу.
- Оцениваем: воспроизводим, определяем затронутые версии и опасность.
- Готовим исправление и, если нужно, обходной путь для тех, кто не может обновиться сразу.
- Выпускаем версию с исправлением.
- Публикуем описание: что было, какие версии затронуты, что делать. Имя исследователя указываем — если вы не попросите об обратном.
Пункты 5 и 6 идут именно в этом порядке: описание выходит тогда, когда обновиться уже есть на что.
Поддерживаемые версии
Исправления безопасности выпускаются для текущей минорной версии. Предыдущая минорная получает исправления только критических уязвимостей — шесть месяцев с даты выхода следующей за ней.
| Версия | Вышла | Исправления безопасности |
|---|---|---|
| 1.1.x | 2026-09-25 | да — текущая |
| 1.0.x | 2026-03-29 | только критические, до 2027-03-25 (полгода с выхода 1.1.0) |
| ниже 1.0 | — | нет |
Дата в таблице выводится из правила выше, а не назначается отдельно: выйдет 1.2.0 — 1.1.x получит свои полгода от её даты, а 1.0.x перестанет поддерживаться.
Более старые версии не обновляются: рабочий ответ здесь — обновиться, а не ждать заплатки к тому, что давно заменено.
Что мы считаем уязвимостью
Обход или ослабление того, что заявлено как защита. Например:
- доступ к чужому приватному репозиторию, задаче, запросу на слияние, пакету или образу; обход прав участника и защиты веток;
- выполнение чужого кода на сервере, чтение и запись файлов за пределами отведённых каталогов;
- угон сессии, подделка токена, обход двухфакторной проверки, повышение прав до администратора;
- утечка секретов: переменных CI, токенов доступа, ключей подписи, паролей подключения;
- запросы сервера во внутреннюю сеть по указанному пользователем адресу (SSRF) в обход проверки;
- внедрение сценария в интерфейс, обход политики CSP;
- отказ в обслуживании непропорционально малым запросом — «бомба» в архиве, разбор документа без предела, запрос, который занимает память по размеру данных.
Не уязвимость сама по себе:
- отсутствие заголовка или настройки без показанных последствий (сканер сказал «нет заголовка X» — это не находка, покажите, что из-за него ломается);
- действия администратора установки: он и так может всё, включая произвольный HTML в подвале и запуск задач CI. Границей считается получение прав администратора, а не то, что администратор ими пользуется;
- выполнение произвольного кода внутри задачи CI: задача — это и есть чужой код, запущенный намеренно. Уязвимость — выход задачи за отведённые ей пределы: к данным других задач, к хосту, к секретам чужих репозиториев;
- уязвимости зависимостей без показанного пути их использования в GitRiver
(состав стороннего кода поставки перечислен в
THIRD-PARTY-NOTICES.mdрядом с этим файлом); - перебор паролей на установке, где администратор снял ограничение частоты запросов.
Что уже проверено
Своя проверка кода по списку OWASP ASVS, уровень L2. Отчёт предоставляется по запросу — напишите на адрес, указанный выше. В нём же названо, что проверкой не покрыто.
Внешнего независимого аудита на текущий момент не проводилось. Как только он будет — краткая выжимка появится в том же отчёте.
Программы вознаграждения нет
Денег за находки мы сейчас не платим и обещать этого не будем, пока не сможем выплачивать. Благодарность — упоминание в описании исправления и в этом файле.