Sikkerhed
Den her side siger både, hvad vi beskytter, og hvad vi ikke kan beskytte. En sikkerhedsfortælling, der mangler den anden halvdel, får læseren til at forveksle en liste med en garanti.
Udgangspunkt
At udgive en pakke er at køre kode på hver eneste ingeniørs computer, der installerer den. Hver sikkerhedsbeslutning i det her produkt er først vejet op mod ét spørgsmål: gør den her ændring det lettere at udgive uden rettighed?
Pakkerne er signeret (ECDSA P-256)
Signaturfilen rejser inde i pakken. Den signerer et manifest med filernes aftryk, pakkens betegnelse og versionen — ikke bare et aftryk af arkivet.
Blev kun aftrykket signeret, kunne et gammelt, korrekt signeret arkiv skubbes ind under et nyt versionsnummer: signaturen ville bestå kontrollen, og brugeren ville installere et værktøj med en kendt sårbarhed som »opdatering«.
Den private nøgle ligger IKKE på serveren
Serveren kontrollerer kun. Signeringen sker på computeren hos den, der udgiver, med et separat værktøj.
Lå nøglen på serveren, kunne den, der får fat i den, ændre en pakke og signere den igen — hvilket ville gøre signaturen forgæves.
Klienten kontrollerer også
Tilføjelsen på ingeniørens computer kontrollerer signaturen selv, og listen over betroede nøgler, den bruger, kommer ikke fra serveren.
Signaturen findes netop, fordi serveren ikke kan tages på ordet. At hente tillidslisten fra den samme server ville stille ophæve den oprindelige antagelse.
En revisionslog, der ikke slettes
Hver udgivelse, hver rettighedsændring og hver kanalbeslutning skrives ind for altid. Der findes med vilje ingen vej til ændring eller sletning, og oprydningen efter opbevaringstiden rører den ikke.
»Hvordan er det her værktøj havnet her« bliver som regel spurgt måneder senere. Den dag er en post, der kunne være slettet, en post, der aldrig har været.
Fireøjneprincippet, valgfrit
At udrulle en version til en bredere kanal kan kræve godkendelse fra en anden administrator, og den, der bad om det, kan ikke godkende sin egen anmodning. Tilbagerulning kræver aldrig godkendelse.
Som standard er det slået fra. I et hold på tre bliver forhindringen på få uger til en besked, der godkendes uden at blive læst; en kontrol, man tror beskytter, men som ikke gør det, er værre end slet ingen kontrol.
At pakke et arkiv ud er i sig selv en angrebsflade
Uploadede arkiver kontrolleres for udbrud af mappen (zip-slip) og for udpakningsbomber, og størrelsen efter udpakning er begrænset.
At pakke et arkiv ud ser uskyldigt ud. Et særligt forberedt kan skrive filer uden for målmappen eller fylde serverens disk.
Log ind uden adgangskode
Brugerne logger ind med en engangskode sendt til deres adresse. Sessionen kører på et kortlivet token; fornyelsestokenet er aldrig synligt for koden i browseren.
Er der intet adgangskodehvælv at passe, er der heller ingen adgangskodedatabase, der kan lække. Og genbrug af et allerede tilbagekaldt fornyelsestoken behandles som tegn på tyveri: sessionen lukkes.
Du ser, hvad du installerer
Installationsmappen indeholder en maskinlæsbar komponentliste (SBOM CycloneDX) og migreringsscripts til begge databaser.
Jeres it-afdeling skal kunne kontrollere, hvad der lander på serveren, før det lander. Når en sårbarhed meldes i en afhængighed, bliver »har vi den?« til en søgning gennem filer.
Hvad vi ikke kan beskytte
Det her er ikke mangler, men grænser. De følger af opbygningen, og at påstå det modsatte ville være usandt.
- To administratorer, der arbejder sammen. Fireøjneprincippet stopper én, ikke to.
- Serverens systemadministrator. For den, der har adgang til databasen og filsystemet, er ingen kontrol på applikationsniveau en forhindring.
- Den arbejdsstation, hvor signeringsnøglen ligger. Nøglen er ikke på serveren, men den er et sted; falder den maskine, falder signaturen med.
- Bevidst skjult ondsindet adfærd. Vores gennemgang af pakker er heuristisk, og vi påstår ikke, at den fanger kode, der forsøger at skjule sig.
- Datalækage. Et installeret værktøj kører med ingeniørens egne rettigheder og kan læse alt, hvad de rækker til. Det begrænses af styresystemets og netværkets kontroller, ikke af det her produkt.
- Sikkerheden i jeres sikkerhedskopier. Kopien af databasen ligger i jeres hænder, og alt i den er præcis lige så meget værd som det levende system.
Anmeld en sårbarhed
Har du fundet en, så skriv til os. Vi tager anmeldelser alvorligt, udelukker ikke den, der anmelder, fra processen, og fortæller, hvornår rettelsen kommer.