Bezpečnosť
Táto stránka hovorí aj to, čo chránime, aj to, čo ochrániť nevieme. Bezpečnostné rozprávanie, ktorému chýba druhá časť, zvádza čitateľa, aby si zoznam pomýlil so zárukou.
Východiskový bod
Publikovať balík znamená spustiť kód na počítači každého inžiniera, ktorý si ho nainštaluje. Každé bezpečnostné rozhodnutie v tomto produkte bolo najprv vážené proti jednej otázke: uľahčuje táto zmena publikovanie bez oprávnenia?
Balíky sú podpísané (ECDSA P-256)
Súbor s podpisom cestuje vnútri balíka. Podpisuje manifest s odtlačkami súborov, označením balíka a verziou — nie iba odtlačok archívu.
Keby sa podpisoval len odtlačok, dal by sa starý, správne podpísaný archív podstrčiť pod novým číslom verzie: podpis by overením prešiel a používateľ by si ako „aktualizáciu“ nainštaloval nástroj so známou zraniteľnosťou.
Súkromný kľúč NIE JE na serveri
Server len overuje. Podpisovanie sa deje na počítači toho, kto publikuje, samostatným nástrojom.
Keby kľúč ležal na serveri, mohol by ten, kto ho získa, balík zmeniť a znova podpísať — čím by bol podpis na nič.
Overuje aj klient
Doplnok na počítači inžiniera overí podpis sám za seba a zoznam dôveryhodných kľúčov, ktorý používa, nepochádza zo servera.
Podpis existuje práve preto, že serveru sa nedá veriť na slovo. Vziať zoznam dôvery z toho istého servera by ticho zrušilo východiskový predpoklad.
Auditný záznam, ktorý sa nemaže
Každé publikovanie, každá zmena oprávnenia a každé rozhodnutie o kanáli sa zapisujú natrvalo. Zámerne neexistuje žiadna cesta k zmene ani k zmazaniu a upratovanie po uplynutí času uchovania sa ho nedotkne.
„Ako sa sem ten nástroj dostal“ sa pýta zvyčajne po mesiacoch. V ten deň je záznam, ktorý sa dal zmazať, záznamom, ktorý nikdy nebol.
Pravidlo štyroch očí, voliteľné
Vydanie verzie do širšieho kanála môže vyžadovať schválenie druhého správcu a ten, kto požiadal, nemôže schváliť vlastnú žiadosť. Vrátenie späť schválenie nevyžaduje nikdy.
V predvolenom nastavení je vypnuté. V trojčlennom tíme sa prekážka za pár týždňov zmení na správu, ktorá sa schvaľuje bez čítania; kontrola, o ktorej sa verí, že chráni, hoci nechráni, je horšia než žiadna.
Rozbalenie archívu je samo osebe útočná plocha
Nahrané archívy sa kontrolujú na únik z priečinka (zip-slip) a na dekompresné bomby a veľkosť po rozbalení je obmedzená.
Rozbaliť archív vyzerá neškodne. Zvlášť pripravený môže zapísať súbory mimo cieľového priečinka alebo zaplniť disk servera.
Prihlásenie bez hesla
Používatelia sa prihlasujú jednorazovým kódom poslaným na svoju adresu. Relácia beží na krátkodobom tokene; obnovovací token nie je nikdy viditeľný pre kód v prehliadači.
Ak niet trezora hesiel, ktorý by sa musel spravovať, niet ani databázy hesiel, ktorá by mohla uniknúť. A opätovné použitie už zneplatneného obnovovacieho tokenu sa berie ako známka krádeže: relácia sa zavrie.
Vidíte, čo inštalujete
Inštalačný priečinok obsahuje strojovo čitateľný súpis súčastí (SBOM CycloneDX) a migračné skripty pre obe databázy.
Vaše IT musí mať možnosť skontrolovať, čo príde na server, skôr než to príde. Keď sa ohlási zraniteľnosť v nejakej závislosti, „máme ju?“ sa stane hľadaním v súboroch.
Čo ochrániť nevieme
Toto nie sú nedostatky, ale hranice. Vyplývajú zo stavby a tvrdiť opak by bola nepravda.
- Dvaja správcovia, ktorí konajú spolu. Pravidlo štyroch očí zastaví jedného, nie dvoch.
- Systémový správca servera. Pre toho, kto má prístup k databáze a k súborovému systému, nie je žiadna kontrola na úrovni aplikácie prekážkou.
- Stanica, na ktorej leží podpisový kľúč. Kľúč nie je na serveri, ale niekde je; ak padne ten stroj, padne s ním aj podpis.
- Zámerne skryté zlomyseľné správanie. Naša prehliadka balíkov je heuristická a netvrdíme, že chytí kód, ktorý sa snaží ukryť.
- Únik údajov. Nainštalovaný nástroj beží s oprávneniami samotného inžiniera a môže čítať všetko, kam tie oprávnenia siahajú. Obmedzujú to kontroly operačného systému a siete, nie tento produkt.
- Bezpečnosť vašich záloh. Kópia databázy je vo vašich rukách a všetko v nej má presne takú cenu ako živý systém.
Hlásenie zraniteľnosti
Ak ste nejakú našli, napíšte nám. Hlásenia berieme vážne, hlásiaceho z procesu nevyraďujeme a dáme vedieť, kedy oprava vyjde.