Kriittinen Log4shell-haavoittuvuus Apache Log4j -komponentissa

Haavoittuvuus38/2021

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 (Ulkoinen linkki)

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 (Ulkoinen linkki) ja https://github.com/NCSC-NL/log4shell/tree/main/software (Ulkoinen linkki)

Kohde

  • Palvelimet ja palvelinsovellukset

Hyökkäystapa

  • Etäkäyttö
  • Ilman käyttäjän toimia
  • Ilman kirjautumista

Vaikutukset

  • Komentojen mielivaltainen suorittaminen
  • Suojauksen ohittaminen
  • Käyttövaltuuksien laajentaminen
  • Tietojen muokkaaminen
  • Luottamuksellisen tiedon hankkiminen

Hyväksikäyttömenetelmä tiedossa

  • Rikollisessa käytössä
  • Haavoittuvuuden havainnollistava esimerkkikoodi

Ratkaisu

  • Korjaava ohjelmistopäivitys
  • Ongelman rajoittaminen

Haavoittuvat ohjelmistot

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.

Ratkaisu- ja rajoitusmahdollisuudet

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) (ulkoinen linkki)
- Apache Log4j (Ulkoinen linkki) (ulkoinen linkki)

Voit tarkistaa seuraavasta linkistä (Ulkoinen linkki) (ulkoinen linkki) onko oma versiosi haavoittuva.

Korjattu kirjasto komponentiksi. Täsmennetty versionumerointia. Apache on korjannut haavoittuvuuden versioon log4j-2.15.0 muuttamatta versionumeroa. Korjaus on tehty versionumerossa log4j-2.15.0-rc2 joka on julkaistu log4j-2.15.0 nimellä Apache Log4j:n sivustolla 9.12.2021.

Lisätty linkki Apachen haavoittuvuustiedotteeseen

Lisätty tieto ettei Log4shell-haavoittuvuus koske Log4j versioita 1.X.

Lisätty rajausohjeita

Lisätty linkki Microsoftin sivuille

Lisätty uutta tekstiä otsikon "Ohjeita haavoittuvuuden löytämiseksi, päivitysten asentamiseksi ja haavoittuvuuden rajoittamikseksi" alle.

Lisätty tieto uudesta Log4j versiosta.

Täsmennetty sanamuotoa listasta, jossa kerrotaan onko sovellus haavoittuvainen vai ei. Lisätty suositus 2.16.0 versioon päivittämiseksi. Lisätty NCSC-NL Github-repositoryyn linkki.

Lisätty suositus 2.17.0 versioon päivittämiseksi.

Lisätty suositus 2.17.1 versioon päivittämiseksi.