Planowane jest przeniesienie mechanizmu izolacji zastawów do systemu Linux

Ostatnio autor standardowej biblioteki Cosmopolitan C i platforma Redbean ogłoszona przez ogłoszono implementację mechanizmu izolacji pledge() dla Linuksa.

Fue pierwotnie opracowany przez projekt OpenBSD y pozwala na selektywne blokowanie że aplikacje uzyskują dostęp do nieużywanych wywołań systemowych (rodzaj białej listy wywołań systemowych dla aplikacji i inne wywołania są zabronione). W przeciwieństwie do mechanizmów kontroli dostępu syscall dostępnych w systemie Linux, takich jak seccomp, mechanizm zastawu został zaprojektowany od podstaw tak, aby był jak najbardziej przyjazny dla użytkownika.

Nieudana inicjatywa izolowania aplikacji w podstawowym środowisku OpenBSD przy użyciu mechanizmu systrace pokazała, że ​​izolacja na poziomie poszczególnych wywołań systemowych jest zbyt skomplikowana i czasochłonna.

Jako alternatywę zaproponowano zastaw, który pozwoliło na tworzenie reguł izolacji bez wchodzenia w szczegóły i manipulowania przygotowanymi klasami dostępu.

Na przykład oferowane klasy to stdio (wejście/wyjście), rpath (pliki tylko do odczytu), wpath (zapis plików), cpath (tworzenie plików), tmppath (praca z plikami tymczasowymi), inet (sieć gniazd), unix (gniazda unix ), dns (rozdzielczość DNS), getpw (dostęp do odczytu bazy danych użytkowników), ioctl (wywołanie ioctl), proc (kontrola procesu), exec (procesy startowe) i id (kontrola uprawnień).

Zasady pracy z wywołaniami systemowymi są określone w formie adnotacji zawierających listę dozwolonych klas wywołań systemowych oraz tablicę ścieżek plików, do których dostęp jest dozwolony. Po skompilowaniu i uruchomieniu zmodyfikowanej aplikacji jądro przejmuje zadanie monitorowania zgodności z określonymi regułami.

Osobno rozwijana jest implementacja zastawu dla FreeBSD, która wyróżnia się możliwością izolowania aplikacji bez wprowadzania zmian w ich kodzie, natomiast w OpenBSD wywołanie zastawu ma na celu ścisłą integrację ze środowiskiem bazowym i dodanie adnotacji do kodu każdego z nich.

Przyrzeczenie jest jak zakazany owoc, którego wszyscy pożądamy, gdy szef mówi, że powinniśmy używać rzeczy takich jak Linux. Dlaczego to ma znaczenie? Dzieje się tak dlatego, że pledge() faktycznie sprawia, że ​​bezpieczeństwo jest zrozumiałe. Linux nigdy tak naprawdę nie miał warstwy bezpieczeństwa, którą mogą zrozumieć zwykli śmiertelnicy.

Deweloperzy portów na Linuksa wzięli przykład z FreeBSD i zamiast wprowadzać zmiany w kodzie, przygotowali dodatkowe narzędzie ze strony pledge.com, które pozwala na nakładanie ograniczeń bez zmiany kodu aplikacji. Na przykład, aby uruchomić narzędzie curl z dostępem tylko do klas wywołań systemowych stdio, rpath, inet i threadstdio, po prostu uruchom "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Narzędzie działa na wszystkich dystrybucjach Linuksa od RHEL6 i nie wymaga dostępu do roota. Dodatkowo w oparciu o bibliotekę kosmopolityczną przewidziano API do zarządzania ograniczeniami w kodzie programów w języku C, co pozwala m.in.

W przeszłości kilku programistów próbowało tego. Nie będę wymieniał nazwisk, ponieważ większość z tych projektów nigdy nie została ukończona. Jeśli chodzi o SECOMP, samouczki online wyjaśniają tylko, jak umieszczać wywołania systemowe na białej liście, więc większość ludzi traci zainteresowanie przed wymyśleniem sposobu filtrowania argumentów. Projekty, które posunęły się do przodu, również miały niedopatrzenia, takie jak zezwalanie na zmianę bitów setuid/setgid/sticky. Dlatego nie należy stosować żadnej z obecnych alternatyw. Myślę, że ten wysiłek znacznie przybliża nas do posiadania funkcji pledge() niż kiedykolwiek wcześniej.

Implementacja nie wymaga zmian jądra: ograniczenia dotyczące użyteczności są tłumaczone na reguły SECOMP BPF i przetwarzane przy użyciu natywnego mechanizmu izolacji wywołań systemowych systemu Linux. Na przykład wywołanie obietnicy("stdio rpath", 0) spowoduje konwersję do filtra BPF

Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.