Instalación de sandbox para el kernel de Linux
seccomp (abreviatura de secure computing [1] ) es una función de seguridad informática del núcleo Linux . seccomp permite que un proceso realice una transición unidireccional a un estado "seguro" en el que no puede realizar ninguna llamada al sistema excepto exit()
, sigreturn()
, read()
y a descriptores de archivoswrite()
ya abiertos . Si intenta realizar cualquier otra llamada al sistema, el núcleo simplemente registrará el evento o finalizará el proceso con SIGKILL o SIGSYS . [2] [3] En este sentido, no virtualiza los recursos del sistema, sino que aísla el proceso de ellos por completo.
El modo seccomp se habilita a través de la prctl(2)
llamada al sistema usando el PR_SET_SECCOMP
argumento, o (desde el kernel de Linux 3.17 [4] ) a través de la seccomp(2)
llamada al sistema. [5] El modo seccomp solía habilitarse escribiendo en un archivo, /proc/self/seccomp
pero este método fue eliminado a favor de prctl()
. [6] En algunas versiones del kernel, seccomp deshabilita la instrucción RDTSC
x86 , que devuelve el número de ciclos de procesador transcurridos desde el encendido, utilizado para una temporización de alta precisión. [7]
seccomp-bpf es una extensión de seccomp [8] que permite filtrar llamadas del sistema utilizando una política configurable implementada utilizando reglas de Berkeley Packet Filter . Lo utilizan OpenSSH [9] y vsftpd , así como los navegadores web Google Chrome/Chromium en ChromeOS y Linux. [10] (En este sentido, seccomp-bpf logra una funcionalidad similar, pero con más flexibilidad y mayor rendimiento, al antiguo systrace , que parece que ya no es compatible con Linux ).
Algunos consideran que seccomp es comparable a OpenBSD Promesa (2) y FreeBSD Capsicum (4) [ cita requerida ] .
Historia
Seccomp fue ideado por primera vez por Andrea Arcangeli en enero de 2005 para su uso en computación en red pública y originalmente estaba pensado como un medio para ejecutar de forma segura programas no confiables. Se fusionó con la línea principal del núcleo Linux en la versión 2.6.12 del núcleo, que se lanzó el 8 de marzo de 2005. [11]
Software que utiliza seccomp o seccomp-bpf
- Android utiliza un filtro seccomp-bpf en el cigoto desde Android 8.0 Oreo. [12]
- Las opciones de sandbox de systemd se basan en seccomp. [13]
- QEMU , el emulador rápido, el componente principal de la virtualización moderna junto con KVM utiliza seccomp en el parámetro
--sandbox
[14] - Docker : software que permite que las aplicaciones se ejecuten dentro de contenedores aislados. Docker puede asociar un perfil seccomp con el contenedor mediante el
--security-opt
parámetro. - Durante un tiempo, CPUShare de Arcangeli fue el único usuario conocido de seccomp. [15] En un escrito de febrero de 2009, Linus Torvalds expresó sus dudas sobre si alguien usa realmente seccomp. [16] Sin embargo, un ingeniero de Google respondió que Google está explorando el uso de seccomp para aislar su navegador web Chrome . [17] [18]
- Firejail es un programa sandbox de código abierto para Linux que utiliza espacios de nombres de Linux , Seccomp y otras características de seguridad a nivel de kernel para sandboxear aplicaciones Linux y Wine . [19]
- A partir de la versión 20 de Chrome, seccomp-bpf se utiliza para aislar Adobe Flash Player . [20]
- A partir de la versión 23 de Chrome, se utiliza seccomp-bpf para aislar los renderizadores. [21]
- Snap especifica la forma de su entorno de aplicación mediante "interfaces" que snapd traduce a seccomp, AppArmor y otras construcciones de seguridad [22]
- vsftpd utiliza el entorno protegido seccomp-bpf a partir de la versión 3.0.0. [23]
- OpenSSH admite seccomp-bpf desde la versión 6.0. [9]
- Mbox utiliza ptrace junto con seccomp-bpf para crear un entorno seguro con menos sobrecarga que ptrace solo. [24]
- LXD, un “ hipervisor ” de Ubuntu para contenedores [25] [26]
- Firefox y Firefox OS , que utilizan seccomp-bpf [27] [28]
- Tor admite seccomp desde la versión 0.2.5.1-alpha [29]
- Lepton, una herramienta de compresión JPEG desarrollada por Dropbox, utiliza seccomp [30]
- Kafel es un lenguaje de configuración que convierte políticas legibles en bytecode seccompb-bpf [31]
- El sistema operativo Subgraph utiliza seccomp-bpf [32] [33]
- Flatpak utiliza seccomp para el aislamiento de procesos [34]
- Bubblewrap es una aplicación sandbox liviana desarrollada a partir de Flatpak [35]
- minijail [36] usa seccomp para aislar procesos [37]
- SydBox utiliza seccomp-bpf [38] para mejorar el tiempo de ejecución y la seguridad del sandbox ptrace utilizado para aislar compilaciones de paquetes en la distribución Linux Exherbo.
- File, un programa Unix para determinar tipos de archivos, utiliza seccomp para restringir su entorno de ejecución [39]
- Zathura , un visor de documentos minimalista, utiliza el filtro seccomp para implementar diferentes modos sandbox [40]
- Tracker , una aplicación de indexación y vista previa para el entorno de escritorio GNOME, utiliza seccomp para evitar la explotación automática de vulnerabilidades de análisis en archivos multimedia [41]
Referencias
- ^
seccomp(2)
: "La llamada al sistema seccomp() opera en el estado de Computación Segura (seccomp)" – Manual del programador de Linux – Llamadas al sistema - ^ Corbet, Jonathan (2 de septiembre de 2015). "Una visión general de la seccomp". lwn . Consultado el 5 de octubre de 2017 .
- ^ "Documentación/prctl/seccomp_filter.txt" . Consultado el 5 de octubre de 2017 .
- ^ "Núcleo Linux 3.17, Sección 11. Seguridad". kernelnewbies.org . 2013-10-05 . Consultado el 2015-03-31 .
- ^ "seccomp: add "seccomp" syscall". kernel/git/torvalds/linux.git - Árbol de fuentes del kernel de Linux . kernel.org . 2014-06-25 . Consultado el 2014-08-22 .
- ^ Arcangeli, Andrea (14 de junio de 2007). "[PARCHE 1 de 2] mover seccomp de /proc a prctl" . Consultado el 2 de agosto de 2013 .
- ^ Tinnes, Julien (28 de mayo de 2009). "El contador de marca de tiempo desactiva rarezas en el núcleo de Linux". cr0 blog . Consultado el 2 de agosto de 2013 .
- ^ Corbet, Jonathan (11 de enero de 2012). "Otro nuevo enfoque para la seccomp". lwn . Consultado el 2 de agosto de 2013 .
- ^ ab "Notas de la versión de OpenSSH 6.0" . Consultado el 14 de octubre de 2013 .
- ^ Tinnes, Julien (19 de noviembre de 2012). "Un espacio de juego más seguro para los renderizadores de Linux y Chrome OS". The Chromium Blog . Consultado el 2 de agosto de 2013 .
- ^ "[PATCH] seccomp: soporte informático seguro". Historial del kernel de Linux . Repositorios git de Kernel.org. 2005-03-08. Archivado desde el original el 2013-04-15 . Consultado el 2013-08-02 .
- ^ "Filtro Seccomp en Android O". Blog de desarrolladores de Android .
- ^ "systemd.exec — Configuración del entorno de ejecución". freedesktop.org . Consultado el 14 de octubre de 2017 .
- ^ Otubo, Eduardo (15 de septiembre de 2017). "Solicitud de incorporación de nuevo modelo de Sandboxing de QEMU". Archivo de la lista de correo qemu-devel .
- ^ van de Ven, Arjan (28 de febrero de 2009). "Re: [stable] [PATCH 2/2] x86-64: seccomp: fix 32/64 syscall hole". Lista de correo del kernel de Linux . Consultado el 2 de agosto de 2013 .
- ^ Torvalds, Linus (28 de febrero de 2009). "Re: [PATCH 2/2] x86-64: seccomp: arreglo de un agujero en la llamada al sistema 32/64". Lista de correo del kernel de Linux . Consultado el 2 de agosto de 2013 .
- ^ Gutschke, Markus (6 de mayo de 2009). "Re: [PARCHE 2/2] x86-64: seccomp: soluciona el problema de la falla en llamadas al sistema 32/64" . Consultado el 2 de agosto de 2013 .
- ^ Gutschke, Markus (6 de mayo de 2009). "Re: [PATCH 2/2] x86-64: seccomp: soluciona el problema de la llamada al sistema 32/64". Lista de correo del kernel de Linux . Consultado el 2 de agosto de 2013 .
- ^ "Firejail". Firejail . Consultado el 26 de noviembre de 2016 .
- ^ Evans, Chris (4 de julio de 2012). «Chrome 20 en Linux y Flash sandboxing» . Consultado el 2 de agosto de 2013 .
- ^ Tinnes, Julien (6 de septiembre de 2012). "Presentación del sandbox Linux de próxima generación de Chrome". cr0 blog . Consultado el 2 de agosto de 2013 .
- ^ "Política de seguridad de Snap". Archivado desde el original el 4 de febrero de 2017. Consultado el 3 de febrero de 2017 .
- ^ Evans, Chris (9 de abril de 2012). "¡El sandbox de filtros vsftpd-3.0.0 y seccomp ya está aquí!" . Consultado el 2 de agosto de 2013 .
- ^ "MBOX" . Consultado el 20 de mayo de 2014 .
- ^ "LXD, un "hipervisor" para contenedores (basado en liblxc)". 4 de noviembre de 2014. Consultado el 8 de noviembre de 2014 .
- ^ "Hacia dónde vamos con LXD" . Consultado el 8 de noviembre de 2014 .
- ^ Destuynder, Guillaume (13 de septiembre de 2012). «Firefox Seccomp sandbox». Mozilla Bugzilla . Consultado el 13 de enero de 2015 .
- ^ Destuynder, Guillaume (13 de septiembre de 2012). «Firefox Seccomp Sandbox». Wiki de Mozilla . Consultado el 13 de enero de 2015 .
- ^ "Registro de cambios de Tor".
- ^ "Compresión de imágenes Lepton: ahorro del 22 % sin pérdida de imágenes a 15 MB/s". Blog tecnológico de Dropbox . Consultado el 15 de julio de 2016 .
- ^ "Kafel: un lenguaje y una biblioteca para especificar políticas de filtrado de llamadas al sistema".
- ^ "Subgraph OS". Subgraph . Consultado el 18 de diciembre de 2016 .
- ^ "LoganCIJ16: El futuro de los sistemas operativos". YouTube . Archivado desde el original el 2021-12-21 . Consultado el 2016-12-18 .
- ^ "El modelo de seguridad flatpak – parte 1: Los conceptos básicos" . Consultado el 21 de enero de 2017 .
- ^ "plástico de burbujas" . Consultado el 14 de abril de 2018 .
- ^ "Sandboxing de Chromium OS: los proyectos de Chromium".
- ^ "Minijail [LWN.net]". lwn.net . Consultado el 11 de abril de 2017 .
- ^ "core/trace/use_seccomp". dev.exherbo.org . Consultado el 31 de mayo de 2021 .
- ^ "Aplicación de archivos en Sandbox". GitHub .
- ^ "Implementación de seccomp de Zathura".
- ^ "Implementación de seccomp del rastreador Gnome".
Enlaces externos
- Sitio web oficial (archivado)
- El sandbox de Chromium de Google, LWN.net , agosto de 2009, por Jake Edge
- seccomp-nurse, un marco de sandbox basado en seccomp
- Documentation/prctl/seccomp_filter.txt, parte de la documentación del kernel de Linux
- Seguridad en profundidad para software Linux: prevención y mitigación de errores de seguridad