seccomp - seccomp

seccomp
Pierwotny autor (autorzy) Andrea Arcangeli
Pierwsze wydanie 8 marca 2005 ; 16 lat temu ( 2005-03-08 )
Napisane w C
System operacyjny Linux
Rodzaj Piaskownica
Licencja Powszechna Licencja Publiczna GNU
Strona internetowa kod .google .com /archive /p /seccompsandbox /wikis /overview .wiki

seccomp (skrót od bezpiecznego trybu obliczeniowego ) to funkcja bezpieczeństwa komputera w jądrze Linux . Seccomp umożliwia proces , aby jednokierunkowe przejście do „bezpiecznego” stan, w którym nie można dokonywać żadnych wywołań systemowych , z wyjątkiem exit(), sigreturn(), read()i write()do już otwartych deskryptorów plików . Jeśli spróbuje wykonać inne wywołania systemowe, jądro zakończy proces za pomocą SIGKILL lub SIGSYS . W tym sensie nie wirtualizuje zasobów systemu, ale całkowicie izoluje od nich proces.

Tryb seccomp jest włączany poprzez prctl(2)wywołanie systemowe za pomocą PR_SET_SECCOMPargumentu lub (od jądra Linuksa 3.17) poprzez seccomp(2)wywołanie systemowe. Kiedyś tryb seccomp był włączany przez zapis do pliku /proc/self/seccomp, ale ta metoda została usunięta na korzyść prctl(). W niektórych wersjach jądra seccomp wyłącza instrukcję RDTSC x86 , która zwraca liczbę cykli procesora, które upłynęły od włączenia zasilania, używaną do precyzyjnego pomiaru czasu.

seccomp-bpf to rozszerzenie seccomp, które umożliwia filtrowanie wywołań systemowych przy użyciu konfigurowalnej polityki zaimplementowanej przy użyciu reguł Berkeley Packet Filter . Jest używany przez OpenSSH i vsftpd, a także przeglądarki internetowe Google Chrome/Chromium w systemie operacyjnym Chrome i Linux. (Pod tym względem seccomp-bpf osiąga podobną funkcjonalność, ale z większą elastycznością i wyższą wydajnością, do starszej systrace — która wydaje się nie być już obsługiwana przez Linuksa ).

Niektórzy uważają seccomp za porównywalny z OpenBSD pledge(2) i FreeBSD capsicum (4).

Historia

seccomp został po raz pierwszy opracowany przez Andreę Arcangeli w styczniu 2005 roku do użytku w publicznych sieciach obliczeniowych i pierwotnie był przeznaczony do bezpiecznego uruchamiania niezaufanych programów obliczeniowych. Został on włączony do głównej linii jądra Linuksa w wersji jądra 2.6.12, która została wydana 8 marca 2005 r.

Oprogramowanie używające seccomp lub seccomp-bpf

  • Android używa filtra seccomp-bpf w zygocie od Androida 8.0 Oreo.
  • Systemd „s Sandboxing opcje oparte na Seccomp.
  • QEMU , szybki emulator, podstawowy składnik nowoczesnej wirtualizacji wraz z KVM używa seccomp na parametrze--sandbox
  • Docker – oprogramowanie umożliwiające uruchamianie aplikacji wewnątrz izolowanych kontenerów. Docker może skojarzyć profil seccomp z kontenerem za pomocą --security-optparametru.
  • CPUShare firmy Arcangeli przez jakiś czas był jedynym znanym użytkownikiem seccomp. Pisząc w lutym 2009, Linus Torvalds wyraża wątpliwości, czy seccomp jest rzeczywiście używany przez kogokolwiek. Jednak Google inżynier odpowiedział, że Google jest badanie za pomocą Seccomp dla Sandboxing swoją Chrome przeglądarkę internetową.
  • Firejail to open source'owy program piaskownicy dla Linuksa, który wykorzystuje przestrzenie nazw Linuksa , Seccimp i inne funkcje bezpieczeństwa na poziomie jądra do aplikacji Sandbox Linux i Wine .
  • Od wersji 20 Chrome seccomp-bpf jest używany do piaskownicy Adobe Flash Playera .
  • Od wersji 23 Chrome seccomp-bpf jest używany do piaskownicy rendererów.
  • Snap określa kształt swojej piaskownicy aplikacji za pomocą "interfejsów", które przekładają się na seccomp, AppArmor i inne konstrukcje zabezpieczające
  • vsftpd używa piaskownicy seccomp-bpf od wersji 3.0.0.
  • OpenSSH obsługuje seccomp-bpf od wersji 6.0.
  • Mbox używa ptrace wraz z seccomp-bpf, aby stworzyć bezpieczną piaskownicę z mniejszym obciążeniem niż sam ptrace.
  • LXD, " hiperwizor " Ubuntu dla kontenerów
  • Firefox i Firefox OS , które używają seccomp-bpf
  • Tor obsługuje seccomp od wersji 0.2.5.1-alpha
  • Lepton, narzędzie do kompresji JPEG opracowane przez Dropbox, korzysta z seccomp
  • Kafel to język konfiguracyjny, który konwertuje czytelne polityki do kodu bajtowego seccompb-bpf
  • Subgraph OS używa seccomp-bpf
  • Flatpak używa seccomp do izolacji procesu
  • Bubblewrap to lekka aplikacja do piaskownicy opracowana przez Flatpak
  • minijail używa seccomp do izolacji procesów
  • SydBox wykorzystuje Seccomp-BPF poprawić czas pracy i bezpieczeństwo na ptrace Sandboxing wykorzystywane do piaskownicy pakietu buduje na Exherbo Linux dystrybucji, aby zapobiec niepożądanemu procesu dostępu do systemu plików i sieciowych zasobów. Pandora jest pomocnikiem dla SydBox, piaskownicy opartej na ptrace i seccomp, aby uczynić piaskownicę praktyczną. Ułatwia to użytkownikowi końcowemu korzystanie z bezpiecznego przetwarzania do celów praktycznych. Repozytorium git SydBox zawiera przykład dla przeglądarki Sandbox Firefox . Ptrace funkcjonalność jest świadczone przez biblioteki PinkTrace który jest owijka wokół ptrace wywołania systemowego. Zapewnia solidny interfejs API do śledzenia procesów. PinkTrace od lat pożycza kod od Strace i przesyła go z powrotem w razie potrzeby. Sydbox-2.0.1 nie używa już ptrace i opiera się wyłącznie na nowszej fladze seccomp do śledzenia programów przez bezpieczne filtry obliczeniowe zdefiniowane przez użytkownika. Użytkownik może zdecydować się na całkowite filtrowanie w przestrzeni jądra lub filtrowanie częściowo w przestrzeni użytkownika za pomocą wyłuskiwania ciągów SydBox i argumentów adresu sieciowego pasujących do list dozwolonych i odrzucających określonych przez użytkownika za pomocą nazw ścieżek lub adresów gniazd UNIX, w tym znaków wieloznacznych , adresu IPv4 lub IPv6 w notacji CIDR .SECCOMP_USER_NOTIF_FLAG_CONTINUE

Bibliografia

Zewnętrzne linki