Sårbarhet i NPM som leder till överskrivning av filer på systemet

GitHub har avslöjat detaljer om sju sårbarheter i paketen tar och @npmcli/arborist, som tillhandahåller funktioner för att arbeta med tar-arkiv och beräkna beroendeträdet i Node.js. Sårbarheter gör det möjligt att vid uppackning av ett specialdesignat arkiv skriva över filer utanför rotkatalogen som uppackningen görs i, i den mån nuvarande åtkomsträttigheter tillåter. Problemen gör det möjligt att organisera exekveringen av godtycklig kod på systemet, till exempel genom att lägga till kommandon till ~/.bashrc eller ~/.profile när en operation utförs av en oprivilegierad användare, eller genom att ersätta systemfiler när de körs som rot.

Risken för sårbarheter förvärras av att den problematiska koden används i npm-pakethanteraren när man utför operationer med npm-paket, vilket gör det möjligt att organisera en attack mot användare genom att placera ett specialdesignat npm-paket i förvaret, bearbetningen varav kommer att köra angriparens kod på systemet. Attacken är möjlig även när du installerar paket i läget "-ignore-scripts", vilket inaktiverar exekvering av inbyggda skript. Totalt påverkar npm fyra sårbarheter (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 och CVE-2021-39135) av sju. De två första problemen gäller tjärpaketet, och de återstående två gäller @npmcli/arborist-paketet.

Den farligaste sårbarheten, CVE-2021-32804, orsakas av det faktum att när man rensar absoluta sökvägar som anges i ett tar-arkiv, behandlas upprepade "/"-tecken felaktigt – bara det första tecknet tas bort, medan resten finns kvar. Till exempel kommer sökvägen "/home/user/.bashrc" att konverteras till "home/user/.bashrc" och sökvägen "//home/user/.bashrc" till "/home/user/.bashrc". Den andra sårbarheten, CVE-2021-37713, visas endast på Windows-plattformen och är associerad med felaktig rengöring av relativa sökvägar som inkluderar ett oavgränsat enhetstecken (“C:some\path”) och en sekvens för att återgå till föregående katalog ( "C:../foo") .

Sårbarheter CVE-2021-39134 och CVE-2021-39135 är specifika för @npmcli/arborist-modulen. Det första problemet uppstår endast på system som inte särskiljer fallet med tecken i filsystemet (macOS och Windows), och låter dig skriva filer till en godtycklig del av filsystemet genom att ange två moduler "foo" bland beroenden : "file:/some/path"' och ' FOO: "file:foo.tgz"', vars bearbetning kommer att leda till att innehållet i /some/path-katalogen raderas och innehållet i foo.tgz skrivs till den. Det andra problemet gör att filer kan skrivas över genom symbolisk länkmanipulation.

Sårbarheterna är lösta i Node.js-utgåvorna 12.22.6 och 14.17.6, npm CLI 6.14.15 och 7.21.0, och individuella tar-paketutgåvor 4.4.19, 5.0.11 och 6.1.10. Efter att ha fått information om problemet som en del av initiativet "bug bounty", betalade GitHub forskarna $14500 XNUMX och skannade innehållet i förvaret, vilket inte avslöjade försök att utnyttja sårbarheter. För att skydda mot dessa problem har GitHub också förbjudit publicering av NPM-paket som inkluderar symboliska länkar, hårda länkar och absoluta sökvägar till förvaret.

Källa: opennet.ru

Lägg en kommentar