Es planeja portar el mecanisme d'aïllament pledge a Linux

fa poc l'autor de la biblioteca estàndard Cosmopolitan C i la plataforma Redbean va donar a conèixer mitjançant un va anunciar, la implementació del mecanisme d'aïllament de pledge() per a Linux.

VA SER desenvolupat originalment pel projecte OpenBSD y permet prohibir selectivament que les aplicacions accedeixin a les trucades del sistema no utilitzades (es forma una mena de llista blanca de trucades del sistema per a l'aplicació i es prohibeixen altres trucades). A diferència dels mecanismes de control d'accés syscall disponibles a Linux, com ara seccomp, el mecanisme de pledge està dissenyat des de zero perquè sigui el més fàcil d'utilitzar possible.

La iniciativa fallida d'aïllar aplicacions a l'entorn base d'OpenBSD utilitzant el mecanisme systrace va demostrar que l'aïllament a nivell de trucades de sistema individuals és massa complicat i requereix molt de temps.

Com a alternativa, es va proposar pledge, que permetia crear regles d'aïllament sense entrar a detalls i manipular classes d'accés preparades.

Per exemple, les classes que s'ofereixen són stdio (entrada/sortida), rpath (només lectura de fitxers), wpath (escriptura de fitxers), cpath (creació de fitxers), tmppath (treball amb fitxers temporals), inet (sockets de xarxa), unix (unix sockets), dns (resolució DNS), getpw (accés de lectura a la base de dades de l'usuari), ioctl (anomenada ioctl), proc (control de processos), exec (processos d'inici) i id (control de permisos).

Les regles per treballar amb trucades al sistema s'especifiquen en forma d'anotacions que inclouen una llista de classes de trucades al sistema permeses i una matriu de rutes de fitxers on es permet l'accés. Després de compilar i executar l'aplicació modificada, el nucli assumeix el treball de monitoritzar el compliment de les regles especificades.

Per separat, s'està desenvolupant la implementació de pledge per a FreeBSD, que es distingeix per la capacitat d'aïllar aplicacions sense realitzar canvis en el codi, mentre que a OpenBSD la trucada de pledge té com a objectiu una integració estreta amb l'entorn base i l'addició d'anotacions al codi de cadascun.

Pledge és com la fruita prohibida que tots cobegem quan el cap diu que hem d'usar coses com Linux. Per què això importa? És perquè la pledge() en realitat fa que la seguretat sigui comprensible. Linux mai no ha tingut realment una capa de seguretat que els simples mortals puguin entendre.

Els desenvolupadors del port de pledge de Linux van prendre l'exemple de FreeBSD i, en lloc de fer canvis al codi, van preparar una utilitat addicional de pledge.com que li permet aplicar restriccions sense canviar el codi de l'aplicació. Per exemple, per executar la utilitat curl amb accés només a les classes de trucada del sistema stdio, rpath, inet i threadstdio, simplement executeu «./pledge.com -p 'stdio rpath inet thread' curl http://example.com ».

La utilitat funciona en totes les distribucions de Linux des de RHEL6 i no requereix accés de root. Addicionalment, sobre la base de la llibreria cosmopolitan, es proporciona una API per a la gestió de restriccions en el codi dels programes en llenguatge C, que permet, entre altres coses, crear enclavaments per restringir selectivament l'accés en relació amb determinades funcions de l'aplicació .

Hi ha hagut alguns desenvolupadors en el passat que han intentat això. No donaré noms, perquè la majoria d'aquests projectes mai no es van completar. Quan es tracta de SECOMP, els tutorials en línia només expliquen com incloure a la llista blanca les trucades del sistema, de manera que la majoria de les persones perden interès abans d'esbrinar com filtrar els arguments. Els projectes que van avançar també van tenir descuits com permetre el canvi de setuid/setgid/sticky bits. Per tant, no cal utilitzar cap de les alternatives actuals. Crec que aquest esforç ens acosta molt més a tenir pledge() que mai.

La implementació no requereix canvis al nucli: les restriccions de la utilitat es tradueixen en regles SECCOMP BPF i es processen utilitzant el mecanisme d'aïllament de trucades del sistema nadiu de Linux. Per exemple, anomenar promise(«stdio rpath», 0) es convertirà en un filtre BPF

Finalment si estàs interessat en poder conèixer més a l'respecte, pots consultar els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.