Foto: GitHub
GitHub je objavio nove kontrole za npm kako bi pojačao sigurnost lanca opskrbe softverom. Najvažnija promjena je staged publishing, koji je sada općenito dostupan na npm-u i maintainerima daje mogućnost da izričito odobre izdanje prije nego što paket postane javno dostupan za instalaciju.
Prema GitHubu, staged publishing zahtijeva da ljudski maintainer prođe dvofaktorsku autentifikaciju (2FA) kako bi odobrio paket prije nego što se pošalje na npmjs[.]com. Umjesto izravnog objavljivanja, koje odmah čini novu verziju dostupnom korisnicima, unaprijed pripremljeni tarball prenosi se u staging red, gdje ga maintainer mora posebno odobriti prije nego što postane instalabilan. GitHub navodi i da taj pristup osigurava „proof of presence” za svako objavljivanje, uključujući i ona koja dolaze iz neinteraktivnih CI/CD workflowa te iz trusted publishinga s OpenID Connectom (OIDC) autentifikacijom.
Prije korištenja staged publishinga maintaineri moraju ispuniti određene uvjete, a za slanje paketa koristi se naredba „npm stage publish” iz korijenskog direktorija paketa. Za tu je naredbu potrebno ažurirati npm CLI na verziju 11.15.0 ili noviju. GitHub pritom preporučuje da se staged publishing kombinira s trusted publishingom putem OIDC-a kako bi se dobila jača zaštita procesa objave.
Druga novost odnosi se na npm-ove instalacijske izvore. Uz postojeći flag „-allow-git” uvedena su još tri nova install source flaga, a GitHub kaže da oni omogućuju primjenu istog pristupa eksplicitne allowliste na svaki izvor instalacije koji nije registry. Time se proširuje kontrola nad time odakle se paketi mogu povlačiti tijekom instalacije.
Ove izmjene dolaze u trenutku kada su napadi na lanac opskrbe softverom snažno porasli u otvorenim ekosustavima tijekom posljednjih mjeseci. U istom kontekstu navodi se i da je cyberkriminalna skupina TeamPCP sudjelovala u trovanju popularnih paketa na dosad neviđenoj razini, i to kroz samoodrživi ciklus kompromitacija. GitHubov potez tako smješta npm među platforme koje pokušavaju uvesti dodatne provjere prije objave i instalacije paketa, ali bez promjene samog modela objavljivanja softvera.