Перейти к содержимому
GitRiverGitRiver
EN
Навигация

Безопасность GitRiver

Порядок сообщения об уязвимостях: куда писать, какие версии поддерживаются и в какие сроки отвечает издатель

Куда сообщать об уязвимости

security@gitriver.ru

Пишите на этот адрес, а не в публичные задачи и не в обсуждения: до выпуска исправления описание уязвимости — готовая инструкция для нападающего, а установки GitRiver обновляются не в один день.

Если нужен закрытый канал с шифрованием, напишите об этом первым письмом без подробностей находки — договоримся о способе и продолжим уже по нему.

Что приложить к сообщению

Чем полнее письмо, тем быстрее ответ. Достаточно того, что у вас есть:

  • версия GitRiver и способ установки (пакет, образ, docker compose, чарт);
  • что происходит и чем это опасно — какие данные или действия становятся доступны;
  • как воспроизвести: запросы, шаги в интерфейсе, минимальный пример;
  • при наличии — предположение о причине.

Просьба: не проверяйте находки на чужих установках. Поднимите свою — docker compose up описан в installation.md. Отказ в обслуживании, подбор паролей и рассылки на чужих установках мы исследованием не считаем.

Сроки

Что Срок
Подтверждение получения письма 3 рабочих дня
Оценка, решение «уязвимость / не уязвимость» и план исправления 10 рабочих дней
Согласованное публичное раскрытие 90 календарных дней с даты сообщения

Сроки считаются от письма, а не от нашего ответа. Если 90 дней не хватает — скажем об этом заранее и объясним, почему, а не поставим перед фактом в последний день. Если мы молчим дольше обещанного, вы вправе раскрыть находку самостоятельно: обязательство здесь наше, а не ваше.

Порядок раскрытия

  1. Вы сообщаете о находке на адрес выше.
  2. Мы подтверждаем получение и заводим закрытую задачу.
  3. Оцениваем: воспроизводим, определяем затронутые версии и опасность.
  4. Готовим исправление и, если нужно, обходной путь для тех, кто не может обновиться сразу.
  5. Выпускаем версию с исправлением.
  6. Публикуем описание: что было, какие версии затронуты, что делать. Имя исследователя указываем — если вы не попросите об обратном.

Пункты 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. Отчёт предоставляется по запросу — напишите на адрес, указанный выше. В нём же названо, что проверкой не покрыто.

Внешнего независимого аудита на текущий момент не проводилось. Как только он будет — краткая выжимка появится в том же отчёте.

Программы вознаграждения нет

Денег за находки мы сейчас не платим и обещать этого не будем, пока не сможем выплачивать. Благодарность — упоминание в описании исправления и в этом файле.