Сигурност

Тази страница казва и какво защитаваме, и какво не можем да защитим. Разказ за сигурност без втората част подтиква четящия да сбърка един списък с гаранция.

Отправната точка

Да публикуваш пакет означава да изпълниш код на машината на всеки инженер, който го инсталира. Всяко решение за сигурност в този продукт първо е било претеглено срещу един въпрос: улеснява ли тази промяна публикуването без разрешение?

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

    Файлът с подписа пътува вътре в пакета. Той подписва манифест с отпечатъците на файловете, идентификатора на пакета и версията — а не гол отпечатък на архива.

    Ако се подписваше само отпечатъкът, валидно подписан стар архив би могъл да се изложи под нов номер на версия: подписът щеше да мине проверката и потребителят щеше да инсталира като „обновление“ инструмент с известна уязвимост.

  • Частният ключ НЕ стои на сървъра

    Сървърът само проверява. Подписването става на собствената машина на този, който публикува, с отделен инструмент.

    Ако ключът стоеше на сървъра, който го превземе, би могъл да промени пакет и да го подпише наново — а това би обезсмислило подписването.

  • Клиентът също проверява

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

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

  • Одитен дневник, който не може да бъде изтрит

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

    „Как се озова тук този инструмент“ обикновено се пита месеци по-късно. В онзи ден запис, който е можел да бъде изтрит, е запис, който никога не е съществувал.

  • Правило на четирите очи, по избор

    Придвижването на версия към по-широк канал може да изисква одобрение от втори администратор, а този, който е заявил, не може да одобри собствената си заявка. Връщането назад никога не изисква одобрение.

    По подразбиране е изключено. В екип от трима души тази преграда за няколко седмици се превръща в съобщение, което се одобрява, без да се чете; мярка, за която се смята, че пази, без да пази, е по-лоша от липсата на мярка.

  • Разпакетирането на архив само по себе си е повърхност за атака

    Качените архиви се проверяват за излизане извън папката (zip-slip) и за бомби при разпакетиране, а размерът на разпакетираното е ограничен.

    Разпакетирането на архив изглежда безобидно. Специално подготвен може да запише файлове извън целевата папка или да запълни диска на сървъра.

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

    Потребителите влизат с еднократен код, изпратен на имейл адреса им. Сесията върви с краткотраен токен; токенът за подновяване никога не е видим за кода в браузъра.

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

  • Виждате какво точно инсталирате

    Инсталационната папка съдържа машинно четим списък на съставките (SBOM CycloneDX) и скриптове за миграция и за двете бази данни.

    Вашият ИТ отдел трябва да може да прегледа какво ще влезе на сървъра преди то да влезе. Когато се обяви уязвимост в зависимост, „имаме ли я“ се превръща в търсене из файловете.

Какво не можем да защитим

Това не са пропуски, а граници. Те следват от устройството и да твърдим обратното би било невярно.

  • Двама администратори, действащи заедно. Правилото на четирите очи спира един, не двама.
  • Системният администратор на сървъра. За този, който има достъп до базата данни и файловата система, никаква мярка на ниво приложение не е пречка.
  • Работната станция, където стои ключът за подписване. Ключът не е на сървъра, но е някъде; ако онази машина падне, пада и подписът.
  • Нарочно скрито зловредно поведение. Нашата проверка на пакети е евристична и не твърдим, че ще улови код, който се опитва да се скрие.
  • Изтичането на данни. Инсталиран инструмент се изпълнява със собствените права на инженера и може да прочете всичко, докъдето стигат те. Това го ограничават мерките на операционната система и на мрежата, а не този продукт.
  • Безопасността на вашите резервни копия. Копието на базата данни е във вашите ръце и всичко в него струва точно толкова, колкото и живата система.

Съобщаване на уязвимост

Ако сте открили такава, пишете ни. Приемаме съобщенията сериозно, не изключваме този, който съобщава, от процеса и казваме кога излиза поправката.

security@ypcad.com