Kriittinen Log4shell-haavoittuvuus Apache Log4j -komponentissa | Traficom

Kriittinen Log4shell-haavoittuvuus Apache Log4j -komponentissa

10. joulukuuta 2021 klo 10.54, päivitetty 29. joulukuuta 2021 klo 15.02

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.

Palvelimet ja palvelinsovellukset

Palvelinten ja palvelinohjelmistojen haavoittuvuudet koskevat esimerkiksi sähköisten asiointipalvelujen tarjoajia. Tyypillisiä kohteita ovat palvelinten käyttöjärjestelmät ja www- tai sähköpostipalvelinohjelmistot kuten esimerkiksi SunOS, Linux, Apache, IIS tai Sendmail.

Etäkäyttö

Etäkäyttöisesti tehtävän hyökkäyksen voi tehdä tietoverkkoyhteyden tai vastaavan kautta ilman että pääsee itse kohteena olevan järjestelmän luokse.

Ilman käyttäjän toimia

Ilman käyttäjän toimia tapahtuva hyökkäys kohdistuu suoraan haavoittuvuuteen ilman että järjestelmän käyttäjältä vaaditaan mitään toimia hyökkäyksen onnistumiseksi. Käyttäjän ei esimerkiksi tarvitse selailla www-sivuja tai käynnistää ohjelmaa tietokoneessa, vaan hyökkäys onnistuu ilman käyttäjän apua.

Ilman kirjautumista

Hyökkäys ei vaadi kohteena olevaan järjestelmään kirjautumista. Vastakohtana ovat sellaiset hyökkäykset, jotka vaativat käyttäjätunnuksen ja salasanan käyttöä ja esimerkiksi komentojen suorittamista järjestelmään kirjautuneena.

Komentojen mielivaltainen suorittaminen

Komentojen mielivaltaisen suorittamisen mahdollistavaa haavoittuvuutta on pidettävä vakavana, sillä se tarkoittaa sitä, että hyväksikäyttäjä voi käyttää kohteena olevaa järjestelmää aivan kuin sen tavallinen käyttäjäkin. Se voi johtaa myös siihen, että järjestelmään murtautunut hyökkääjä voi ladata verkon kautta järjestelmään omia ohjelmiaan suoritettavaksi.

Suojauksen ohittaminen

Suojauksen ohittamisella tarkoitetaan sitä, että haavoittuvuutta hyväksikäyttämällä ohitetaan järjestelmän käytön rajoittamiseksi tehty suojaus esimerkiksi liikennöimällä palomuurin ohi suojattuun verkkoon.

Käyttövaltuuksien laajentaminen

Käyttövaltuuksien laajentaminen mahdollistaa järjestelmän käyttämisen esimerkiksi pääkäyttäjänä, tavallista käyttäjää laajemmin valtuuksin.

Tietojen muokkaaminen

Järjestelmään talletettujen tietojen muokkaaminen ei välttämättä edellytä komentojen suorittamista, käyttövaltuuksien laajentamista tai järjestelmään kirjautumista. Esimerkiksi käyttämällä hyväksi www-palvelinohjelmiston haavoittuvuutta voi hyökkääjä luvatta muuttaa palvelimella näkyvien verkkosivujen sisältöä.

Luottamuksellisen tiedon hankkiminen

Luottamuksellisten tietojen hankkiminen kohdejärjestelmästä edellyttää sitä, että sen tietosisältöä, esimerkiksi kiintolevylle talletettuja tiedostoja, pääsee lukemaan luvatta ja välittämään edelleen.

Rikollisessa käytössä

Haavoittuvuus on rikollisessa käytössä.

Haavoittuvuuden havainnollistava esimerkkikoodi

Proof of concept.

Korjaava ohjelmistopäivitys

Ohjelmisto- tai laitevalmistaja julkaisee tavallisesti pian uuden version tai osittaisen päivityksen ohjelmistoon tai käyttöjärjestelmään sen jälkeen kun haavoittuvuus on tullut julki. Päivitys voi olla saatavilla samalla kun haavoittuvuuskin julkaistaan, mutta usein sitä joudutaan odottelemaan jonkin aikaa.

Ongelman rajoittaminen

Vaikka varsinaista korjausta haavoittuvuuteen ei aina ole saatavilla, sen vaikutuksia voidaan useimmiten rajoittaa esimerkiksi pidättäytymällä tilapäisesti jonkin ominaisuuden käytöstä tai rajoittamalla verkkoliikennettä kohdejärjestelmään sopivasti.


10. joulukuuta 2021 klo 19.44 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.