Yleistä höpinää
Javascript-projektien suurimmaksi ongelmaksi on vuosien saatossa muodustunut npm-riippuvuushelvetti, jonka seurauksena yksinkertaisetkin Javascript-projektit sisältävät satoja riippuvuuksia. Useimmissa tapauksissa kehittäjillä ei ole mitään käsitystä miten monimutkainen riippuvuusviidakko heillä on käsissään, ja yleensä ongelma huomataan siinä vaiheessa, kun joku haluaa listan kaikista niistä kolmansien osapuolien kirjastoista, joita projekti hyödyntää.
Riippuvuushelvetin sivutuotteena tuleva tietoturvaongelmat. Koska projektissa mukana olevat paketit saattavat vaatia jonkin toisen paketin tietyn version, on kehittäjien hankala pysyä kärryillä siitä, että kaikki projektissa mukana olevat paketit sisältävät varmasti viimeisimmät tietoturvapäivitykset. Viime vuonna npm sai onneksi uuden audit-toiminnallisuuden, jonka avulla omassa projetissa olevia riippuvuuksiin liittyviä tietoturvaongelmia voi etsiä ja korjata. Laiskoille ihmisille on olemassa myös toinen ratkaisu, ja se on GitHubin käyttäminen.
GitHub ja varoitussähköposti
Kun oma Javascript projekti on siirretty GitHubiin, liittyy se automaattisesti tietoturvaskannausalgotmin tarkistuslistalle ja palvelu huomauttaa kehittäjille sähköpostin muodossa, jos projektissa on haavoittuvuuksia sisältäviä paketteja. Tarkitus tapahtuu tässä tapauksessa versionhallintaan lisätyn package-lock.json
-tiedoston avulla, joten jos kyseinen tiedosto on jätetty ulos versionhallinnasta, ei varoituksia luonnollisesti tule.
Jos jostain paketista löytyy myöhemmin tietoturva-aukko, lähettää GitHub myös tässä tapauksessa sähköpostin kehittäjille.
Varoitussähköpostiin reakointi
Kun sähköpostissa olevan linkin avaa, johtaa se kyseisen projektin GitHubissa olevaan Security-osioon.
Security-osiosta löytyy lista projektin mahdollisista ongelmista. Ongelmiin voi tarvittaessa pureutua syvemmin tutkimalla esim. palvelun ehdottamia korjaustoimenpiteitä ja haavoittuvuuden vakavuutta. Ehdotettu korjaus saattaa paikata samalla kertaa useamman eri tietoturva-aukon, kuten alla olevasta kuvankaappauksesta käy ilmi.
Ehdotettuja korjauksia ei myöskään tarvitse tehdä itse omaan lokaaliin versioon, vaan GitHubista löytyvä Dependabot-botti osaa luoda sopivan pull requestin automaattisesti, jolloin sen voi hyväksyä saman tien mukaan selaimesta. Täten korjaukset saa otettua käyttöön projektiin suoraan vaikkapa matkapuhelimen selaimesta ilman komentorivin, tekstieditorin jne. käyttämistä.
Dependabotin tekemät pull requestit eivät näy oletuksena kaikille, vaan ainoastaan niille kehittäjille, joilla on pääsy GitHubissa olevan projektin tietoturvahuomautuksiin. Täten kehittäjät voivat rauhassa reakoida täysin julkisten projektien tietoturvaongelmiin, ja keskustella niistä niin etteivät nämä keskustelut näy muille tahoille. Kun sopiva korjaus on hyväksytty ja otettu käyttöön, voidaan käyty keskustelu tarvittaessa tuoda julki pull requestin hyväksymisen jälkeen.
🐛