Krytyczna podatność w protobuf.js zagraża tysiącom usług na Google Cloud i Firebase
Popularna biblioteka JavaScript protobuf.js, używana do pracy z formatem Protocol Buffers, zawiera krytyczną podatność umożliwiającą atakującym wykonanie dowolnego kodu na serwerze. Problem dotyczy milionów usług, szczególnie tych działających na Google Cloud i Firebase.
Jak działa atak
Podatność związana jest z mechanizmem przetwarzania plików schematów protobuf. Biblioteka generuje kod JavaScript na podstawie opisu danych i wykonuje go przez odpowiednik eval. Jeśli w nazwę typu lub pola schematu wstawi się złośliwy kod, zostanie on wykonany bez weryfikacji.
Atak nie wymaga skomplikowanych działań: wystarczy, że aplikacja załaduje podmieniony plik schematu z zewnętrznego źródła. Takie schematy często pochodzą z usług partnerskich, wspólnych repozytoriów lub przez gRPC-samoopis. Po załadowaniu jedna zwykła wiadomość aktywuje złośliwy kod.
Skala zagrożenia
- 52 miliony pobrań tygodniowo – tyle razy pobierany jest protobuf.js.
- Biblioteka często jest ukrytą zależnością, więc rzeczywista liczba podatnych projektów może być wyższa.
- Podatne są wersje do 8.0.0 i 7.5.4 włącznie.
- Podatność otrzymała identyfikator GHSA-xq3m-2v4x-88gg i ocenę 9,4 punktu w CVSS.
Co ważne
- Podatność umożliwia wykonanie kodu na serwerze bez uwierzytelniania.
- Atak jest możliwy, jeśli aplikacja ładuje schematy z zewnętrznych źródeł.
- Łaty zostały wydane w wersjach 8.0.1 i 7.5.5.
- Na razie nie odnotowano publicznych ataków, ale eksploatacja jest technicznie prosta.
- Szczególnie podatne są usługi na Google Cloud, Firebase oraz te używające gRPC.
Konsekwencje dla biznesu
Jeśli atakujący skompromituje jedno źródło schematów, będzie mógł:
- Uzyskać dostęp do tokenów i danych użytkowników.
- Wniknąć do wewnętrznych usług.
- Ukraść poufne informacje.
Biorąc pod uwagę popularność protobuf.js, atak może dotknąć tysiące firm. Deweloperzy muszą pilnie zaktualizować bibliotekę i sprawdzić wszystkie zależności, szczególnie te ładujące schematy z zewnętrznych źródeł.
Zalecenia
- Natychmiast zaktualizować protobuf.js do wersji 8.0.1 lub 7.5.5.
- Sprawdzić wszystkie projekty pod kątem ukrytych zależności od podatnych wersji.
- Przejrzeć miejsca, w których aplikacja ładuje pliki schematów z zewnętrznych źródeł.
- Rozważyć walidację schematów przed załadowaniem.
- Używać mechanizmów kontroli integralności dla ładowanych plików.
— Editorial Team
Brak komentarzy.