Valor real de los modelos MAC en Linux
He leído acerca de MAC vs. DAC en Internet, pero todavía no entiendo, contra qué tipo de ataque es imposible protegerse si uno solo usa las capacidades DAC + en comparación con las capacidades MAC + DAC +. Si un proceso no se ejecuta como root y carece de CAP_DAC_OVERRIDE, CAP_FOWNER y otras capacidades peligrosas, no puede superar la propiedad ya asignada y las ACL de los recursos que utiliza. Por otro lado, si un proceso se ejecuta como root y tiene CAP_MAC_ADMIN, puede sobrescribir el contexto de seguridad impuesto por MAC.
Entonces, ¿MAC es "solo una capa adicional de protección" sin ninguna ventaja real en el sistema Linux moderno?
Update1 Agregaré aquí mis "respuestas" a argumentos particulares aquí. Supongo que ninguno de los procesos se ejecuta como root y tiene capacidades innecesarias (excepto los procesos / scripts de inicio del sistema).
Un argumento : puede proteger un servidor web de ejecutar comandos de shell arbitrarios.
Respuesta : (Dejando de lado las aplicaciones web en contenedores), se podría agregar una ACL de autorización para todos los comandos a los que puede acceder el UID / GID del servidor y una ACL de prohibición para el resto de los comandos del host.
Un argumento : un usuario puede tener un archivo con permisos 0777 [y esencialmente filtrarlo a todos en el sistema].
Respuesta : La secuencia de comandos de inicio del sistema puede establecer la ACL predeterminada en el directorio donde se crea este archivo, de modo que lo que sea que el proceso de usuario cree en ese directorio siempre obtendrá esas ACL heredadas. En general, tener 7 en "otros" parece una mala idea y si el archivo obtiene tales permisos, la política discrecional podría aplicarse aquí en el lanzamiento del sistema (instalación de distribución), o incluso al inicio cada vez que se inicie el sistema.
Respuestas
La distinción está en quién decide los permisos sobre los archivos. Un DAC le da al propietario del archivo el control total de los permisos del archivo. MAC usa etiquetas para imponer un control centralizado, lo que significa que hay una capa adicional de seguridad que no depende del propietario del archivo para decidir. Como ejemplo, un usuario puede tener un archivo con permisos rwxrwxrwx (777), pero MAC aplica su rwx solo a un conjunto específico de etiquetas de seguridad, anulando efectivamente DAC.
DAC no cubre todas las posibles situaciones de permisos de seguridad que MAC haría. Las ACL son muy flexibles en comparación con DAC.
En aras de la simplicidad, DAC solo le permite controlar rwx, ¿verdad? Con DAC, puede ser mucho más explícito y en el nivel de llamada al sistema controlar lo que está permitido. Por ejemplo, podría permitir que alguien agregue un archivo, pero no lo sobrescriba ni lo elimine.