Varnost
Ta stran pove tako, kaj varujemo, kot česa ne moremo zaščititi. Varnostna zgodba, ki ji manjka drugi del, bralca zavede, da seznam zamenja z jamstvom.
Izhodišče
Objaviti paket pomeni pognati kodo na računalniku vsakega inženirja, ki ga namesti. Vsaka varnostna odločitev v tem izdelku je bila najprej tehtana ob enem vprašanju: ali ta sprememba olajša neupravičeno objavo?
Paketi so podpisani (ECDSA P-256)
Datoteka podpisa potuje znotraj paketa. Podpisuje manifest z odtisi datotek, oznako paketa in različico — ne zgolj odtisa arhiva.
Če bi se podpisoval samo odtis, bi bilo mogoče star pravilno podpisan arhiv podtakniti pod novo številko različice: podpis bi prestal preveritev, uporabnik pa bi kot „posodobitev“ namestil orodje z znano ranljivostjo.
Zasebni ključ NI na strežniku
Strežnik samo preverja. Podpisovanje se zgodi na računalniku tistega, ki objavlja, z ločenim orodjem.
Če bi ključ stal na strežniku, bi lahko tisti, ki ga prevzame, paket spremenil in ga znova podpisal — s čimer bi podpis postal zaman.
Preveri tudi odjemalec
Dodatek na inženirjevem računalniku podpis preveri sam zase, seznam zaupanja vrednih ključev, ki ga uporablja, pa ne pride s strežnika.
Podpis obstaja prav zato, ker strežniku ni mogoče verjeti na besedo. Vzeti seznam zaupanja z istega strežnika bi tiho izničilo izhodiščno predpostavko.
Revizijska sled, ki se ne briše
Vsaka objava, vsaka sprememba pravic in vsaka odločitev o kanalu se zapišejo za vedno. Namenoma ni nobene poti za spremembo ali izbris, čiščenje po izteku roka hrambe pa se je ne dotakne.
„Kako je to orodje prišlo sem“ se običajno vpraša čez mesece. Tistega dne je zapis, ki bi ga bilo mogoče izbrisati, zapis, ki ni nikoli obstajal.
Pravilo štirih oči, po izbiri
Dvig različice v širši kanal lahko zahteva odobritev drugega skrbnika, tisti, ki je zahteval, pa svoje zahteve ne more odobriti. Vrnitev nazaj nikoli ne potrebuje odobritve.
Privzeto je izklopljeno. V ekipi treh ljudi se ovira v nekaj tednih spremeni v sporočilo, ki se odobri brez branja; kontrola, za katero se verjame, da varuje, pa ne varuje, je slabša od nobene kontrole.
Razpakiranje arhiva je že samo po sebi napadna površina
Naloženi arhivi se preverjajo glede izhoda iz mape (zip-slip) in glede bomb razpakiranja, velikost po razpakiranju pa je omejena.
Razpakiranje arhiva se zdi nedolžno. Posebej pripravljen lahko zapiše datoteke zunaj ciljne mape ali napolni disk strežnika.
Prijava brez gesla
Uporabniki se prijavijo z enkratno kodo, poslano na njihov naslov. Seja teče s kratkoživim žetonom; osvežitveni žeton ni nikoli viden kodi v brskalniku.
Če ni shrambe gesel, ki bi jo bilo treba upravljati, ni niti zbirke gesel, ki bi lahko ušla. Ponovna uporaba že preklicanega osvežitvenega žetona pa se obravnava kot znak kraje: seja se zapre.
Vidite, kaj nameščate
Namestitvena mapa vsebuje strojno berljiv seznam sestavin (SBOM CycloneDX) in migracijske skripte za obe podatkovni zbirki.
Vaša ekipa IT mora imeti možnost preveriti, kaj pride na strežnik, preden pride. Ko se objavi ranljivost v kakšni odvisnosti, „ali jo imamo?“ postane iskanje po datotekah.
Česa ne moremo zaščititi
To niso pomanjkljivosti, ampak meje. Izhajajo iz zgradbe, trditi nasprotno pa bi bilo neresnično.
- Dva skrbnika, ki delujeta skupaj. Pravilo štirih oči ustavi enega, ne dveh.
- Sistemski skrbnik strežnika. Tistemu, ki ima dostop do podatkovne zbirke in datotečnega sistema, nobena kontrola na ravni aplikacije ni ovira.
- Postaja, na kateri stoji podpisni ključ. Ključ ni na strežniku, a je nekje; če pade tisti stroj, pade tudi podpis.
- Namenoma skrito zlonamerno vedenje. Naš pregled paketov je hevrističen in ne trdimo, da bo ujel kodo, ki se skuša skriti.
- Uhajanje podatkov. Nameščeno orodje deluje s pravicami samega inženirja in lahko bere vse, kar te dosežejo. To omejujejo kontrole operacijskega sistema in omrežja, ne ta izdelek.
- Varnost vaših varnostnih kopij. Kopija podatkovne zbirke je v vaših rokah, vse v njej pa velja natanko toliko kot živ sistem.
Prijava ranljivosti
Če ste katero našli, nam pišite. Prijave jemljemo resno, prijavitelja ne izključimo iz postopka in vam sporočimo, kdaj pride popravek.