Etusivu: Kyberturvallisuuskeskus
Etusivu: Kyberturvallisuuskeskus
Valikko

Zip Slip: haavoittuvuus tiedostonpakkaukseen käytetyissä ohjelmointikirjastoissa

Haavoittuvuus12/2018

Useissa tiedostojen pakkaamiseen ja arkistointiin tarkoitetuissa ohjelmointikirjastoissa ja esimerkkikoodeissa on haavoittuvuus, joka sallii tiedostojen kirjoittamisen yllättäviin hakemistoihin hyökkääjän laatimaa tiedostopakettia purettaessa. Haavoittuvuutta ei ole havaittu itsenäisissä tiedostonpakkausohjelmistoista kuten WinZip tai gzip. Pakattujen tiedostojen käsittelyyn pystyvien sovellusten käyttäjiä kehotetaan päivittämään sovellukset. Sovellusten kehittäjiä kehotetaan tarkastamaan ohjelmakoodinsa haavoittuvuuden varalta.

Zip Slip tarkoittaa haavoittuvuutta, jossa tiedostopakettia käsittelevä ohjelmistokoodi hyväksyy pakettiin kirjoitetut suhteelliset hakemistopolut tarkastamatta niiden turvallisuutta. Haavoittuvuus voi ilmetä useissa tiedostomuodoissa.

Hyökkääjä voi laatia tiedostopaketin, jossa jonkin tiedoston polku on esimerkiksi "../../../../../etc/passwd". Hyökkääjä voi saada haavoittuvan ohjelmakoodin purkamaan tiedostopaketin esimerkiksi jos hyökkäyksen kohteena olevalla verkkosivustolla on toiminto tiedostopakettien vastaanottamiseen.

Haavoittuva ohjelmistokoodi yrittää purkaa paketista tiedostot hyökkääjän kertomiin sijainteihin, vaikka ne sijaitsisivat nykyisen työhakemiston tai sen alla olevan hakemistopuun ulkopuolella. Jos tiedostopakettia purkavalla prosessilla on kirjoitusoikeus hyökkääjän osoittamaan tiedostoon paikallisessa tiedostojärjestelmässä, haavoittuva ohjelmisto kirjoittaa hyökkääjän antaman sisällön siihen mitään kyselemättä. Näin hyökkääjä voi saada omia turvattomia konfiguraatiotietoja tai ohjelmakoodia hyökkäyksen kohteena olevaan tietokoneeseen. Näin hyökkääjä voi pahimmillaan ottaa tietokoneen täyteen hallintaansa.

Kyse on siis klassisen hakemistopuun läpikulkuun (directory traversal) liittyvän haavoittuvuuden ilmentymästä. Zip Slip -haavoittuvuus esiintyy useissa laajasti käytetyissä ohjelmointikirjastoissa ja julkisesti jaetuissa ohjelmakoodiesimerkeissä ja vaikuttaa sitä kautta tuhansiin ohjelmistoihin.

Haavoittuvuuden löysi ja sen julkaisua koordinoi ohjelmistojen tietoturvaan keskittyvä yritys Snyk. Haavoittuvuus tuli julki 5.6.2018

Kohde

  • Työasemat ja loppukäyttäjäsovellukset
  • Sulautetut järjestelmät
  • Palvelimet ja palvelinsovellukset

Hyökkäystapa

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

Vaikutukset

  • Palvelunestohyökkäys
  • Komentojen mielivaltainen suorittaminen
  • Käyttövaltuuksien laajentaminen
  • Tietojen muokkaaminen

Ratkaisu

  • Korjaava ohjelmistopäivitys
  • Ongelman rajoittaminen
  • Ei päivitystä

Haavoittuvuuden kohde

Haavoittuvuuden hyväksikäyttö voi ilmetä useissa eri tiedostopakettien tiedostomuodoissa, kuten zip, tar, jar, war, cpio, apk, rar ja 7z. Erittäin monet ohjelmistot käsittelevät tiedostopaketteja ja niiden kaikkien luetteleminen tässä ei ole tarkoituksenmukaista.

Snyk pitää yllä listaa haavoittuviksi tunnetuista ohjelmointikirjastoista ja niitä käyttävistä ohjelmistoista (Ulkoinen linkki) sekä niihin saatavilla olevista korjaavista päivityksistä. Haavoittuvuus on levinnyt ilmeisen laajalle ja tilannekuva sen levinneisyydestä täydentyy koko ajan. Tuore tilanne kannattaa tarkastaa Snykin listasta.

Mistä on kysymys?

Ohjelmistojen käyttäjät ja verkkopalveluiden ylläpitäjät:

 

  • Tarkasta Snykin ylläpitämästä listasta, ovatko käyttämäsi ohjelmistot haavoittuviksi tunnettuja tai hyödyntävätkö käyttämäsi ohjelmistot haavoittuvia kirjastoja. Jos ohjelmisto on tunnettu haavoittuvaksi:
    • Jos päivitys on saatavilla, päivitä ohjelmisto.
    • Jos päivitystä ei ole saatavilla, ongelmaa voi rajoittaa estämällä epäluotettavista lähteistä tulevien tiedostopakettien käsittely. Tutustu ohjelmiston käyttöohjeisiin.

 

Ohjelmistojen kehittäjät:

 

  • Tarkasta, käyttääkö ohjelmistosi Snykin ylläpitämästä listassa mainittuja haavoittuvia kirjastoja. Jos käyttää:
    • Jos kirjastoon on saatavilla päivitys, käännä ohjelmistosi käyttämään korjattua kirjastoa ja julkaise ohjelmistostasi päivitys.
    • Jos kirjastoon ei ole saatavilla päivitystä, tarkasta, voisitko kääntää ohjelmistosi käyttämään muuta korjattua kirjastoa.
  • Tarkasta, onko ohjelmistossasi haavoittuvia ohjelmointirakenteita. Snykin julkaisemassa haavoittuvuustiedotteessa on esimerkkejä haavoittuvista rakenteista useilla ohjelmointikielillä. Korjaa ohjelmistosi ja julkaise siitä päivitys.

Mitä voin tehdä?

Alkuperäinen haavoittuvuustiedote julkaistu 7.6.2018