In de afhankelijkheden van het npm-pakket met de PureScript-installateur kwaadwillige code, die naar voren komt bij de poging het pakket te installeren . De kwaadwillige code is ingebed via afhankelijkheden en . Opmerkelijk is dat de oorspronkelijke auteur van het npm-pakket met de PureScript-installateur verantwoordelijk was voor het onderhoud van deze afhankelijkheden, maar het pakket tegenwoordig door andere onderhouders wordt beheerd.
Het probleem werd ontdekt door een van de nieuwe maintainers van het pakket, aan wie de rechten voor het onderhoud werden overgedragen na veel onenigheid en onaangename discussies met de oorspronkelijke auteur van het npm-pakket purescript. De nieuwe maintainers zijn verantwoordelijk voor de PureScript-compiler en drongen erop aan dat het npm-pakket met de installateur door dezelfde onderhouders zou worden beheerd en niet door een derde partij. De auteur van het npm-pakket met de PureScript-installateur stemde na lange aarzeling uiteindelijk toe en droeg de toegang tot de repository over. Sommige afhankelijkheden bleven echter onder zijn beheer.
Afgelopen week werd de release van de PureScript-compiler 0.13.2 uitgebracht en
de nieuwe maintainers hebben een bijbehorende update van het npm-pakket met de installateur voorbereid, waarvan in de afhankelijkheden kwaadwillige code werd aangetroffen. De auteur van het npm-pakket met de installateur, die zijn functie verloor, verklaarde dat zijn account was gecompromitteerd door onbekende aanvallers. Desondanks waren de acties van de kwaadwillige code voorlopig beperkt tot het saboteren van de installatie van het pakket, dat de eerste versie van de nieuwe maintainers werd. De kwaadwillige activiteiten bestonden uit oneindige loops met foutmeldingen bij de poging om het pakket te installeren met het commando 'npm i -g purescript', zonder expliciete kwaadwillige activiteit.
Er werden twee aanvallen ontdekt. Enkele uren na de officiƫle release van de nieuwe versie van het npm-pakket purescript werd door iemand een nieuwe versie van de afhankelijkheid load-from-cwd-or-npm 3.0.2 aangemaakt, waarvan de wijzigingen ertoe leidden dat de aanroep van loadFromCwdOrNpm() in plaats van de lijst met benodigde binaire bestanden een stroom teruggaf , die de inkomende verzoeken als outputwaardes spiegelde.
Na 4 dagen, nadat de ontwikkelaars de oorzaak van de storingen hadden achterhaald en zich voorbereidden om een update uit te brengen om load-from-cwd-or-npm uit de afhankelijkheden te verwijderen, werd er door kwaadwillenden nog een update van load-from-cwd-or-npm 3.0.4 uitgebracht, waarin de kwaadaardige code was verwijderd. Echter, bijna onmiddellijk werd er een update van een andere afhankelijkheid, rate-map 1.0.3, uitgebracht, waarin een fix was toegevoegd die de callback-aanroep voor laden blokkeert. Met andere woorden, in beide gevallen waren de veranderingen in de nieuwe versies van load-from-cwd-or-npm en rate-map duidelijk sabotage. Bovendien was er in de kwaadaardige code een controle die de storingen alleen activeerde bij de installatie van de release van nieuwe onderhoudsprogramma's en zich niet manifesteerde bij de installatie van oudere versies.
De ontwikkelaars hebben het probleem opgelost door een update uit te brengen waarin de problematische afhankelijkheden zijn verwijderd. Om te voorkomen dat gecompromitteerde code op de systemen van gebruikers achterblijft na het proberen te installeren van de probleemversie, wordt aanbevolen om de inhoud van de mappen node_modules en de bestanden package-lock.json te verwijderen, en daarna de versie van purescript in te stellen op minimaal 0.13.2.
Bron: opennet.ru
