Prije nekoliko dana Google je najavio otvaranje Sandboxed API projektaque Omogućava vam automatizaciju procesa stvaranja pješčanika za izolirano izvršavanje proizvoljnih knjižnica u C i C ++.
Izoliranje vašeg koda iz biblioteka omogućava zaštitu od mogućih napada na ručke koje pružaju biblioteke, stvarajući dodatnu prepreku u slučaju da u vašem kodu postoje ranjivosti koje se mogu iskoristiti kroz manipulacije s vanjskim podacima koji ulaze u knjižnicu. Kôd je otvoren pod licencom Apache 2.0.
Izolacijaili se obavlja pomoću Sandbox2 runtime, u kojem se koriste imenski prostori, cgroups i seccomp-bpf.
Kôd isporučen u zaštićenom okruženju koji se izvodi u odvojenom procesu, za koji postoji pristup sistemskim pozivima i resursima, kao i datoteke i mrežne veze, je ograničen.
Procesi dobivaju pristup samo sistemskim mogućnostima koje su izravno potrebne za izvršavanje izoliranog koda.
Sandbox2 definira komponente za pokretanje procesaili, primijeniti pravila izolacije i podržati naknadno izvršenje.
sandbox2 može se koristiti odvojeno od Sandbox API-ja za izolaciju ne samo biblioteka, već i proizvoljnih procesa.
Pored povećane zaštite, pozitivna poanta u uklanjanju koda u odvojenim procesima je i mogućnost zasebne regulacije ograničenja potrošnje memorije biblioteke i CPU-a, kao i zaštita od kvarova: kvar u biblioteka ne uzrokuje pad cijele aplikacije.
O Sandboxed API-ju
Sandboxed API je dodatak za Sandbox2 što pojednostavljuje transport postojećih biblioteka da se izvodi u izoliranom načinu.
API sandboxing pruža srednje softversko sučelje koje vam omogućava pokretanje koda biblioteke u okruženju sa zaštićenim okruženjemkao i organiziranje poziva biblioteci u okruženju pješčanika i osiguravanje isporuke rezultata biblioteke glavnom programu.
Se pristupa izoliranoj biblioteci kroz specijalizirani RPC zasnovan na protoBuffs protokolu.
A programerima biblioteka nudi se niz opcija koje omogućavaju pristup varijablama, deskriptori datoteka, međuspremnici i funkcije knjižnice izolirane od osnovne aplikacije, uključujući alate za automatsku i kontroliranu sinhronizaciju memorije za dijeljenje nizova i struktura.
Kada je softverska biblioteka koja analizira takve podatke dovoljno složena, može postati žrtvom određenih vrsta sigurnosnih ranjivosti: grešaka u oštećenju memorije ili drugih vrsta problema povezanih s logikom analize (na primjer, problemi s prelaskom puta). Te ranjivosti mogu imati ozbiljne sigurnosne implikacije.
Takođe, Predviđen je API za praćenje rada izoliranih procesa i njihovo ponovno pokretanje u slučaju kvarova.
Za izoliranu biblioteku, kod napomena izoliranih funkcija automatski se generira za sistem sklopa Bazel i programsko sučelje (SAPI) za interakciju između osnovnih i izoliranih procesa.
Programer također mora stvoriti datoteku zaglavlja s pravilima izolacije koja definiraju sve dozvoljene sistemske pozive i operacije (čitanje, pisanje, otvaranje datoteka, pristup vremenu, mogućnost instaliranja obrađivača signala, podrška za dodjelu memorije putem malloc-a, itd.).
Datoteke i direktoriji kojima bi biblioteka trebala imati pristup određuju se odvojeno.
Instalacija
Trenutno je projekt dostupan samo za Linux, ali u budućnosti obećavaju dodati podršku za macOS i BSD sisteme, a dugoročno i za Windows. Da ako želite instalirati zaštićeni api, možete slijediti dane upute na ovom linku.
Od planova se takođe napominje mogućnost izolacije biblioteka na jezicima koji nisu C i C ++, dodatna runtime podrška za izolaciju (npr. zasnovano na hardverskoj virtualizaciji) i mogućnost korištenja CMake-a i drugih sistema montaže (podrška je sada ograničena na Bazel sistem gradnje).
Izvor: https://security.googleblog.com