Сигурност
Тази страница казва и какво защитаваме, и какво не можем да защитим. Разказ за сигурност без втората част подтиква четящия да сбърка един списък с гаранция.
Отправната точка
Да публикуваш пакет означава да изпълниш код на машината на всеки инженер, който го инсталира. Всяко решение за сигурност в този продукт първо е било претеглено срещу един въпрос: улеснява ли тази промяна публикуването без разрешение?
Пакетите са подписани (ECDSA P-256)
Файлът с подписа пътува вътре в пакета. Той подписва манифест с отпечатъците на файловете, идентификатора на пакета и версията — а не гол отпечатък на архива.
Ако се подписваше само отпечатъкът, валидно подписан стар архив би могъл да се изложи под нов номер на версия: подписът щеше да мине проверката и потребителят щеше да инсталира като „обновление“ инструмент с известна уязвимост.
Частният ключ НЕ стои на сървъра
Сървърът само проверява. Подписването става на собствената машина на този, който публикува, с отделен инструмент.
Ако ключът стоеше на сървъра, който го превземе, би могъл да промени пакет и да го подпише наново — а това би обезсмислило подписването.
Клиентът също проверява
Добавката на машината на инженера сверява подписа самостоятелно, а списъкът с доверени ключове, който тя ползва, не идва от сървъра.
Подписването съществува именно защото на сървъра не може да се вярва на дума. Да вземем списъка с доверени ключове от същия този сървър би отменило тихо изходното допускане.
Одитен дневник, който не може да бъде изтрит
Всяко публикуване, всяка промяна на право и всяко решение за канал се записват завинаги. Път за промяна или изтриване нарочно няма, а почистването по срок на съхранение не го докосва.
„Как се озова тук този инструмент“ обикновено се пита месеци по-късно. В онзи ден запис, който е можел да бъде изтрит, е запис, който никога не е съществувал.
Правило на четирите очи, по избор
Придвижването на версия към по-широк канал може да изисква одобрение от втори администратор, а този, който е заявил, не може да одобри собствената си заявка. Връщането назад никога не изисква одобрение.
По подразбиране е изключено. В екип от трима души тази преграда за няколко седмици се превръща в съобщение, което се одобрява, без да се чете; мярка, за която се смята, че пази, без да пази, е по-лоша от липсата на мярка.
Разпакетирането на архив само по себе си е повърхност за атака
Качените архиви се проверяват за излизане извън папката (zip-slip) и за бомби при разпакетиране, а размерът на разпакетираното е ограничен.
Разпакетирането на архив изглежда безобидно. Специално подготвен може да запише файлове извън целевата папка или да запълни диска на сървъра.
Вход без парола
Потребителите влизат с еднократен код, изпратен на имейл адреса им. Сесията върви с краткотраен токен; токенът за подновяване никога не е видим за кода в браузъра.
Ако няма хранилище с пароли за управление, няма и база с пароли, която да изтече. А повторното използване на вече отменен токен за подновяване се смята за признак на кражба: сесията се прекратява.
Виждате какво точно инсталирате
Инсталационната папка съдържа машинно четим списък на съставките (SBOM CycloneDX) и скриптове за миграция и за двете бази данни.
Вашият ИТ отдел трябва да може да прегледа какво ще влезе на сървъра преди то да влезе. Когато се обяви уязвимост в зависимост, „имаме ли я“ се превръща в търсене из файловете.
Какво не можем да защитим
Това не са пропуски, а граници. Те следват от устройството и да твърдим обратното би било невярно.
- Двама администратори, действащи заедно. Правилото на четирите очи спира един, не двама.
- Системният администратор на сървъра. За този, който има достъп до базата данни и файловата система, никаква мярка на ниво приложение не е пречка.
- Работната станция, където стои ключът за подписване. Ключът не е на сървъра, но е някъде; ако онази машина падне, пада и подписът.
- Нарочно скрито зловредно поведение. Нашата проверка на пакети е евристична и не твърдим, че ще улови код, който се опитва да се скрие.
- Изтичането на данни. Инсталиран инструмент се изпълнява със собствените права на инженера и може да прочете всичко, докъдето стигат те. Това го ограничават мерките на операционната система и на мрежата, а не този продукт.
- Безопасността на вашите резервни копия. Копието на базата данни е във вашите ръце и всичко в него струва точно толкова, колкото и живата система.
Съобщаване на уязвимост
Ако сте открили такава, пишете ни. Приемаме съобщенията сериозно, не изключваме този, който съобщава, от процеса и казваме кога излиза поправката.