OpenSSF frigiver npm’s bedste praksis for udviklere at tackle risici med open source-programmer

office, business, accountant-620822.jpg

Npm Best Practices Guide har til formål at hjælpe JavaScript- og TypeScript-udviklere med at reducere sikkerhedsrisiciene ved at bruge afhængigheder med open source.

Open Source Security Foundation (OpenSSF) har udgivet npm Best Practices Guide for at hjælpe JavaScript- og TypeScript-udviklere med at reducere de sikkerhedsrisici, der er forbundet med at bruge afhængigheder med åben kildekode. Vejledningen, et produkt fra OpenSSF Best Practices Working Group, fokuserer på afhængighedsstyring og forsyningskædesikkerhed for npm og dækker forskellige områder såsom hvordan man opretter en sikker CI-konfiguration, hvordan man undgår afhængighedsforvirring, og hvordan man begrænser konsekvenserne af en kapret afhængighed. Udgivelsen kommer, da udviklere i stigende grad deler og bruger afhængigheder, som, samtidig med at de bidrager til hurtigere udvikling og innovation, også kan introducere risici.

Afhængigheder med åben kildekode kan medføre betydelige sikkerhedsrisici

I et blogindlæg skrev OpenSSF-bidragydere, at selvom fordelene ved at bruge open source-afhængigheder ofte opvejer ulemperne, kan de påløbne risici være betydelige. “En simpel afhængighedsopdatering kan ødelægge et afhængigt projekt. Desuden, som ethvert andet stykke software, kan afhængigheder have sårbarheder eller blive kapret, hvilket påvirker de projekter, der bruger dem,” tilføjede de.

David A. Wheeler, direktør for open source supply chain security hos Linux Foundation, fortæller CSO, at den største sikkerhedsrisiko ved udvikleres brug af open source-afhængigheder undervurderer de virkninger, som sårbarheder i både direkte og indirekte afhængigheder kan have. “Fejl kan dukke op i enhver software, hvilket kan påvirke forsyningskæden, der bruger den, betydeligt, hvis der ikke udvises omhu. Alt for ofte er mange af afhængighederne usynlige, og hverken udviklere eller organisationer ser alle lagene til stakken. Løsningen er ikke at stoppe med at genbruge software; Løsningen er at genbruge software klogt og være parat til at opdatere komponenter, når der findes sårbarheder.”

Det kan dog være udfordrende at udvikle en effektiv afhængighedssikkerhedsstrategi, da det involverer et andet sæt problemer, end de fleste udviklere er bekendt med at løse, læste bloggen. Npm Best Practices-vejledningen er designet til at hjælpe udviklere og organisationer, der står over for sådanne problemer, så de kan forbruge afhængigheder mere trygt og sikkert. Den giver et overblik over sikkerhedselementer i forsyningskæden, der er tilgængelige i npm, beskriver de risici, der er forbundet med at bruge afhængigheder, og giver råd til reduktion af risici i forskellige projektfaser.

Afhængighedsstyringsnøgle til håndtering af risici med åben kildekode

Vejledningen fokuserer stort set på afhængighedsstyring og beskriver detaljerede trin, som udviklere kan tage for at hjælpe med at afbøde potentielle trusler. For eksempel er det første skridt til at bruge en afhængighed at studere dens oprindelse, troværdighed og sikkerhedsstilling, hedder det i vejledningen. Det råder udviklere til at holde øje med typosquatting-angreb, når en angriber opretter et officielt udseende pakkenavn for at narre brugere til at installere useriøse pakker ved at identificere pakkens GitHub-lager og vurdere dets troværdighed (antal bidragydere, stjerner osv.).

Når de identificerer et GitHub-projekt af interesse, skal udviklere identificere det tilsvarende pakkenavn og bruge OpenSSF Security Scorecards til at lære om afhængighedens aktuelle sikkerhedsstilling, tilføjer vejledningen. Udviklere bør også bruge deps.dev til at lære om sikkerhedsstillingen for transitive afhængigheder og npm-revision for at lære om eksisterende sårbarheder i projektets afhængigheder, vejledningen siger.

Reproducerbar installation kan sikre, at nøjagtige kopier af afhængigheder bruges hver gang en pakke installeres, hvilket giver sikkerhedsfordele, lyder vejledningen. Disse omfatter hurtig identifikation af potentielle netværkskompromitter, hvis en afhængighed har sårbarheder, afbødning af trusler såsom ondsindede afhængigheder og påvisning af pakkekorruptioner.

Udviklere bør også bruge en lockfile, som implementerer hash-fastgørelse ved hjælp af kryptografiske hashes, tilføjede guiden. “Hash-fastgørelse informerer pakkeadministratoren om den forventede hash for hver afhængighed uden at stole på registrene. Pakkehåndteringen kontrollerer derefter under hver installation, at hash for hver afhængighed forbliver den samme. Enhver ondsindet ændring af afhængigheden ville blive opdaget og afvist.”

Løbende vedligeholdelse af afhængigheder er også vigtig med periodiske opdateringer i overensstemmelse med afsløring og patching af nye sårbarheder nøgle. “For at administrere dine afhængigheder skal du bruge et værktøj som dependabot eller renovatebot. Disse værktøjer indsender fletteanmodninger, som du kan gennemgå og flette ind i standardgrenen,” stod der i vejledningen. For at fjerne afhængigheder skal udviklere med jævne mellemrum køre npm-prune og indsende en fletteanmodning, tilføjes det.

Vejledningen deler også sikkerhedsvejledning om pakkeudgivelse/-udgivelse og private pakker fra interne registre.

Kilde: CSO

Foto: Pexels