Endurecimiento

Sandbox de Aplicaciones en Linux con Bubblewrap, Firejail y Flatpak

Por Equipe Basilisk ·

Como el equipo Basilisk aisla navegadores, lectores de PDF y herramientas de riesgo en escritorios Linux con perfiles de sandbox auditados y reproducibles.

Un investigador del equipo Basilisk abrio un PDF de bug bounty en Evince y treinta segundos despues auditd registro un intento de lectura sobre ~/.ssh/id_ed25519. El proceso no tenia ningun motivo para tocar ese directorio, pero lo intento. Aquel incidente, que termino bien porque Evince corria dentro de un perfil Bubblewrap restringido, es la razon de este post. Sandbox en escritorio Linux no es teatro de seguridad: es la capa que separa un exploit molesto de una exfiltracion silenciosa de claves SSH, tokens de nube y cookies de sesion. Vamos a aterrizar Bubblewrap, Firejail y Flatpak con perfiles probados en produccion OPSEC para Investigadores de Seguridad: Modelo de Amenaza Personal.

Bubblewrap (bwrap) es la base. Es el runtime de contenedor sin privilegios que Flatpak usa por debajo, mantenido por el proyecto containers y auditable en pocos cientos de lineas de C. Un perfil minimo para abrir PDFs seria: `bwrap --ro-bind /usr /usr --ro-bind /etc /etc --proc /proc --dev /dev --tmpfs /tmp --bind ~/Downloads/sandbox-pdf /home/user --unshare-all --share-net /usr/bin/zathura archivo.pdf`. Fijate en el `--unshare-all` seguido de `--share-net` solo si hace falta, y en el bind de un directorio especifico en lugar del $HOME entero. Ese patron de allow-list es lo que separa sandbox real de placebo, y combina bien con investigaciones DFIR DFIR en Linux: Triaje en Vivo con UAC y Velociraptor.

Firejail es de mas alto nivel y trae cerca de 1.000 perfiles listos en /etc/firejail. Para uso diario en una estacion de investigador, el trio firefox.profile, thunderbird.profile y libreoffice.profile cubre el 80% de la superficie de ataque. Empieza con `firejail --profile=/etc/firejail/firefox.profile --private-tmp --dns=9.9.9.9 firefox`. Habilita AppArmor con `firejail --apparmor` y verifica el estado con `firejail --list`. El talon de Aquiles historico de Firejail es el binario SUID; si te incomoda, instala con `setcap cap_sys_admin+ep` en kernels recientes o migra a Bubblewrap puro. Para abrir documentos sospechosos de phishing, combina con limpieza de metadatos antes de cualquier reenvio Higiene de Metadatos: Limpiando EXIF, PDF y Office antes de Publicar.

Flatpak entrega aplicaciones empaquetadas con un manifiesto declarativo de permisos. El comando que conviene memorizar es `flatpak override --user --nofilesystem=home org.mozilla.firefox` seguido de `flatpak override --user --filesystem=~/Downloads org.mozilla.firefox`. Eso revoca el acceso al $HOME entero y devuelve solo Downloads. Para auditar lo que cada app pide, usa `flatpak info --show-permissions org.telegram.desktop` o abre Flatseal. Apps como Zoom, Slack y Discord corriendo via Flatpak con `--nofilesystem=host` y `--nodevice=all` reducen drasticamente el dano de una CVE de renderizado. Encaja directo en hardening de estaciones de alto riesgo Hardening de Linux Server: CIS Benchmark Aplicado sin Romper Produccion.

Escenarios practicos que corremos en Basilisk: el analisis de una muestra recibida del cliente vive en una VM dedicada con Remnux, no en sandbox de escritorio Analisis de Malware en Lab Aislado: Setup Seguro con FlareVM y REMnux. Pero leer PDF de informe, abrir docx de cliente, navegar sitios de bug bounty y probar una extension de navegador suceden todos en perfiles Bubblewrap con namespace de red separado via slirp4netns. Para clientes que exigen comunicacion por Signal Desktop, corremos la version Flatpak con `--nofilesystem=home --filesystem=xdg-download` y MFA por hardware token pasado via `--device=all` solo durante el emparejamiento OPSEC de Comunicacion: Signal, SimpleX y Session Comparados Tecnicamente. Cada perfil vive en git, revisado en pull request, igual que codigo de produccion.

Tres trampas comunes. Primera: saltarte `--unshare-user-try` o `--unshare-net` porque la app se queja, y terminas con sandbox de papel. Soluciona aislando primero con `--share-net` y recortando despues, monitoreando con `strace -f -e network`. Segunda: confiar que Flatpak solo te protege contra escape via portal D-Bus mal configurado; revisa portales con `flatpak permissions`. Tercera: dejar el microfono abierto. Lanza `flatpak override --nodevice=all` global y libera caso a caso. Para verificacion continua, integra los perfiles con reglas Sigma que detectan intentos de escape Threat Hunting con Sigma y Elastic: Del Indicador a la Regla de Deteccion y revisa trimestralmente, porque los manifiestos cambian con cada update.

Takeaway practico: empieza hoy ejecutando `flatpak override --user --nofilesystem=home` en cada app Flatpak instalada, cambia tu lector de PDF por defecto por un wrapper Bubblewrap con bind solo en ~/Downloads, y versiona esos scripts en un repo privado. En una tarde subes la barra de explotacion de tu escritorio mas que un ano de parches reactivos. Sandbox bien configurado no impide toda intrusion, pero garantiza que la primera CVE de navegador del mes no se convierta en incidente de claves SSH filtradas. El ROI de esa configuracion se mide en incidentes que no ocurrieron.

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly