UNTRUSTEDCODE/etccredsnetSANDBOXno access outside

Sandboxing

10 min lukeaTurvallisuus

Sandboxing on suojausmalli, jonka avulla selaimesi käyttää JavaScriptiä mistä tahansa sivustosta, puhelimesi käyttää minkä tahansa kehittäjän sovelluksia ja kannettava tietokone avata sähköpostin liitetiedostoja – ilman, että kyseiset ohjelmat pystyvät lukemaan pankkitilitiedostoasi. Se on teknologiakerros, joka muutti epäluotettavan koodin haavoittuvuudesta ominaisuudeksi.

Artikkelin koko runko on englanniksi alla.

Sandboxing on käytäntö suorittaa koodia rajoitetussa ympäristössä, joka estää sitä käyttämästä resursseja sen rajojen ulkopuolella. Hiekkalaatikko rajoittaa, mitä tiedostoja se voi lukea, mitä verkkoyhteyksiä se voi muodostaa, minkä muiden prosessien kanssa se voi kommunikoida ja mitä järjestelmäkutsuja se voi kutsua. Jos koodi osoittautuu haitalliseksi tai bugiseksi, vaurio sisältyy.

Miksi hiekkalaatikolla on merkitystä

Nykyaikainen tietojenkäsittely riippuu käynnissä olevasta koodista, johon emme täysin luota:

  • JavaScript miltä tahansa verkkosivustolta, jolla selaimesi vierailee, mutta ei muodollisia sovelluksia
  • XPLZ1 vahvistettu)
  • Selainlaajennukset, IDE-laajennukset, koodisi riippuvuudet
  • Makrot asiakirjoissa, sähköpostiin liitetyt skriptit
  • Säilötyökuormitukset pilviinfrastruktuurissa

Jokainen hyökkäys näiden hiekkalaatikkoon tapahtua. Hiekkalaatikko mahdollistaa mallin toiminnan.

Kuinka hiekkalaatikot rakennetaan

Toteutustekniikat, kerroksittain:

  • Prosessin eristäminen. Jokainen välilehti nykyaikaisessa selaimessa on erillinen käyttöjärjestelmäprosessi. Selaimen ydin määrää, mitä prosessi saa tehdä.
  • seccomp-bpf Linuxissa – ytimen pakotettu suodatin, jonka järjestelmäkutsut prosessi voi tehdä. Hiekkalaatikko ilmoittaa tarvitsemansa syscall-pyynnöt (lue, kirjoittaa, mmap jne.) ja ydin hylkää kaiken muun.
  • Nimitilat ja ominaisuudet Linuxissa – yksittäisiä näkymiä tiedostojärjestelmästä, prosesseista, verkosta ja niin edelleen. Näistä primitiivisistä rakennetaan säilöjä.
  • App Sandbox macOS/iOS:ssä – deklaratiiviset käyttöoikeudet, jotka kuvaavat sovelluksen tarvitsemia ominaisuuksia (kameran käyttöoikeus, verkko, tietyt polut). Sovellukset, joilla ei ole oikeuksia, eivät voi käyttää näitä ominaisuuksia.
  • AppContainer / Windows Sandbox — Microsoftin vastaava eristysmalli.
  • Sivuston eristäminen Chromessa ja Firefox — erilliset prosessit alkuperää kohti, mikä estää jopa toisen sivuston explo-muistin lukemisen toisen sivuston ytimen. löytyi.

Selainhiekkalaatikot yksityiskohtaisesti

