Spring4Shell: krytyczna luka w frameworku Spring Java

Badacze odkryli krytyczną lukę w Spring, popularnym frameworku Java. Zobacz, jak działa, dlaczego jest niebezpieczna i jak zapewnić sobie bezpieczeństwo.

Badacze odkryli krytyczną lukę CVE-2022-22965 w szkielecie tworzenia aplikacji dla platformy Java Platform — Spring. Niestety, szczegóły dotyczące wspomnianej luki w zabezpieczeniach wyciekły przed opublikowaniem oficjalnego komunikatu i udostępnieniem stosownych łatek.

Luka natychmiast przyciągnęła uwagę specjalistów ds. bezpieczeństwa informacji, ponieważ może stanowić poważne zagrożenie dla wielu aplikacji internetowych. Nowa podatność została nazwana Spring4Shell, co nawiązuje do przereklamowanej luki Log4Shell.

Firma Vmware, będąca twórcą frameworka Spring, wydała już poprawki naprawiające podatne na ataki aplikacje, dlatego zalecamy, aby wszystkie firmy korzystające ze szkieletu Spring Framework w wersjach 5.3 i 5.2 natychmiast zaktualizowały je do wersji 5.3.18 lub 5.2.20.

Czym jest luka Spring4Shell i dlaczego stwarza duże zagrożenie?

Opisywana luka należy do klasy RCE, co oznacza, że umożliwia osobie atakującej zdalne wykonanie szkodliwego kodu. W klasyfikacji CVSS v3.0 został jej przypisany poziom zagrożenia 9,8 na 10. Błąd zagraża szkieletom Spring MVC i Spring WebFlux działającym w zestawie Java Development Kit w wersji 9 lub nowszej.

Badacze poinformowali o wykrytej luce w zabezpieczeniach firmę VMware we wtorek wieczorem (29 kwietnia 2022 r.), ale już w środę dowód koncepcji jej istnienia został opublikowany w serwisie GitHub. Dowód ten został szybko usunięty, jednak zdążyli go zauważyć eksperci ds. bezpieczeństwa (część z nich potwierdziła, że luka stwarza zagrożenie). W związku z tym istnieje bardzo małe prawdopodobieństwo, że tak potężnego exploita nie zauważyli cyberprzestępcy.

Framework Spring jest dość popularny wśród programistów korzystających z języka Java, a w związku z tym na ataki może być podatnych wiele aplikacji. Zgodnie z postem opublikowanym przez Bleeping Computer aplikacje napisane językiem programowania Java, które są podatne na lukę Spring4Shell, mogą ułatwić złamanie zabezpieczeń ogromnej liczby serwerów. Ponadto w artykule można także przeczytać, że luka jest już aktywnie wykorzystywana.

Warunki wykorzystania luki w zabezpieczeniach Spring4Shell

Aby doszło do wykorzystania luki Spring4Shell, musi zaistnieć szczególny zbieg okoliczności. Aby exploit zadziałał z sukcesem, ofiara musi korzystać z następujących komponentów:

  • oprogramowanie Java Development Kit w wersji 9 lub nowszej,
  • Apache Tomcat jako kontener serwletów,
  • format pliku WAR (Web Application Resource) zamiast domyślnego JAR,
  • zależność od spring-webmvc lub spring-webflux,
  • framework Spring w wersjach od 5.3.0 do 5.3.17, od 5.2.0 do 5.2.19 lub starszych.

Jednak całkiem możliwe jest, że istnieje jeszcze więcej nieznanych opcji i luka ta może zostać wykorzystana w inny sposób.

Więcej szczegółów technicznych oraz wskaźniki naruszenia bezpieczeństwa przez exploity Spring4Shell można znaleźć w poście na blogu w serwisie SecureList. Znajduje się w nim również opis innej krytycznej luki w zabezpieczeniach struktury Spring Java (CVE-2022-22963).

Jak zapewnić sobie bezpieczeństwo przed Spring4Shell?

Każda osoba, która korzysta z frameworka Spring, powinna uaktualnić go do bezpiecznej wersji — 5.3.18 lub 5.2.20.

Firma Apache Software Foundation wydała poprawione wersje kontenera aplikacji sieciowych Apache Tomcat 10.0.20, 9.0.62 i 8.5.78, w których wektor ataku jest zamknięty po stronie Tomcata.

Programiści odpowiedzialni za szkielet Spring wydali poprawione wersje rozszerzeń Spring Boot 2.5.12 i 2.6.6, które zależą od poprawionej wersji Spring Framework 5.3.18.

Jeśli z jakiegoś powodu zaktualizowanie powyższego oprogramowania nie jest możliwe, należy użyć jednego z sposobów obejścia opublikowanych na oficjalnej stronie Spring.

Aby zminimalizować ryzyko udanego ataku, radzimy chronić wszystkie serwery, a także wszelki inny sprzęt połączony z internetem, za pomocą zaufanego rozwiązania bezpieczeństwa. Jeśli korzystasz z produktów zabezpieczających marki Kaspersky, upewnij się, że moduły Zaawansowana ochrona przed exploitami i Blokowanie ataków sieciowych są włączone.

Porady