Bezpečnost

Tahle stránka říká jak to, co chráníme, tak to, co ochránit neumíme. Bezpečnostní vyprávění, kterému chybí druhá část, svádí čtenáře k tomu, aby si seznam spletl se zárukou.

Výchozí bod

Publikovat balíček znamená spustit kód na počítači každého inženýra, který si ho nainstaluje. Každé bezpečnostní rozhodnutí v tomhle produktu bylo nejdřív váženo proti jedné otázce: usnadňuje tahle změna publikaci bez oprávnění?

  • Balíčky jsou podepsané (ECDSA P-256)

    Soubor s podpisem cestuje uvnitř balíčku. Podepisuje manifest s otisky souborů, označením balíčku a verzí — ne pouhý otisk archivu.

    Kdyby se podepisoval jen otisk, dal by se starý, správně podepsaný archiv podstrčit pod novým číslem verze: podpis by ověřením prošel a uživatel by si jako „aktualizaci“ nainstaloval nástroj se známou zranitelností.

  • Soukromý klíč NENÍ na serveru

    Server jen ověřuje. Podepisování se děje na počítači toho, kdo publikuje, samostatným nástrojem.

    Kdyby klíč ležel na serveru, mohl by ten, kdo ho získá, balíček změnit a znovu podepsat — čímž by byl podpis k ničemu.

  • Ověřuje i klient

    Doplněk na počítači inženýra ověří podpis sám za sebe a seznam důvěryhodných klíčů, který používá, nepochází ze serveru.

    Podpis existuje právě proto, že serveru nelze věřit na slovo. Vzít seznam důvěry z téhož serveru by tiše zrušilo výchozí předpoklad.

  • Auditní záznam, který se nemaže

    Každá publikace, každá změna oprávnění a každé rozhodnutí o kanálu se zapisují natrvalo. Záměrně neexistuje žádná cesta ke změně ani smazání a úklid po uplynutí doby uchování se ho nedotkne.

    „Jak se sem ten nástroj dostal“ se ptá obvykle po měsících. Ten den je záznam, který šlo smazat, záznamem, který nikdy nebyl.

  • Pravidlo čtyř očí, volitelné

    Vydání verze do širšího kanálu může vyžadovat schválení druhého správce a ten, kdo požádal, nemůže schválit vlastní žádost. Vrácení zpět schválení nevyžaduje nikdy.

    Ve výchozím stavu je vypnuté. V tříčlenném týmu se překážka během pár týdnů změní ve zprávu, která se schvaluje bez čtení; kontrola, o níž se věří, že chrání, ač nechrání, je horší než žádná.

  • Rozbalení archivu je samo o sobě útočná plocha

    Nahrané archivy se kontrolují na únik ze složky (zip-slip) a na dekompresní bomby a velikost po rozbalení je omezená.

    Rozbalit archiv vypadá neškodně. Zvlášť připravený může zapsat soubory mimo cílovou složku nebo zaplnit disk serveru.

  • Přihlášení bez hesla

    Uživatelé se přihlašují jednorázovým kódem poslaným na svou adresu. Relace běží na krátkodobém tokenu; obnovovací token není nikdy viditelný pro kód v prohlížeči.

    Není-li trezor hesel, který by se musel spravovat, není ani databáze hesel, která by mohla uniknout. A opětovné použití již zneplatněného obnovovacího tokenu se bere jako známka krádeže: relace se zavře.

  • Vidíte, co instalujete

    Instalační složka obsahuje strojově čitelný soupis součástí (SBOM CycloneDX) a migrační skripty pro obě databáze.

    Vaše IT musí mít možnost zkontrolovat, co na server přijde, dřív než to přijde. Když se ohlásí zranitelnost v nějaké závislosti, „máme ji?“ se stane hledáním v souborech.

Co ochránit neumíme

Tohle nejsou nedostatky, ale hranice. Plynou ze stavby a tvrdit opak by byla nepravda.

  • Dva správci, kteří jednají spolu. Pravidlo čtyř očí zastaví jednoho, ne dva.
  • Systémový správce serveru. Pro toho, kdo má přístup k databázi a souborovému systému, není žádná kontrola na úrovni aplikace překážkou.
  • Stanice, na které leží podpisový klíč. Klíč není na serveru, ale někde je; padne-li ten stroj, padne s ním i podpis.
  • Záměrně skryté zlovolné chování. Naše prohlídka balíčků je heuristická a netvrdíme, že chytí kód, který se snaží ukrýt.
  • Únik dat. Nainstalovaný nástroj běží s oprávněními samotného inženýra a může číst vše, kam ta oprávnění sahají. Omezují to kontroly operačního systému a sítě, ne tenhle produkt.
  • Bezpečnost vašich záloh. Kopie databáze je ve vašich rukou a všechno v ní má přesně takovou cenu jako živý systém.

Hlášení zranitelnosti

Pokud jste nějakou našli, napište nám. Hlášení bereme vážně, hlásícího z procesu nevyřazujeme a dáme vědět, kdy oprava vyjde.

security@ypcad.com