Het is de bedoeling om het belofteisolatiemechanisme over te dragen naar Linux

onlangs de auteur van de Cosmopolitan C-standaardbibliotheek en het Redbean-platform aangekondigd via a aangekondigd, de implementatie van het pand() isolatiemechanisme voor Linux.

Fue oorspronkelijk ontwikkeld door het OpenBSD-project y stelt u in staat om selectief te verbieden dat de applicaties hebben toegang tot ongebruikte systeemoproepen (er wordt een soort whitelist van systeemoproepen gevormd voor de applicatie en andere oproepen zijn verboden). In tegenstelling tot de syscall-toegangscontrolemechanismen die beschikbaar zijn op Linux, zoals seccomp, is het beloftemechanisme van de grond af ontworpen om zo gebruiksvriendelijk mogelijk te zijn.

Het mislukte initiatief om applicaties in de OpenBSD-basisomgeving te isoleren met behulp van het systrace-mechanisme toonde aan dat isolatie op het niveau van individuele systeemaanroepen te ingewikkeld en tijdrovend is.

Als alternatief werd een toezegging voorgesteld, die: toegestaan ​​om isolatieregels te maken zonder in details te treden en voorbereide toegangsklassen te manipuleren.

De aangeboden klassen zijn bijvoorbeeld stdio (invoer/uitvoer), rpath (alleen-lezen bestanden), wpath (schrijfbestanden), cpath (bestanden maken), tmppath (werken met tijdelijke bestanden), inet (socketsnetwerk), unix (unix-sockets ), dns (DNS-resolutie), getpw (leestoegang tot gebruikersdatabase), ioctl (ioctl-aanroep), proc (procescontrole), exec (opstartprocessen) en id (toestemmingscontrole).

De regels voor het werken met systeemaanroepen worden gespecificeerd in de vorm van annotaties die een lijst met toegestane systeemaanroepklassen bevatten en een reeks bestandspaden waar toegang is toegestaan. Na het compileren en uitvoeren van de gewijzigde applicatie, neemt de kernel de taak over om de naleving van de gespecificeerde regels te controleren.

Afzonderlijk wordt de belofte-implementatie voor FreeBSD ontwikkeld, die zich onderscheidt door de mogelijkheid om applicaties te isoleren zonder wijzigingen aan hun code aan te brengen, terwijl in OpenBSD de belofte-oproep gericht is op nauwe integratie met de basisomgeving en het toevoegen van annotaties aan de code van elk.

Belofte is als de verboden vrucht die we allemaal begeren als de baas zegt dat we dingen als Linux moeten gebruiken. Waarom is dat belangrijk? Het is omdat de belofte() beveiliging eigenlijk begrijpelijk maakt. Linux heeft nooit echt een beveiligingslaag gehad die gewone stervelingen kunnen begrijpen.

De ontwikkelaars van de Linux-beloftepoort namen een richtsnoer van FreeBSD en in plaats van codewijzigingen aan te brengen, hebben ze een extra hulpprogramma van pand.com voorbereid waarmee u beperkingen kunt toepassen zonder de toepassingscode te wijzigen. Als u bijvoorbeeld het hulpprogramma curl wilt uitvoeren met alleen toegang tot de systeemaanroepklassen stdio, rpath, inet en threadstdio, voert u gewoon "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Het hulpprogramma werkt op alle Linux-distributies sinds RHEL6 en vereist geen root-toegang. Bovendien wordt op basis van de kosmopolitische bibliotheek een API geleverd voor het beheren van beperkingen in de code van C-taalprogramma's, waarmee onder andere enclaves kunnen worden gemaakt om de toegang selectief te beperken met betrekking tot bepaalde functies van de applicatie.

Er zijn in het verleden een paar ontwikkelaars geweest die dit hebben geprobeerd. Ik ga geen namen noemen, omdat de meeste van deze projecten nooit zijn voltooid. Als het gaat om SECOMP, leggen online tutorials alleen uit hoe systeemoproepen op de witte lijst kunnen worden gezet, zodat de meeste mensen hun interesse verliezen voordat ze uitzoeken hoe ze argumenten kunnen filteren. De projecten die vooruit gingen, hadden ook onoplettendheden, zoals het toestaan ​​​​van het wijzigen van setuid/setgid/sticky bits. Daarom mag geen van de huidige alternatieven worden gebruikt. Ik denk dat deze inspanning ons veel dichter bij het hebben van belofte() brengt dan ooit tevoren.

Implementatie vereist geen kernelwijzigingen: beperkingen van hulpprogramma's worden vertaald in SECCOMP BPF-regels en verwerkt met behulp van Linux's native systeemoproepisolatiemechanisme. Als u bijvoorbeeld promise ("stdio rpath", 0) aanroept, wordt dit geconverteerd naar een BPF-filter

Ten slotte, als u geïnteresseerd bent om er meer over te weten, kunt u de details raadplegen In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.