7. Primeras aproximaciones,
Klik:Desarrollado por Simon Peter desde 2004
Ficheros .cmg con directorios de aplicaciones
autocontenidos, comprimidos en un sistema de ficheros
CramFS (< 272MB) o iso9660/zisofs
Se hace uso de dispositivos de loopback (/dev/loopX)
para montar los ficheros .cmg
Para solucionar la relocalización de ficheros se parchea
los binarios
Se basa en Debian estable
8. LinuxPortableApp, sucesor de
KlikRefina la implementación de Klik (y Klik2). Data de 2010
Se usa FUSE (Filesystem in Userspace) en lugar de
dispositivos de loopback
Se incluye una aplicación AppImageKit para la creación
de los bundles, inspirada en ideas de Glick
http://portablelinuxapps.org/
ELF embbeded
Is ISO9660
header
ISO9660 zisofs compressed data containing
AppRun
.DirIcon
SomeAppFile
12. OSTree
Los bundles se distribuyen mediante OSTrees
Como git, pero para directorios de sistemas operativos
Una aplicación es un directorio con ficheros que necesita
16. Ejecución de una aplicación
Se hace uso de filesystem namespaces
Los ficheros del runtime se colocan en /usr
Los ficheros de aplicación se colocan en /app
Configuración y otros en
~/.var/app/org.examplo/hola-mundo
17. Sandboxing
Modelo tradicional unix:
- Máquinas compartidas
- Múltiples usuarios
La seguridad se centra en:
- Proteger unos usuarios de otros
- Proteger a los administradores de los usuarios
- Plena confianza en las fuentes de distribución software
18. Sandboxing
Modelo actual más común:
- Un solo usuario
- Un portátil
- El usuario es también el administrador
- Se quiere instalar desde varias fuentes de software
La seguridad necesita:
- Proteger a los usuarios de las aplicaciones
- Ejecutar las aplicaciones con los menores privilegios
posibles
- Proteger unas aplicaciones de otras
- Evitar el secuestro de tu máquina (botnet, nodo spam,
bitcoin miner encubierto, etc)
19. Elementos a proteger
- No dar visbilidad a los ficheros de usuario
- Evitar ataques de escala de privilegios
- Acceder a la red
- El acceso a otros procesos
- Acceso a recursos de otros usuarios
- Proteger de acceso a hardware
- Vulnerabilidades del Kernel
20. X11
- Se comunica por el socket /tmp/.X11-unix/X0
- Usado por la inmesa mayoria de los programas
- Inseguro por diseño
for i in $(xdotool search --onlyvisible --class terminal); do
xdotool windowactivate --sync $i
type $'echo evil was here!n';
done
21. Wayland
- Se comunica por el socket /run/user/1000/wayland-0t
- Procolo diseñado para ser seguro
- Es el futuro de los escritorio libres
22. PulseAudio
- Se comunica por el socket /run/user/1000/pulse/native
- Reproduce y graba sonido
- No es seguro, pero se está arreglando
23. D-Bus session bus
La aplicaciones ven un filtrado del bus
Userspace proxy
Kdbus
Permisos por defecto
Puede tener “com.ejemplo.hola-mundo” y I
“com.ejemplo.hola-mundo.*”
Puede hablar a “org.freedesktop.Dbus”
Puede responder a cualquiere mensaje de este
No puede ver otros nombres
Extensible en app/runtime metadata
Opcinalmente, acceso a todo el bus
25. Configuración tipo
- Sin acceso al directorio home
- Sólo con permisos de escritura al directorio datos de la
aplicación
- Wayland
- Sólo con soporte de salida con PulseAudio
- Acceso filtrado al bus de sesión
- Quizás con acceso a la red
26. Portales
- Servicio ejecuándose en la sesión
- Se accede por dbus
- Diseñado para ser usado de forma segura desde el
sandbox
- Extiende los que una aplicación sandbox puede hacer
- Wayland, PulseAudio y Pinos son Portales
29. References
Alexander Larsson - Gnome SDK - a better way to ship apps.
https://www.youtube.com/watch?v=t-2a_XYJPEY
https://wiki.gnome.org/Projects/SandboxedApps
En concreto nos estamos refiriendo a aplicaciones de escritorio, no web apps
Y una aplicación es un programa que permite al usuario realizar una tarea
Es una definición muy genérica, quizás lo mejor es realizar opuesta
El sistema operativo no es una aplicación
Una definición más exacta podría ser que un sistema operativo es el mínimo siftware necesario para tener una abstracción del hardware