Kriittinen haavoittuvuus Spring-sovelluskehyksessä | Traficom

Kriittinen haavoittuvuus Spring-sovelluskehyksessä

31. maaliskuuta 2022 klo 12.38, päivitetty 31. maaliskuuta 2022 klo 14.51

Spring-kehyksen ytimestä on löydetty kriittinen haavoittuvuus, joka voi mahdollistaa hyökkääjän oman ohjelmakoodin suorittamisen kohdejärjestelmässä.

Spring on Java-ohjelmointikielellä toteutettu sovelluskehys, jota käytetään yleisesti verkkosivustojen ja sivustopohjaisten palveluiden luomiseen.

Haavoittuvuus liittyy Spring-kirjaston suosittuun DataBinder-toiminnallisuuteen, jossa käyttäjän antamat parametrit muokataan automaattisesti Java-olioksi helppoa jatkokäyttöä varten. Muokkauksen toteutuksessa on yritetty estää riskialttiita operaatioita estolistan avulla. Estolistaa ei kuitenkaan oltu päivitetty Javan version 9 tuomien uusien ominaisuuksien osalta. Tämän vuoksi tuoreilla Java-versioilla toteutetut Spring-sovellukset voivat olla haavoittuvia.

Haavoittuvuudelle ei ole vielä annettu CVE-numeroa. Spring-kirjastosta Spring Cloud Function on lisäksi äskettäin löydetty haavoittuvuus CVE-2022-22963. Julkisessa keskustelussa nämä kaksi haavoittuvuutta on usein sekoitettu keskenään.

Haavoittuvuuden kohde

  • Spring Core, aikaisemmat versiot kuin 5.3.18 tai 5.2.20

Järjestelmät, joissa on käytössä Java-versio 9 tai sitä uudempi, ovat haavoittuvia.

Mistä on kysymys?

DataBinder-toiminnallisuutta käyttävien Spring-sovellusten haavoittuvuutta voi rajoittaa joko poistamalla kenttiä pois käytöstä (setDisallowedFields) tai määrittämällä listan sallituista kentistä (setAllowedFields). Lisätietoja-osion artikkeleissa on listattu tähän tarkempia ohjeita.

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.


31. maaliskuuta 2022 klo 14.51 Lisätty linkki Spring-projektin blogikirjoitukseen päivityksistä