Безпека
Ця сторінка каже і що ми захищаємо, і чого захистити не можемо. Розповідь про безпеку без другої частини підштовхує читача сприйняти перелік як гарантію.
Відправна точка
Опублікувати пакет означає виконати код на комп'ютері кожного інженера, який його встановить. Кожне рішення щодо безпеки в цьому продукті спершу зважувалося проти одного запитання: чи не полегшує ця зміна публікацію без дозволу?
Пакети підписані (ECDSA P-256)
Файл підпису мандрує всередині пакета. Він підписує маніфест із хешами файлів, ідентифікатором пакета та версією — а не голий хеш архіву.
Якби підписувався лише хеш, коректно підписаний старий архів можна було б виставити під новим номером версії: підпис пройшов би перевірку, і користувач встановив би як «оновлення» інструмент із відомою вразливістю.
Закритий ключ НЕ лежить на сервері
Сервер лише перевіряє. Підписування відбувається на власному комп'ютері того, хто публікує, окремим інструментом.
Якби ключ лежав на сервері, той, хто захопив би сервер, міг би змінити пакет і підписати його заново — і підпис втратив би будь-який сенс.
Клієнт теж перевіряє
Надбудова на комп'ютері інженера звіряє підпис самостійно, і список довірених ключів, яким вона користується, не приходить із сервера.
Підпис існує саме тому, що серверу не можна вірити на слово. Брати список довіри з того самого сервера означало б тихо скасувати вихідне припущення.
Журнал аудиту, який неможливо видалити
Кожна публікація, кожна зміна дозволу й кожне рішення щодо каналу записуються назавжди. Шляху для зміни чи видалення навмисно немає, і очищення за строком зберігання його не торкається.
«Як цей інструмент тут опинився» зазвичай питають через місяці. Того дня запис, який можна було видалити, — це запис, якого ніколи не існувало.
Правило чотирьох очей, за бажанням
Просування версії у ширший канал може вимагати погодження другого адміністратора, і той, хто подав запит, не може погодити власний запит. Повернення назад не вимагає погодження ніколи.
Типово воно вимкнене. У команді з трьох осіб такий бар’єр за кілька тижнів перетворюється на повідомлення, яке погоджують не читаючи; механізм контролю, який вважають захисним, хоча він таким не є, гірший за його відсутність.
Розпакування архіву саме по собі є поверхнею атаки
Завантажені архіви перевіряються на виходи за межі теки (zip-slip) і бомби розпакування, а розмір розпакованого обмежено.
Розпакувати архів здається безневинним. Спеціально підготовлений може записати файли за межі цільової теки або заповнити диск сервера.
Вхід без пароля
Користувачі входять за одноразовим кодом, надісланим на їхню електронну адресу. Сеанс тримається на короткоживучому токені; токен оновлення ніколи не видно коду в браузері.
Якщо немає сховища паролів, яким треба керувати, немає й бази паролів, яка могла б витекти. А повторне використання вже відкликаного токена оновлення вважається ознакою крадіжки: сеанс завершується.
Ви бачите, що саме встановлюєте
Тека встановлення містить машиночитний перелік складників (SBOM CycloneDX) і сценарії міграції для обох баз даних.
Ваш ІТ-відділ має мати змогу переглянути те, що потрапить на сервер, до того як воно туди потрапить. Коли оголошують вразливість у залежності, питання «чи є вона у нас» стає пошуком по файлу.
Чого ми захистити не можемо
Це не прогалини, це межі. Вони випливають із будови, і стверджувати протилежне було б неправдою.
- Двоє адміністраторів, які діють разом. Правило чотирьох очей зупиняє одного, не двох.
- Системний адміністратор сервера. Для того, хто має доступ до бази даних і файлової системи, жоден механізм на рівні застосунку не є перешкодою.
- Робоча станція, де лежить ключ підпису. Ключа немає на сервері, але він десь є; якщо та машина впаде, впаде й підпис.
- Навмисно прихована шкідлива поведінка. Наша перевірка пакетів евристична, і ми не стверджуємо, що вона вловить код, який намагається сховатися.
- Витік даних. Встановлений інструмент виконується з власними правами інженера й може прочитати все, куди ті права сягають. Це обмежують засоби операційної системи та мережі, а не цей продукт.
- Безпека ваших резервних копій. Копія бази даних у ваших руках, і все, що в ній є, коштує рівно стільки ж, скільки й жива система.
Повідомити про вразливість
Якщо ви щось знайшли — напишіть нам. Ми ставимося до повідомлень серйозно, не відсторонюємо того, хто повідомив, від процесу, і кажемо, коли виходить виправлення.