Kriittinen Log4shell-haavoittuvuus Apache Log4j -komponentissa
Laajasti käytetyssä Apache Log4j-komponentissa julkaistiin korjaus kriittiseen Log4shell-haavoittuvuuteen. Ylläpitäjien tulee päivittää Apache Log4j ripeästi uusimpaan versioon.
Päivitys 29.12.2021:
Kyberturvallisuuskeskus suosittelee päivitystä versioon log4j-2.17.1. Edellisissä versioissa, tietyllä tavoin konfiguroituna, on haavoittuvuus CVE-2021-44832, joka mahdollistaa mielivaltaisten komentojen suorittamisen etänä.
Päivitys 18.12.2021:
Kyberturvallisuuskeskus suosittelee päivitystä versioon log4j-2.17.0. Edellisissä versioissa, tietyllä tavoin konfiguroituna, on palvelunestohyökkäyksen mahdollistava haavoittuvuus CVE-2021-45105.
Päivitys 15.12.2021:
Kyberturvallisuuskeskus suosittelee päivitystä versioon log4j-2.16.0. Kattava lista eri sovellusten päivitystilanteesta löytyy NCSC-NL:n Githubista: https://github.com/NCSC-NL/log4shell/tree/main/software
Päivitys 14.12.2021:
Apache on julkaissut version log4j-2.16.0. Uudessa versiossa haavoittuva Message Lookups-toiminnallisuus on poistettu. Lisäksi JNDI, joka mahdollisti haittakoodin lataamisen ulkoiselta palvelimelta, on disabloitu
Alkuperäinen julkaisu 10.12.2021:
Tietoturvatutkijat löysivät nollapäivähaavoittuvuuden CVE-2021-44228 Apache Java logging library Log4j:ssä. Haavoittuvuuden avulla hyökkääjän on mahdollista suorittaa etänä mielivaltaisia komentoja sovelluspalvelimelle. On erittäin suositeltavaa päivittää Apache Log4j versioon log4j-2.15.0 mahdollisimman pian.
Log4j-komponentteja voi olla käytössä myös muissakin Javaan pohjautuvissa sovelluksissa, kuin Apache Struts-projekteissa.
Haavoittuvuuden hyväksikäytön mahdollistava esimerkkikoodi on jo julkaistu, joten päivityksillä on kiire. Haavoittuvuus koskee erityisesti organisaatioita ja toimia vaaditaan palvelinten ylläpitäjiltä. Haavoittuvuuden kautta hyökkääjä voi suorittaa haluamaansa Java-koodia Log4j-prosessin oikeuksilla.
Kyberturvallisuuskeskuksen tietojen mukaan Log4j-komponentti on laajasti käytössä Suomessa ja Log4shell-haavoittuvuutta pyritään hyväksikäyttämään aktiivisesti.
Ohjeita haavoittuvuuden löytämiseksi, päivitysten asentamiseksi ja haavoittuvuuden rajoittamikseksi
Sovellusversiosta 2.15.0 on julkaistu kaksi erillistä julkaisuversiota, joista vasta jälkimmäisessä (rc2) Log4shell-haavoittuvuus on korjattu.
Kyberturvallisuuskeskuksen tämänhetkisen tiedon mukaan Log4shell- haavoittuvuus ei koske Log4j versioita 1.X. Versiot 1.X ovat kuitenkin End-of-life (EOL) -tilassa, eikä tukemattoman sovelluksen käyttöä voi suositella. Kaikissa 1.x -versioissa on muun muassa korjaamaton haavoittuvuus CVE-2019-17571.
Omat sovellukset:
- Selvitä, missä kaikkialla Log4j on käytössä
- Tyypillisesti tieto Log4j-komponentin käytöstä löytyy Java-sovellusten pom.xml-tiedostoista
- Mikäli käytössä ei ole uusin versio (9.12.2021 jälkeen ladattu log4j- 2.15.0, eli log4j-2.15.0-rc2), päivitä Log4j uusimpaan versioon
- Huomioi päivityksestä koituvat mahdolliset ongelmat
Muut sovellukset:
- Seuraa sovellustoimittajan haavoittuvuustiedotteita
- Asenna päivitykset välittömästi
- Internetistä löytyy useita listoja siitä, mitä sovelluksia haavoittuvuus koskee ja mitä ei, tässä eräät kattavimmista: https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592 ja https://github.com/NCSC-NL/log4shell/tree/main/software
Haavoittuvuuden kohde
Apache Log4j-versiot 2.0-beta9 - 2.15.0-rc1.
Kyberturvallisuuskeskuksen tämänhetkisen tiedon mukaan Log4shell-haavoittuvuus ei koske Log4j versioita 1.X. Versiot 1.X ovat kuitenkin End-of-life (EOL) -tilassa, eikä tukemattoman sovelluksen käyttöä voi suositella. Kaikissa 1.x -versioissa on muun muassa korjaamaton haavoittuvuus CVE-2019-17571.
Mistä on kysymys?
Ensisijaisesti päivitä Apache Log4j versioon log4j-2.17.1.
Mikäli päivitys ei ole mahdollinen, haavoittuvuutta voidaan rajata seuraavilla toimenpiteillä. Huomioithan että toimenpiteet voivat rikkoa sovelluksen ominaisuuksia.
Log4j 2.10 ja uudemmat
Konfiguraatiomuutos log4j2.component.properties tiedostoon muutos:
"log4j2.formatMsgNoLookups" -> true
Ympäristömuuttujan (environment variable) käyttäminen:
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
Log4j 2.7 ja uudemmat
PatternLayout konfiguraatioon muutos:
Rivi ""'%m', '%msg' and '%message'"" tulee koravata rivillä "%m{nolookups}"
Log4j 2.0-beta9 ja uudemmat versioon 2.10 saakka:
Haavoittuvaisten Java-luokkien poisto (sisältää riskin sovelluksen toiminnalle):
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Lähteet:
- Checkpoint (ulkoinen linkki)
- Apache Log4j (ulkoinen linkki)
Voit tarkistaa seuraavasta linkistä (ulkoinen linkki) onko oma versiosi haavoittuva.