Selain on tietojenkäsittelyn julkisin ja hyökätyin hiekkalaatikko. Selainydin toimii luotettavana prosessina. Jokainen renderöintiprosessi – yksi tai useampi välilehteä kohden – toimii epäluotettavana prosessina, jolla on minimaaliset ominaisuudet. Renderöijä voi:

  • varata muistia
  • kommunikoida selainytimen kanssa IPC:n kautta erittäin erityisiä operaatioita varten.
  • Renderi grafiikkapuskuriin
  • Suorita JavaScript- ja WebAssembly- ja WebAssemblyX6PLZ56XXPLZ6 ei voi:

    • Avaa tiedostoja sen hiekkalaatikkohakemiston ulkopuolella miljoonia bugipalkkioita erityisesti sandbox-escape-haavoittuvuuksia varten. Chromen tuottoisin yksittäinen palkkio (yli 200 000 dollaria) menee täyteen ketjuun, joka pakenee hiekkalaatikosta.

      Mobiilisovellusten hiekkalaatikko

      iOS ja Android vievät hiekkalaatikon loogiseen ääripäähän: jokainen sovellus toimii omalla UID-tunnuksellaan, näkee oman kapean tiedostojärjestelmänäkymänsä, kommunikoi vain muiden IPC-sovellusten kautta ja (Intents Androidissa, URL-mallit ja AppExtensions iOS:ssä). Käyttöjärjestelmä pyytää käyttäjältä ominaisuustyylisiä käyttöoikeuksia (kamera, mikrofoni, yhteystiedot) suorituksen aikana. Tulos: puhelimen haittaohjelmat ovat paljon tiukemmin kuin työpöydällä.

      WebAssembly ja uusi sandbox

      WebAssembly suunniteltiin alusta alkaen niin, että hiekkalaatikko on ensiluokkainen omaisuus. WASM-moduulilla ei ole omia järjestelmäkutsuja; kaiken on tarjottava isäntäympäristöstä (WASI järjestelmäkutsutyyppisille API:ille, verkkosovellusliittymille selaimissa). Tämä tekee WASM:sta vahvan ehdokkaan epäluotettavien lisäosien ajamiseen luotetuissa sovelluksissa – käyttötapaus, joka edelsi raskasta prosessien eristämistä. Tätä mallia käyttävät työkalut, kuten wasmtime ja wasmer.

      Kun hiekkalaatikot epäonnistuvat

      Sandboxin pakohaavoittuvuudet ovat todellisia ja arvokkaita. Toistuvat vikatilat:

      • Bugit ytimen pinnassa. Jopa seccomp-rajoitetut prosessit voivat joskus hyödyntää ytimen bugeja, jotka saavutetaan sallituilla syscall-kutsuilla.
      • IPC-bugit. Hiekkalaatikon käyttämät rajapinnat kommunikoimaan välittäjäprosessin kanssaPLZXXPLZXX ovat itsessään hyökkäyspinta9PLXXX. kanavat. Spectre ja Meltdown osoittivat, että suorittimen optimoinnit voivat vuotaa tietoja prosessirajojen yli. Nykyaikaiset hiekkalaatikot lieventävät tätä, mutta taustalla oleva ongelma on edelleen laitteistotason huolenaihe.
      • Hiekkalaatikkoprofiilivirheet. Operaattorit löysäävät joskus hiekkalaatikkoprofiileja saadakseen ohjelmiston toimimaan ja avaavat vahingossa reikiä.

      Hiekkalaatikko on taattu, se nostaa puolustusta. Syväpuolustus yhdistää hiekkalaatikon muihin toimenpiteisiin (muistiturvalliset kielet, puhdistusaineet, hyökkäyspinnan vähentäminen).

      Mitä hiekkalaatikko tarkoittaa sinulle

      Loppukäyttäjille hiekkalaatikko on enimmäkseen näkymätön. Käytännön johtopäätös: pidä selaimet ja käyttöjärjestelmät ajan tasalla, koska hiekkalaatikon pakot ovat tärkeimmät tietoturvakorjaukset. Vältä hiekkalaatikkoominaisuuksien poistamista käytöstä (jotkut Linux-käyttäjät poistavat seccomp-profiilit käytöstä, jotkut tehokäyttäjät poistavat käytöstä Chromen hiekkalaatikkoliput), ellet ymmärrä seurauksia. Selaimet toimitetaan oletusarvoisesti karkaistuina; oletusarvo on oikea lähes kaikille käyttäjille.

Usein kysytyt kysymykset

Onko hiekkalaatikko sama asia kuin virtualisointi?
Ne menevät päällekkäin, mutta eivät ole identtisiä. Virtualisointi ajaa kokonaisia ​​käyttöjärjestelmiä emulaattorin sisällä; eristys on laitteisto-virtualisointitasolla. Sandboxing suorittaa yleensä prosesseja saman käyttöjärjestelmän sisällä ytimen pakottamilla rajoituksilla. Virtualisointi on raskaampaa, mutta tarjoaa vahvemman eristyksen; modernit mallit yhdistävät usein molemmat (Palvelimettomille Firecracker-virtuaalikoneille, konteille gVisor).
Hidastaako hiekkalaatikko asioita?
Pieni yleiskustannukset – tyypillisesti yksinumeroinen prosentti syscall-suodatukseen, hieman enemmän prosessin eristämiseen. Suorituskykykustannuksia on alennettu aktiivisesti laitteistotuen (Intel CET, ARM PAC) ansiosta, joten modernit hiekkalaatikot ovat käytännössä ilmaisia ​​useimmille työkuormille.
Voiko VPN paeta hiekkalaatikostaan?
VPN-asiakasohjelmistot tarvitsevat yleensä enemmän oikeuksia kuin hiekkalaatikkosovellukset – ne määrittävät reitityksen ja verkkoliitännät. MacOS- ja iOS-käyttöjärjestelmissä he käyttävät tiettyjä sovellusliittymiä (NetworkExtension framework) tehdäkseen tämän turvallisesti. VPN-asiakas itse on etuoikeutettu; sen läpi virtaava data on läpinäkymätöntä muille sovelluksille.
Onko koodin suorittaminen Docker-säiliössä sama asia kuin hiekkalaatikko?
Docker-säilöt käyttävät Linuxin nimiavaruuksia ja seccompia eristämiseen, mikä on eräänlaista hiekkalaatikkoa. Eristys on heikompi kuin virtualisointipohjaiset hiekkalaatikot (säilöt jakavat isäntäytimen) ja heikompi kuin käyttäjätilan hiekkalaatikot, jotka estävät useimmat syscall-kutsut (säilöt sallivat monia). Epäluotettaville työkuormille projektit, kuten gVisor tai Kata Containers, eristävät Docker UX:n ympärille vahvemman.
Miksi Chrome käyttää niin paljon muistia?
Sivuston eristäminen. Jokainen lähtökohta toimii omassa prosessissaan – 50 eri sivuston välilehteä tarkoittaa 50 prosessia, joista jokaisella on oma muisti. Hinta on RAM; etuna on, että yhden välilehden hyväksikäyttö ei voi lukea toisen välilehden tietoja (salasanat, istunnot). Nykyaikainen Chrome panostaa enemmän muistin jakamisen optimointiin vaikutusten vähentämiseksi, mutta arkkitehtuuri vaihtaa muistin turvallisuuteen.
Sandboxing selitys: Kuinka selaimet ja käyttöjärjestelmät sisältävät epäluotettavaa koodia