Udgivet version 1.0 af TUF-rammen (The Update Framework), der giver værktøjer til sikkert at kontrollere tilgængeligheden af og downloade opdateringer. Projektets hovedformål er at beskytte brugeren mod typiske angreb på lagre og infrastruktur, herunder modvirke distribution af falske opdateringer, der skabes efter adgang til nøgler for digital signatur eller kompromittering af lagret. Projektet udvikles under Linux Foundations vinger og anvendes til at forbedre sikkerheden ved levering af opdateringer i projekter som Docker, Fuchsia, Automotive Grade Linux, Bottlerocket og PyPI (verifikation af downloads og metadata i PyPI forventes snart). Koden til den referenceimplementering af TUF er skrevet i Python og distribueres under Apache 2.0-licensen.
Projektet udvikler en serie af biblioteker, filformater og værktøjer, der nemt kan integreres i eksisterende applikationsopdateringssystemer og sikrer beskyttelse i tilfælde af kompromittering af nøglerne hos softwareudviklerne. For at bruge TUF er det tilstrækkeligt at tilføje de nødvendige metadata til lagret og integrere de i TUF leverede procedurer til download og verifikation af filer i klientscoden.
TUF-rammen håndterer opgaverne vedrørende kontrol af opdateringernes tilgængelighed, download af opdateringer og verifikation af deres integritet. Systemet til installation af opdateringer overlapper ikke med de ekstra metadata, som TUF håndterer kontrol og download af. For integration med applikationer og opdateringssystemer tilbydes en lav-niveau API til adgang til metadata og implementering af en høj-niveau klients API, ngclient, der er klar til integration med applikationer.
Blandt de angreb, TUF kan modvirke, er der nævnt substitution af gamle versioner som opdateringer for at blokere reparationen af sårbarheder i software eller for at rulle brugeren tilbage til en gammel, sårbar version, samt fremme af skadelige opdateringer, der korrekt er signeret med en kompromitteret nøgle, udførelse af DoS-angreb på klienter, såsom at fylde disken med uendelige opdateringer.
Beskytelsen mod kompromittering af softwareleverandørens infrastruktur opnås ved at opretholde separate verificerbare optegnelser over tilstanden af et repository eller en applikation. De verificerbare TUF-metadata omfatter oplysninger om nøgler, som man kan stole på, kryptografiske hashes til vurdering af filernes integritet, yderligere digitale signaturer til bekræftelse af metadata, oplysninger om versionsnumre og data om optegnelsens levetid. De nøgler, der bruges til verifikation, har begrænset levetid og kræver konstant opdatering for at beskytte mod signaturdannelse med gamle nøgler.
Risikoen for kompromittering af hele systemet reduceres ved at anvende en model med adskilt tillid, hvor hver part er begrænset til det område, som de direkte er ansvarlige for. Systemet anvender en hierarki af roller med deres egne nøgler; f.eks. underskriver rolen for grundlaget nøglerne for roller, der er ansvarlige for metadata i repository, oplysninger om opdateringernes tidspunkt og de målrettede builds, mens rollen, der er ansvarlig for builds, underskriver roller, der er knyttet til bekræftelse af de leverede filer.

For at beskytte mod kompromittering af nøgler anvendes en mekanisme til hurtig tilbagekaldelse og udskiftning af nøgler. Hver enkelt nøgle koncentrerer kun minimumsbehovene for beføjelser, og for bekræftelsesoperationer kræves det, at flere nøgler anvendes (en lækage af en enkelt nøgle tillader ikke straks at angribe klienten, og for at kompromittere hele systemet skal nøglerne fra alle deltagere fanges). Klienten kan kun tage imod filer, der er oprettet senere end allerede modtagne filer, og data uploades kun i overensstemmelse med den størrelse, der er angivet i de verificerede metadata.
Den udgivne version TUF 1.0.0 tilbyder en fuldstændigt omskreven og stabiliseret referenceimplementering af TUF-specifikationen, som kan bruges som et klar eksempel, når man opretter egne implementeringer eller til integration i sine projekter. Den nye implementering indeholder væsentligt mindre kode (1400 linjer i stedet for 4700), er lettere at vedligeholde og kan let udvides, f.eks. ved behov for at tilføje support til specifikke netværksstakke, lagringssystemer eller krypteringsalgoritmer.
Kilde: opennet.ru
