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

Эта страница называет и то, что мы защищаем, и то, что защитить не можем. Рассказ о безопасности без второй части заставляет читателя принять список за гарантию.

Исходная точка

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

  • Пакеты подписаны (ECDSA P-256)

    Файл подписи едет внутри пакета. Подписывается файл манифеста с контрольными суммами файлов, идентификатором пакета и версией — а не голая сумма архива.

    Если бы подписывалась только сумма, корректно подписанный старый архив можно было бы выставить под новым номером версии: подпись сошлась бы, и пользователь установил бы заведомо уязвимый инструмент как «обновление».

  • Закрытый ключ НЕ на сервере

    Сервер только проверяет. Подписывание происходит на машине публикующего, отдельным инструментом.

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

  • Клиент тоже проверяет

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

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

  • Журнал аудита, который нельзя удалить

    Каждая публикация, каждое изменение прав и каждое решение по каналу пишутся навсегда. Пути изменения и удаления намеренно нет, и очистка по сроку хранения его не трогает.

    Вопрос «как этот инструмент здесь оказался» обычно задают месяцы спустя. В тот день запись, которую можно было удалить, — это запись, которой не было.

  • Необязательное правило четырёх глаз

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

    Изначально оно выключено. В команде из трёх человек этот контроль за недели превращается в сообщение, которое одобряют не читая; контроль, который считают защитой, не будучи ею, хуже, чем его отсутствие.

  • Распаковка архива — тоже поверхность атаки

    Загруженные архивы проверяются на выход за каталог (zip-slip) и бомбы сжатия, а размер после распаковки ограничен.

    Распаковать архив кажется безобидным. Подготовленный может записать файлы за пределы целевой папки или заполнить диск сервера.

  • Вход без пароля

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

    Нет набора паролей — нет и базы паролей, которая может утечь. А повторное использование отозванного токена обновления считается признаком кражи: сессия сбрасывается.

  • Что устанавливается — записано

    В папке установки лежат машиночитаемая ведомость состава (CycloneDX SBOM) и сценарии миграции для обеих СУБД.

    Ваша ИТ-служба должна видеть, что попадёт на сервер, до установки. Когда в зависимости объявляют уязвимость, вопрос «есть ли она у нас» становится поиском по файлу.

Чего мы защитить не можем

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

  • Двух администраторов, действующих сообща. Правило четырёх глаз останавливает одного, но не двоих.
  • Системного администратора сервера. Для того, у кого есть доступ к базе данных и файловой системе, никакой контроль на уровне приложения не помеха.
  • Рабочую станцию, где лежит ключ подписи. Ключа нет на сервере, но он где-то есть; если падёт та машина, падёт и подпись.
  • Намеренно скрытое вредоносное поведение. Наша проверка пакетов эвристическая, и мы не утверждаем, что она поймает код, который прячется.
  • Утечку данных. Установленный инструмент работает с собственными правами инженера и может прочитать всё, до чего эти права дотягиваются. Это ограничивают операционная система и сеть, а не этот продукт.
  • Сохранность ваших резервных копий. Копия базы данных в ваших руках, и всё в ней ровно так же ценно, как работающая система.

Сообщить об уязвимости

Если вы её нашли — напишите нам. Мы относимся к сообщениям серьёзно, не отстраняем нашедшего от процесса и сообщаем, когда выйдет исправление.

security@ypcad.com