Articulo de referencia

seccomp

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 unidirecciona...

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 prctl(2)llamada al sistema usando el PR_SET_SECCOMPargumento, o (desde el kernel de Linux 3.17 [ 4 ] ) mediante la seccomp(2)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

  1. : "La llamada al sistema seccomp() opera sobre el estado de Computación Segura (seccomp)" Manual del Programador de Linux – Llamadas al Sistemaseccomp(2)   
  2. Corbet, Jonathan (2015-09-02). "Una visión general de seccomp" . lwn . Recuperado el 2017-10-05 .
  3. "Documentation/prctl/seccomp_filter.txt" . Consultado el 5 de octubre de 2017 .
  4. "Núcleo de Linux 3.17, Sección 11. Seguridad" . kernelnewbies.org . 5 de octubre de 2013. Consultado el 31 de marzo de 2015 .
  5. "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 .
  6. Arcangeli, Andrea (2007-06-14). " [ PARCHE 1 de 2 ] mover seccomp de /proc a un prctl" . Recuperado el 2013-08-02 .
  7. 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 .
  8. Corbet, Jonathan (11 de enero de 2012). "Otro nuevo enfoque para seccomp" . lwn . Consultado el 2 de agosto de 2013 .
  9. 1 2 "Notas de la versión de OpenSSH 6.0" . Consultado el 14 de octubre de 2013 .
  10. 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 .
  11. " [ 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 )
  12. "Filtro Seccomp en Android O" . Blog de desarrolladores de Android .
  13. "systemd.exec — Configuración del entorno de ejecución" . freedesktop.org . Consultado el 14 de octubre de 2017 .
  14. Otubo, Eduardo (2017-09-15). "QEMU Sandboxing new model pull request" . qemu-devel mailing list archive .
  15. 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 .
  16. 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 .
  17. Gutschke, Markus (2009-05-06). "Re: [ PATCH 2/2 ] x86-64: seccomp: fix 32/64 syscall hole" . Recuperado el 2013-08-02 .
  18. 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 .
  19. "Firejail" . Firejail . Consultado el 26 de noviembre de 2016 .
  20. Evans, Chris (2012-07-04). "Chrome 20 en Linux y el sandboxing de Flash" . Recuperado el 2013-08-02 .
  21. 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 .
  22. "Política de seguridad Snap" . Archivado del original el 4 de febrero de 2017. Consultado el 3 de febrero de 2017 .
  23. Evans, Chris (2012-04-09). "¡Ya está aquí el sandboxing del filtro vsftpd-3.0.0 y seccomp!" . Consultado el 2013-08-02 .
  24. "MBOX" . Consultado el 20 de mayo de 2014 .
  25. "LXD, un "hipervisor" para contenedores (basado en liblxc)" . 4 de noviembre de 2014. Consultado el 8 de noviembre de 2014 .
  26. "Hacia dónde vamos con LXD" . Consultado el 8 de noviembre de 2014 .
  27. Destuynder, Guillaume (2012-09-13). "Firefox Seccomp sandbox" . Mozilla Bugzilla . Recuperado el 2015-01-13 .
  28. Destuynder, Guillaume (2012-09-13). "Firefox Seccomp sandbox" . Mozilla Wiki . Recuperado el 2015-01-13 .
  29. "Registro de cambios de Tor" .
  30. "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 .
  31. "Kafel: Un lenguaje y una biblioteca para especificar políticas de filtrado de llamadas al sistema" .
  32. "Subgraph OS" . Subgraph . Consultado el 18 de diciembre de 2016 .
  33. "LoganCIJ16: El futuro de los sistemas operativos" . YouTube . Archivado del original el 21/12/2021 . Consultado el 18/12/2016 .
  34. "El modelo de seguridad de Flatpak – parte 1: Lo básico" . Consultado el 21 de enero de 2017 .
  35. "plástico de burbujas" . Consultado el 14 de abril de 2018 .
  36. "Sandboxing de Chromium OS - los proyectos de Chromium" .
  37. "Minicárcel [ LWN.net ] " . lwn.net . Consultado el 11-04-2017 .
  38. "core/trace/use_seccomp" . dev.exherbo.org . Consultado el 31 de mayo de 2021 .
  39. "Aislamiento de aplicaciones de archivos" . GitHub .
  40. "Implementación de Zathura seccomp" .
  41. "Implementación de seccomp del rastreador de Gnome" .
  • 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