-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Krok od totalnego chaosu i masowych hacków aplikacji w Internecie. W NPM można było bez autoryzacji publikować nowe wersje dowolnego pakietu!

17 listopada 2021, 12:18 | W biegu | 0 komentarzy

Do tej pory opisywaliśmy scenariusze, gdy ktoś hackował konto developera jakiegoś popularnego pakietu (np. NPM), a następnie wypuszczał nową wersję (w której był malware). W ten sposób złośliwy kod dostawał się do projektów, które wykonywały aktualizacje pakietów.

Tutaj jednak NPM poinformował o znacznie gorszym problemie, który został zgłoszony do ich działu bezpieczeństwa:

Second, on November 2 we received a report to our security bug bounty program of a vulnerability that would allow an attacker to publish new versions of any npm package using an account without proper authorization. We quickly validated the report, began our incident response processes, and patched the vulnerability within six hours of receiving the report.

Tak, dobrze czytacie, atakujący mógł publikować nowe wersje pakietów, których nie był właścicielem!

Od strony nieco bardziej technicznej, NPM wyjaśnia całość tak (w skrócie: mieliśmy zwalony system związany ze sprawdzaniem uprawnień!)

We determined that this vulnerability was due to inconsistent authorization checks and validation of data across several microservices that handle requests to the npm registry. In this architecture, the authorization service was properly validating user authorization to packages based on data passed in request URL paths. However, the service that performs underlying updates to the registry data determined which package to publish based on the contents of the uploaded package file. This discrepancy provided an avenue by which requests to publish new versions of a package would be authorized for one package but would actually be performed for a different, and potentially unauthorized, package. We mitigated this issue by ensuring consistency across both the publishing service and authorization service to ensure that the same package is being used for both authorization and publishing.

Jak długo istniała podatność? Bardzo długo:

This vulnerability existed in the npm registry beyond the timeframe for which we have telemetry to determine whether it has ever been exploited maliciously.

Na koniec warto zwrócić uwagę, że problem zgłosiło dwóch Polaków: Kajetan Grzybowski (DrBrix) oraz Maciej Piechota (haqpl), a przyznane bug bounty to $50 000. Gratulacje :-)

~Michał Sajdak

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz