Experiment met het maken van een NPM-pakket dat afhankelijk is van alle pakketten in de repository

Een van de ontwikkelaars van JavaScript-pakketten heeft een experiment uitgevoerd met het creƫren en plaatsen in de NPM-repository van het pakket "everything", dat afhankelijkheden bevat van alle bestaande pakketten in de repository. Voor de realisatie van deze mogelijkheid is het pakket "everything" direct afhankelijk van vijf pakketten "@everything-registry/chunk-N", die op hun beurt weer afhankelijkheden hebben van meer dan 3000 pakketten "sub-chunk-N", waarbij elk van deze pakketten afhankelijk is van 800 bestaande pakketten in de repository.

De plaatsing van "everything" in NPM leidde tot twee interessante effecten. Ten eerste werd het pakket "everything" een soort instrument voor het uitvoeren van DoS-aanvallen, aangezien het proberen te installeren leidt tot het downloaden van miljoenen in NPM gehoste pakketten en het opmaken van de beschikbare schijfruimte of het stopzetten van bouwprocessen. Volgens statistieken werd het NPM-pakket ongeveer 250 keer gedownload, maar niemand weerhield iemand ervan het aan de afhankelijkheden van een ander pakket toe te voegen na het hacken van de ontwikkelaarsaccount voor het uitvoeren van sabotage. Bovendien werden sommige diensten en tools die nieuwe pakketten die in NPM worden geplaatst, monitoren en controleren, ongewild door deze aanval getroffen.

Ten tweede blokkeerde de publicatie van het pakket "everything" feitelijk de mogelijkheid om enige pakketten in NPM te verwijderen die zich in de lijst met afhankelijkheden ervan bevonden. Een pakket kan alleen door de auteur uit NPM worden verwijderd als het nog niet wordt gebruikt in de afhankelijkheden van andere pakketten, maar na de publicatie van "everything" waren alle pakketten in de repository gedekt door afhankelijkheden. Opmerkelijk is dat ook het verwijderen van het pakket "everything" geblokkeerd bleek, omdat negen jaar geleden een testpakket "everything-else" in de repository was geplaatst, waarin "everything" werd vermeld in de lijst met afhankelijkheden. Op deze manier kwam het pakket "everything" na publicatie in de afhankelijkheden van een ander pakket terecht.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster