Se plănuiește portarea mecanismului de izolare a gajului la Linux

recent autorul bibliotecii standard Cosmopolitan C iar platforma Redbean a anunțat prin intermediul a a anunțat, implementarea mecanismului de izolare pledge() pentru Linux.

FUE dezvoltat inițial de proiectul OpenBSD y vă permite să interziceți selectivaplicațiile accesează apelurile de sistem neutilizate (se formează un fel de listă albă de apeluri de sistem pentru aplicație și alte apeluri sunt interzise). Spre deosebire de mecanismele de control al accesului syscall disponibile pe Linux, cum ar fi seccomp, mecanismul de gaj este conceput de la zero pentru a fi cât mai ușor de utilizat.

Inițiativa eșuată de a izola aplicațiile în mediul de bază OpenBSD folosind mecanismul systrace a demonstrat că izolarea la nivelul apelurilor individuale de sistem este prea complicată și consumatoare de timp.

Ca alternativă, a fost propus gaj, care permis să creeze reguli de izolare fără a intra în detalii și a manipula clasele de acces pregătite.

De exemplu, clasele oferite sunt stdio (intrare/ieșire), rpath (fișiere numai pentru citire), wpath (fișiere de scriere), cpath (creare fișiere), tmppath (lucrare cu fișiere temporare), inet (rețea de socketuri), unix (socket-uri Unix). ), dns (rezoluție DNS), getpw (acces de citire la baza de date a utilizatorilor), ioctl (apel ioctl), proc (controlul procesului), exec (procesele de pornire) și id (controlul permisiunii).

Regulile de lucru cu apeluri de sistem sunt specificate sub formă de adnotări care includ o listă de clase de apel de sistem permise și o serie de căi de fișiere unde accesul este permis. După compilarea și rularea aplicației modificate, nucleul preia sarcina de a monitoriza respectarea regulilor specificate.

Separat, este în curs de dezvoltare implementarea gajului pentru FreeBSD, care se distinge prin capacitatea de a izola aplicațiile fără a aduce modificări codului acestora, în timp ce în OpenBSD apelul de gaj are ca scop integrarea strânsă cu mediul de bază și adăugarea de adnotări la cod. a fiecaruia.

Angajamentul este ca fructul interzis pe care îl râvnim cu toții când șeful spune că ar trebui să folosim lucruri precum Linux. De ce contează asta? Se datorează faptului că pledge() face de fapt securitatea de înțeles. Linux nu a avut niciodată un nivel de securitate pe care simplii muritori să-l poată înțelege.

Dezvoltatorii de porturi de gaj Linux au luat un exemplu de la FreeBSD și în loc să facă modificări de cod, au pregătit un utilitar suplimentar de la pledge.com care vă permite să aplicați restricții fără a schimba codul aplicației. De exemplu, pentru a rula utilitarul curl cu acces numai la clasele de apel de sistem stdio, rpath, inet și threadstdio, pur și simplu rulați „./pledge.com -p „stdio rpath inet thread” curl http://example.com » .

Utilitarul funcționează pe toate distribuțiile Linux începând cu RHEL6 și nu necesită acces root. În plus, pe baza bibliotecii cosmopolite, este prevăzut un API pentru gestionarea restricțiilor în codul programelor în limbaj C, care permite, printre altele, crearea de enclave pentru a restricționa selectiv accesul în legătură cu anumite funcții ale aplicației.

Au fost câțiva dezvoltatori în trecut care au încercat acest lucru. Nu am de gând să dau nume, pentru că majoritatea acestor proiecte nu au fost niciodată finalizate. Când vine vorba de SECOMP, tutorialele online explică doar cum să treci pe lista albă a apelurilor de sistem, astfel încât majoritatea oamenilor își pierd interesul înainte de a-și da seama cum să filtreze argumentele. Proiectele care au avansat au avut, de asemenea, neglijențe, cum ar fi permiterea modificării setuid/setgid/sticky bits. Prin urmare, nu ar trebui utilizată nici una dintre alternativele actuale. Cred că acest efort ne aduce mult mai aproape de a avea pledge() decât oricând.

Implementarea nu necesită modificări ale nucleului: constrângerile de utilitate sunt traduse în reguli SECCOMP BPF și procesate folosind mecanismul nativ de izolare a apelurilor de sistem Linux. De exemplu, apelarea promise("stdio rpath", 0) se va converti într-un filtru BPF

În cele din urmă, dacă sunteți interesat să aflați mai multe despre aceasta, puteți consulta detaliile În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.