seccomp - seccomp
Pierwotny autor (autorzy) | Andrea Arcangeli |
---|---|
Pierwsze wydanie | 8 marca 2005 |
Napisane w | C |
System operacyjny | Linux |
Rodzaj | Piaskownica |
Licencja | Powszechna Licencja Publiczna GNU |
Strona internetowa | kod |
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 PR_SET_SECCOMP
argumentu lub (od jądra Linuksa 3.17) poprzez 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-opt
parametru. - 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
- Oficjalna strona internetowa
- Piaskownica Chromium Google , LWN.net , sierpień 2009, Jake Edge
- seccomp-nurse , framework piaskownicy oparty na seccomp
- Documentation/prctl/seccomp_filter.txt , część dokumentacji jądra Linux
- Szczegółowe informacje o zabezpieczeniach dla oprogramowania Linux: zapobieganie i łagodzenie błędów w zabezpieczeniach