seccomp (abreviatura de secure computing [ 1 ] ) es una función de seguridad informática en el kernel de Linux . seccomp permite que un proceso haga una transición unidireccional a un estado "seguro" donde no puede hacer ninguna llamada al sistema excepto exit(), sigreturn(), read()y write()a descriptores de archivos ya abiertos . Si intenta cualquier otra llamada al sistema, el kernel simplemente registrará el evento o terminará 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 mediante la llamada al sistema usando el PR_SET_SECCOMPargumento, o (desde el kernel de Linux 3.17 [ 4 ] ) mediante la llamada al sistema. [ 5 ] El modo seccomp solía habilitarse escribiendo en un archivo, /proc/self/seccomp, pero este método se eliminó en favor de prctl(). [ 6 ] En algunas versiones del kernel, seccomp deshabilita la instrucción RDTSCx86 , que devuelve el número de ciclos de procesador transcurridos desde el encendido, utilizado para la temporización de alta precisión. [ 7 ]
seccomp-bpf es una extensión de seccomp [ 8 ] que permite filtrar llamadas al sistema mediante una política configurable implementada con las reglas de Berkeley Packet Filter . La utilizan OpenSSH [ 9 ] y vsftpd , así como los navegadores web Google Chrome/Chromium en ChromeOS y Linux [ 10 ] . (En este sentido, seccomp-bpf ofrece una funcionalidad similar, pero con mayor flexibilidad y rendimiento, a la del antiguo systrace , que parece haber dejado de ser compatible con Linux ).
Algunos consideran que seccomp es comparable a OpenBSD pledge(2) y FreeBSD capsicum (4) .
Historia
seccomp fue ideado por primera vez por Andrea Arcangeli en enero de 2005 para su uso en computación en malla pública y originalmente se concibió como un medio para ejecutar de forma segura programas que requerían mucha capacidad de cómputo y que no eran de confianza . Se integró en la rama principal del kernel de Linux en la versión 2.6.12, que se publicó el 8 de marzo de 2005. [ 11 ]
Software que utiliza seccomp o seccomp-bpf
- Android utiliza un filtro seccomp-bpf en el zygote desde Android 8.0 Oreo. [ 12 ]
- Las opciones de sandboxing de systemd se basan en seccomp. [ 13 ]
- QEMU , el emulador rápido, el componente central 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-optparámetro. - Durante un tiempo, CPUShare de Arcangeli fue el único usuario conocido de seccomp. [ 15 ] En febrero de 2009, Linus Torvalds expresó dudas sobre si alguien realmente usaba seccomp. [ 16 ] Sin embargo, un ingeniero de Google respondió que Google estaba explorando el uso de seccomp para aislar su navegador web Chrome . [ 17 ] [ 18 ]
- Firejail es un programa de sandbox de código abierto para Linux que utiliza espacios de nombres de Linux , Seccomp y otras características de seguridad a nivel del kernel para aislar aplicaciones de 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, seccomp-bpf se utiliza para aislar los renderizadores. [ 21 ]
- Snap especifica la forma de su entorno aislado de aplicación mediante "interfaces" que snapd traduce a seccomp, AppArmor y otras construcciones de seguridad [ 22 ].
- vsftpd utiliza el sandboxing seccomp-bpf a partir de la versión 3.0.0. [ 23 ]
- OpenSSH ha sido compatible con seccomp-bpf desde la versión 6.0. [ 9 ]
- Mbox utiliza ptrace junto con seccomp-bpf para crear un entorno aislado 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 código de bytes seccompb-bpf [ 31 ].
- Subgraph OS utiliza seccomp-bpf [ 32 ] [ 33 ]
- Flatpak utiliza seccomp para el aislamiento de procesos [ 34 ]
- Bubblewrap es una aplicación sandbox ligera desarrollada a partir de Flatpak [ 35 ].
- minijail [ 36 ] utiliza seccomp para el aislamiento de procesos [ 37 ]
- SydBox utiliza seccomp-bpf [ 38 ] para mejorar el tiempo de ejecución y la seguridad del sandboxing ptrace utilizado para aislar las compilaciones de paquetes en la distribución Exherbo Linux.
- File, un programa de 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 de 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 ].
Véase también
Referencias
- ↑ : "La llamada al sistema seccomp() opera sobre el estado de Computación Segura (seccomp)" – Manual del Programador de Linux – Llamadas al Sistema
- ↑ Corbet, Jonathan (2015-09-02). "Una visión general de seccomp" . lwn . Recuperado el 2017-10-05 .
- ↑ "Documentation/prctl/seccomp_filter.txt" . Consultado el 5 de octubre de 2017 .
- ↑ "Núcleo de Linux 3.17, Sección 11. Seguridad" . kernelnewbies.org . 5 de octubre de 2013. Consultado el 31 de marzo de 2015 .
- ↑ "seccomp: agregar llamada al sistema "seccomp" . kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux . kernel.org . 2014-06-25 . Consultado el 2014-08-22 .
- ↑ Arcangeli, Andrea (2007-06-14). " [ PARCHE 1 de 2 ] mover seccomp de /proc a un prctl" . Recuperado el 2013-08-02 .
- ↑ Tinnes, Julien (2009-05-28). "Ridículos deshabilitadores del contador de marcas de tiempo en el kernel de Linux" . Blog cr0 . Consultado el 2013-08-02 .
- ↑ Corbet, Jonathan (11 de enero de 2012). "Otro nuevo enfoque para seccomp" . lwn . Consultado el 2 de agosto de 2013 .
- 1 2 "Notas de la versión de OpenSSH 6.0" . Consultado el 14 de octubre de 2013 .
- ↑ Tinnes, Julien (19 de noviembre de 2012). "Un entorno de juego más seguro para los renderizadores de Linux y Chrome OS" . El blog de Chromium . Consultado el 2 de agosto de 2013 .
- ↑ " [ PATCH ] seccomp: soporte para computación segura" . Historial del kernel de Linux . Repositorios git de Kernel.org. 2005-03-08 . Recuperado el 2013-08-02 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "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 (2017-09-15). "QEMU Sandboxing new model pull request" . qemu-devel mailing list archive .
- ↑ van de Ven, Arjan (2009-02-28). "Re: [ estable ] [ PARCHE 2/2 ] x86-64: seccomp: corregir agujero de llamada al sistema 32/64" . Lista de correo del kernel de Linux . Recuperado el 2 de agosto de 2013 .
- ↑ Torvalds, Linus (2009-02-28). "Re: [ PATCH 2/2 ] x86-64: seccomp: fix 32/64 syscall hole" . Linux Kernel Mailing List . Recuperado el 2013-08-02 .
- ↑ Gutschke, Markus (2009-05-06). "Re: [ PATCH 2/2 ] x86-64: seccomp: fix 32/64 syscall hole" . Recuperado el 2013-08-02 .
- ↑ Gutschke, Markus (2009-05-06). "Re: [ PATCH 2/2 ] x86-64: seccomp: fix 32/64 syscall hole" . Linux Kernel Mailing List . Recuperado el 2013-08-02 .
- ↑ "Firejail" . Firejail . Consultado el 26 de noviembre de 2016 .
- ↑ Evans, Chris (2012-07-04). "Chrome 20 en Linux y el sandboxing de Flash" . Recuperado el 2013-08-02 .
- ↑ Tinnes, Julien (2012-09-06). "Presentando el entorno aislado de Linux de próxima generación de Chrome" . Blog de cr0 . Consultado el 2013-08-02 .
- ↑ "Política de seguridad Snap" . Archivado del original el 4 de febrero de 2017. Consultado el 3 de febrero de 2017 .
- ↑ Evans, Chris (2012-04-09). "¡Ya está aquí el sandboxing del filtro vsftpd-3.0.0 y seccomp!" . Consultado el 2013-08-02 .
- ↑ "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 (2012-09-13). "Firefox Seccomp sandbox" . Mozilla Bugzilla . Recuperado el 2015-01-13 .
- ↑ Destuynder, Guillaume (2012-09-13). "Firefox Seccomp sandbox" . Mozilla Wiki . Recuperado el 2015-01-13 .
- ↑ "Registro de cambios de Tor" .
- ↑ "Compresión de imágenes Lepton: ahorro del 22 % sin pérdida de calidad en imágenes a 15 MB/s" . Blog de tecnología 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 del original el 21/12/2021 . Consultado el 18/12/2016 .
- ↑ "El modelo de seguridad de Flatpak – parte 1: Lo básico" . 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" .
- ↑ "Minicárcel [ LWN.net ] " . lwn.net . Consultado el 11-04-2017 .
- ↑ "core/trace/use_seccomp" . dev.exherbo.org . Consultado el 31 de mayo de 2021 .
- ↑ "Aislamiento de aplicaciones de archivos" . GitHub .
- ↑ "Implementación de Zathura seccomp" .
- ↑ "Implementación de seccomp del rastreador de Gnome" .
Enlaces externos
- Sitio web oficial (Archivado)
- El entorno aislado de Chromium de Google , LWN.net , agosto de 2009, por Jake Edge
- seccomp-nurse , un marco de trabajo de sandboxing 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 vulnerabilidades de seguridad
- Características del kernel de Linux
- Seguridad informática
- Ingeniería de ciberseguridad