Kriittinen haavoittuvuus Spring-sovelluskehyksessä

Haavoittuvuus6/2022

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.

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

  • 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.

Ratkaisu- ja rajoitusmahdollisuudet

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.

Lisätty linkki Spring-projektin blogikirjoitukseen päivityksistä