Antti Haapala

Antti Haapala

29.3.2021

Blobeja ja bucketteja koko kansalle - Azuren ja Amazonin tiedostovaraintojen riskit

Tietoturva on aina tasapainoilua käytön helppouden ja turvallisuuden välillä. Yksinkertaisuus lisää usein käytettävyyttä mutta vähentää turvallisuutta, ja tämä on totta modernien pilvipalveluiden ja erityisesti datan tallentamisen kanssa. Azure Blob Storage ja Amazon S3 Buckets ovatkin helppoja ja nopeita ratkaisuja tarjota datavarastoa niin verkkopalveluille, resursseille kuin työpöydän jatkoksi.

Molemmat verkkoresurssialustat tarjoavat skaalautuvaa, nopeasti laajennettavaa ja helposti saatavilla olevaa tallennustilaa oikeastaan mille tahansa dokumenteille. Etätyön ja jaetun tiedostohallinnan yleistyessä myös tarve helpoille verkkoresursseille kasvaa jatkuvasti. Käsittelen tässä kirjoituksessa ensisijaisesti Azuren Blob Storagea, mutta sama käytäntö ja lainalaisuudet pätevät myös Amazonin puolella.

Missä vika?

Avoin, ilman pääsynhallintaa toteutettu mutta "piilotettu" tietovarasto vaikuttaa houkuttelevalta tavalta järjestää resursseja helposti saataville. Piilotettu storage container ei näy internettiin eikä sen sisältö indeksoidu hakukoneisiin, eli tiedostoihin pääsee käsiksi vain suorien linkkien kautta.

Ikävä kyllä tämä ratkaisu mahdollistaa hyökkääjälle sisällön troolaamisen muutaman kutsun tai työkalun avulla. Lisäksi linkit tiedostoihin julkisilta verkkosivuilta indeksoituvat hakukoneisiin, joten jos yksikään linkki on jätetty avoimesti saataville saa hyökkääjä koko kyseisen säilön sisällön käsiinsä muutaman API-kutsun avulla. Mikäli myös itse tietosäilö (Azure Blob tai Amazon Bucket) on avoinna luettavaksi, kuka tahansa voi helposti poimia koko sisällön talteen.

Nykyään suurin osa on jo vähintään kuullut shodan.io:sta (palvelu, joka paljastaa avoimia IoT-laitteita julki-internetistä), mutta samanlaisia palveluita löytyy myös verkkoresursseille. Grayhatwarfare-sivusto¹ oli tammikuussa 2021 indeksoinut yli miljardi tiedostoa avoimista Azure Blobeista ja AWS Bucketeista, ja listat ovat kenen tahansa katseltavissa.

Olenko pulassa?

Jos huoli heräsi, kannattaa oma tilanne tarkistaa: se on onneksi suhteellisen helppoa. Esimerkiksi yllä mainittu Grayhatwarfare tarjoaa jo perustason näkyvyyttä, ja jos omat assetit näkyvät listalla kannattaa ryhtyä saman tien toimiin. Jos haluaa olla tarkempi, voi tilanteen tarkistaa manuaalisesti, tai ottaa esimerkiksi badrap.io:n² palvelu käyttöön.

Tilanteen manuaalinen tarkistaminen on myös ainakin Azuressa helppoa. Ajamalla komentoriviltä seuraavan loitsun saat Azuren puolelta suoraan listauksen avoimista resursseista, jotka löytyvät julki-internetistä (korvaa capsilla kirjoitetu osiot teidän ympäristönne muuttujilla):

curl https://OMASTORAGEACCOUNT.blob.core.windows.net/OMACONTAINER\?restype\=container\&comp\=list

Mikäli lista on tyhjä, ei kyseinen container huuda avoimeen internettiin, mutta jos komentorivi printtasi juuri rivikaupalla tekstiä, voi domainin ja containerin nimen tietävä toimija myös poimia tiedostot talteen.

Mikä avuksi?

Jos juuri äsken selvisi, että tiedostot ovat auki ulkopuolisille, ei hätää ja jäitä hattuun. Mikäli tuntuu, että nyt ollaan jo syvissä vesissä, yllä mainittu badrap.io auttaa myös suojautumaan. Oikeana ratkaisuna kannattaa kuitenkin käydä kääntämässä omat resurssit siten, että niihin ei pääse ilman tunnistautumista käsiksi.

Amazon antaa S3 Bucketien turvaamiseen suoran ohjeen³, jota noudattamalla pääsee pitkälle. Myös Azurelta löytyy kattava dokumentaatio Blob Storagesta⁴, mutta sieltä ei aivan yhtä yksinkertaisesti löydy suojaamisohjetta. Alla olevalla ohjeella saa kuitenkin vähintään avoimet resurssit pois roikkumasta internetistä.

Uuden Azure-containerin luonti

Containereilla on asetus "Public access level", joka määrittää kuka ja miten niihin pääsee käsiksi. Container-taso tarkoittaa että sekä varasto että sen sisältö ovat löydettävissä, Blob-taso taas että varastoa ei voi nähdä mutta suoran linkin saatuaan pääsee käsiksi tiedostoon (ja halutessaan myös muihin tiedostoihin). Ainoa sisällön turvaava valinta on Private, joka asettaa rajoitukset siten, että vain tunnistautunut käyttäjä voi nähdä tai ladata resursseja.

Containerin pääsyasetukset

Jos käytössä on resursseja, jotka täytyy pitää saatavilla (esimerkiksi ladattavia esitteitä, kaavakkeita tai lomakkeita), nämä kannattaa pitää omassa varainnossaan, erillisessä Blob Storagessa tai Bucketissa johon on tarvittaessa avoin pääsy. Kaikki sellainen sisältö, jota ei erikseen tarvitse saattaa julkisesti saataville, kannattaa pitää yksityisissä, suojatuissa säilöissä. Tämä vaatii toki pääsynhallintaa ja käytettävyysratkaisuja sen osalta, että tiedostot ovat vielä niitä tarvitsevien saatavilla, mutta hyvin toteutettu pääsyhallinta on paljon helpompaa ja halvempaa ratkaista kuin mahdollinen tietomurto.

Pitäkää resurssinne turvassa, ja jos tarvitsette apua (vaikka sitten Blob Storagen turvaamiseen tai pääsynhallinnan järjestelyyn) meihin saa aina olla yhteydessä.

Linkit

  1. https://grayhatwarfare.com
  2. https://badrap.io
  3. Amazon-dokumentaatio S3-resurssien turvaamiseen
  4. Azure Blob Storagen dokumentaatio