Nagbukas ang Google ng isang system upang lumikha ng mga kapaligiran sa sandbox para sa C / C ++

Google

Ilang araw na nakalipas Inanunsyo ng Google ang pagbubukas ng proyekto ng Sandboxed APINa Pinapayagan kang i-automate ang proseso ng paglikha ng sandbox para sa nakahiwalay na pagpapatupad ng di-makatwirang mga aklatan sa C at C ++.

Paghiwalayin ang iyong code mula sa mga aklatan Pinapayagan upang maprotektahan laban sa mga posibleng pag-atake sa mga hawakan na ibinigay ng mga aklatan, Lumilikha ng isang karagdagang hadlang kung sakaling may mga kahinaan sa iyong code na maaaring samantalahin sa pamamagitan ng mga manipulasyon sa panlabas na data na pumapasok sa silid-aklatan. Ang code ay bukas sa ilalim ng lisensya ng Apache 2.0.

Ang paghihiwalayo tapos na ito gamit ang loob ng runtime ng Sandbox2, kung saan ginagamit ang mga namespace, cgroups, at seccomp-bpf.

Ang code na naihatid sa sandbox na tumatakbo sa isang hiwalay na proseso, kung saan ang pag-access sa mga tawag sa system at mga mapagkukunan, pati na rin ang mga file at koneksyon sa network, ay limitado.

Ang mga proseso ay nakakakuha lamang ng pag-access sa mga kakayahan ng system na direktang kinakailangan upang magpatupad ng nakahiwalay na code.

Tinutukoy ng Sandbox2 ang mga bahagi upang mapatakbo ang prosesoo, ilapat ang mga patakaran ng paghihiwalay at suportahan ang kasunod na pagpapatupad.

sandbox2 maaari itong magamit nang hiwalay mula sa Sandbox API upang ihiwalay hindi lamang ang mga aklatan, kundi pati na rin ang di-makatwirang mga proseso.

Bilang karagdagan sa pagtaas ng proteksyon, isang positibong punto sa pag-aalis ng code sa magkakahiwalay na proseso ay ang posibilidad ng isang hiwalay na regulasyon ng mga limitasyon sa pagkonsumo ng memorya ng silid-aklatan at ng CPU, pati na rin ang proteksyon laban sa mga pagkabigo: isang pagkabigo sa ang library ay hindi sanhi ng pag-crash ng buong application.

Tungkol sa Sandboxed API

Ang Sandboxed API ay isang Sandbox2 plugin na pinapasimple ang transportasyon ng mga umiiral na aklatan upang tumakbo sa nakahiwalay na mode.

API sandboxing nagbibigay ng isang intermediate na interface ng software na nagbibigay-daan sa iyo upang patakbuhin ang code ng library sa isang kapaligiran sa sandboxpati na rin ang pag-aayos ng isang tawag sa isang silid-aklatan sa isang kapaligiran sa sandbox at tinitiyak ang paghahatid ng mga resulta ng library sa pangunahing programa.

Se ina-access ang nakahiwalay na silid-aklatan sa pamamagitan ng isang dalubhasang RPC batay sa ProtoBuffs na protokol.

A Inaalok ang mga developer ng library ng isang hanay ng mga pagpipilian na nagbibigay-daan sa pag-access sa mga variable, mga tagapaglaraw ng file, buffer at pag-andar ng library na nakahiwalay mula sa pangunahing aplikasyon, kasama ang mga tool para sa awtomatikong at kontroladong pag-synchronize ng memorya para sa pagbabahagi ng mga array at istraktura.

pangkalahatang-ideya ng sapi

Kapag ang isang library ng software na pinag-aaralan ang naturang data ay sapat na kumplikado, maaari itong mabiktima ng ilang mga uri ng mga kahinaan sa seguridad: mga error sa katiwalian sa memorya o iba pang mga uri ng mga problema na nauugnay sa lohika ng pagtatasa (halimbawa, mga problema sa traversal na landas).). Ang mga kahinaan na iyon ay maaaring magkaroon ng malubhang implikasyon sa seguridad.

Bukod dito, Isang API ang ibinigay upang subaybayan ang pagpapatakbo ng mga nakahiwalay na proseso at i-restart ang mga ito kung sakaling may mga pagkabigo.

Para sa nakahiwalay na silid-aklatan, ang code ng mga anotasyon ng mga nakahiwalay na pag-andar ay awtomatikong nabuo para sa system ng pagpupulong ng Bazel at ng interface ng programa (SAPI) para sa pakikipag-ugnayan sa pagitan ng mga pangunahing at nakahiwalay na proseso.

Dapat ding lumikha ang developer ng isang header file na may mga panuntunang paghihiwalay na tumutukoy sa lahat ng pinapayagan na mga tawag sa system at pagpapatakbo (basahin, isulat, buksan ang mga file, mag-access sa oras, ang kakayahang mag-install ng mga handler ng signal, suporta para sa paglalaan ng memorya sa pamamagitan ng malloc, atbp.).

Ang mga file at direktoryo na dapat na may access ang library ay natutukoy nang magkahiwalay.

Pag-install

Sa kasalukuyan, ang proyekto ay magagamit lamang para sa Linux, ngunit sa hinaharap ay nangangako silang magdagdag ng suporta para sa mga macOS at BSD system, at sa pangmatagalang, at para sa Windows. Oo nais mong mai-install ang sandboxed api maaari mong sundin ang mga ibinigay na tagubilin sa link na ito

Sa mga plano, nabanggit din ang kakayahang ihiwalay ang mga aklatan sa mga wika maliban sa C at C ++, karagdagang suporta sa runtime para sa paghihiwalay (hal. batay sa virtualization ng hardware) at ang kakayahang gumamit ng CMake at iba pang mga system ng pagpupulong (ang suporta ay limitado na ngayon sa Bazel build system).

Fuente: https://security.googleblog.com


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.