Įkeitimo izoliavimo mechanizmą planuojama perkelti į Linux

Neseniai Cosmopolitan C standartinės bibliotekos autorius ir Redbean platforma paskelbė per a paskelbė, kad „Linux“ bus įdiegtas pledge() izoliacijos mechanizmas.

Buvo iš pradžių sukurta OpenBSD projekto y leidžia pasirinktinai uždrausti kad programos pasiekia nenaudojamus sistemos skambučius (programai sudaromas savotiškas sistemos skambučių baltas sąrašas ir kiti skambučiai draudžiami). Skirtingai nuo „Syscall“ prieigos valdymo mechanizmų, prieinamų „Linux“, pvz., „seccomp“, įkeitimo mechanizmas nuo pat pradžių sukurtas taip, kad būtų kuo patogesnis vartotojui.

Nesėkminga iniciatyva izoliuoti programas OpenBSD bazinėje aplinkoje naudojant systrace mechanizmą parodė, kad izoliavimas atskirų sistemos iškvietimų lygyje yra pernelyg sudėtingas ir atimantis daug laiko.

Kaip alternatyva buvo pasiūlytas įkeitimas, kuris leidžiama kurti izoliavimo taisykles nesigilinant į smulkmenas ir nemanipuliuojant paruoštomis prieigos klasėmis.

Pavyzdžiui, siūlomos klasės yra stdio (įvestis/išvestis), rpath (tik skaitomi failai), wpath (failų rašymas), cpath (kurti failus), tmppath (darbas su laikinais failais), inet (sockets tinklas), unix (unix lizdai). ), dns (DNS skiriamoji geba), getpw (skaitymo prieiga prie vartotojų duomenų bazės), ioctl (ioctl skambutis), proc (procesų valdymas), exec (paleisties procesai) ir id (leidimų kontrolė).

Darbo su sistemos skambučiais taisyklės yra nurodomi kaip anotacijos, kuriose yra leistinų sistemos skambučių klasių sąrašas ir failų kelių, kuriuose leidžiama prieiga, masyvas. Sukompiliavus ir paleidus pakeistą programą, branduolys perima užduotį stebėti, kaip laikomasi nurodytų taisyklių.

Atskirai kuriamas „FreeBSD“ įkeitimas, kuris išsiskiria galimybe izoliuoti programas nekeičiant jų kodo, o OpenBSD „pledge“ iškvietimas yra skirtas glaudžiai integruoti su bazine aplinka ir pridėti prie kodo komentarų. kiekvieno.

Įkeitimas yra tarsi uždraustas vaisius, kurio mes visi trokštame, kai viršininkas sako, kad turėtume naudoti tokius dalykus kaip Linux. Kodėl tai svarbu? Taip yra todėl, kad užstatas () iš tikrųjų leidžia suprasti saugumą. „Linux“ niekada neturėjo tokio saugumo sluoksnio, kurį galėtų suprasti paprasti mirtingieji.

„Linux“ prievado kūrėjai ėmėsi „FreeBSD“ pavyzdžio ir užuot atlikę kodo pakeitimus, jie paruošė papildomą įrankį iš pledge.com, leidžiantį taikyti apribojimus nekeičiant programos kodo. Pavyzdžiui, norėdami paleisti curl paslaugų programą su prieiga tik prie stdio, rpath, inet ir threadstdio sistemos skambučių klasių, tiesiog paleiskite "./pledge.com -p "stdio rpath inet thread" curl http://example.com » .

Priemonė veikia visuose Linux platinimuose nuo RHEL6 ir nereikalauja root prieigos. Be to, remiantis kosmopolitiška biblioteka, C kalbos programų kodo apribojimams valdyti yra numatyta API, kuri, be kita ko, leidžia sukurti anklavus, leidžiančius pasirinktinai apriboti prieigą prie tam tikrų programos funkcijų.

Praeityje buvo keli kūrėjai, kurie tai bandė. Nevardinsiu vardų, nes dauguma šių projektų taip ir nebuvo užbaigti. Kalbant apie SECOMP, internetiniuose vadovėliuose tik paaiškinama, kaip įtraukti sistemos skambučius į baltąjį sąrašą, todėl dauguma žmonių praranda susidomėjimą, kol nesupranta, kaip filtruoti argumentus. Projektai, kurie judėjo į priekį, taip pat turėjo klaidų, pavyzdžiui, leido keisti „setuid“ / „setgid“ / „sticky“ bitus. Todėl nė viena iš dabartinių alternatyvų neturėtų būti naudojama. Manau, kad šios pastangos priartina mus prie pažado() nei bet kada anksčiau.

Diegimas nereikalauja jokių branduolio pakeitimų: paslaugų apribojimai paverčiami SECCOMP BPF taisyklėmis ir apdorojami naudojant „Linux“ sistemos skambučių izoliavimo mechanizmą. Pavyzdžiui, iškvietus pažadą ("stdio rpath", 0) bus konvertuojamas į BPF filtrą

Galiausiai, jei jus domina daugiau apie tai sužinoti, galite susipažinti su išsamia informacija Šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.