Meer dan 800 npm-pakketten gevonden met discrepanties, waarvan 18 exploiteerbaar tot ‘manifeste verwarring’

Nieuw onderzoek heeft meer dan 800 pakketten in het npm-register ontdekt die verschillen vertonen met hun registervermeldingen, waarvan er 18 een techniek blijken te exploiteren die wordt genoemd verwarring manifesteren.

De bevindingen zijn afkomstig van cyberbeveiligingsbedrijf JFrog, dat zei dat het probleem door bedreigingsactoren zou kunnen worden uitgebuit om ontwikkelaars te misleiden om kwaadaardige code uit te voeren.

“Het is een daadwerkelijke bedreiging omdat ontwikkelaars kunnen worden misleid om pakketten te downloaden die er onschuldig uitzien, maar waarvan de verborgen afhankelijkheden in werkelijkheid kwaadaardig zijn”, vertelde beveiligingsonderzoeker Andrey Polkovnichenko aan The Hacker News.

Cyberbeveiliging

Kennelijke verwarring werd voor het eerst gedocumenteerd in juli 2023, toen beveiligingsonderzoeker Darcy Clarke ontdekte dat mismatches in manifest- en pakketmetadata als wapen konden worden gebruikt om aanvallen op de softwaretoevoerketen te organiseren.

Het probleem komt voort uit het feit dat het npm-register niet valideert of het manifestbestand in de tarball (package.json) overeenkomt met de manifestgegevens die tijdens het publicatieproces aan de npm-server worden verstrekt via een HTTP PUT-verzoek aan het pakket-URI-eindpunt.

Als gevolg hiervan zou een bedreigingsacteur kunnen profiteren van dit gebrek aan kruisverificatie door een ander manifest aan te bieden met verborgen afhankelijkheden dat wordt verwerkt tijdens de installatie van het pakket, om heimelijk kwaadaardige afhankelijkheden op het systeem van de ontwikkelaar te installeren.

“Het zichtbare of ‘nep’-manifest kan ontwikkelaars en zelfs audittools misleiden die afhankelijk zijn van de gegevens die beschikbaar zijn in de npm-registerdatabase”, aldus JFrog. “In werkelijkheid haalt het installatieprogramma het bestand package.json uit de tarball, die mogelijk verschilt van de zichtbare versie die wordt geleverd in het HTTP PUT-verzoek.”

Kennelijke verwarring

Het bedrijf zei dat het meer dan 800 pakketten heeft geïdentificeerd waarbij er een mismatch was tussen het manifest in het npm-register en het package.json-bestand in de tarball.

Hoewel veel van deze discrepanties het resultaat zijn van verschillen in protocolspecificaties of variaties in de scriptsectie van het pakketbestand, wordt gezegd dat 18 ervan zijn ontworpen om manifeste verwarring uit te buiten.

Een opmerkelijk pakket in kwestie is yatai-web-ui, dat is ontworpen om een ​​HTTP-verzoek naar een server te sturen met informatie over het IP-adres van de machine waarop het pakket is geïnstalleerd.

Cyberbeveiliging

De bevindingen tonen aan dat de aanvalsvector nooit door bedreigingsactoren lijkt te zijn gebruikt. Dat gezegd hebbende, is het van cruciaal belang dat ontwikkelaars stappen ondernemen om ervoor te zorgen dat de pakketten vrij zijn van verdacht gedrag.

“Aangezien dit probleem niet door npm is opgelost, kan het riskant zijn om pakketten alleen te vertrouwen op de manier waarop ze er op de website van npm uitzien”, aldus Polkovnichenko.

“Organisaties zouden procedures moeten introduceren die verifiëren dat alle pakketten die de organisatie binnenkomen of door hun ontwikkelteams worden gebruikt, veilig zijn en kunnen worden vertrouwd. Specifiek in het geval van duidelijke verwarring is het vereist dat elk pakket wordt geanalyseerd om te zien of er verborgen afhankelijkheden.”

Thijs Van der Does