lunes, 22 de diciembre de 2014

Esta navidad vuelve el Grinch... para escalar privilegios en tu Linux


Llega la navidad y con ella vuelve el Grinch, esta vez como una vulnerabilidad en el nuevo sistema de autenticación de Linux que permite el escalado de privilegios a través de wheel

Ya sabes que Wheel es un usuario especial que controla el acceso al comando su. Cuando instalamos un sistema Linux, el usuario por defecto es asignado al grupo Wheel para poder realizar tareas administrativas.

Los Linux modernos implementan nuevos métodos de autenticación y autorización para evitar una gran variedad de vectores de ataque introducidos con binarios setuid aleatorios. Polkit (Policy Kit), una API de autorización para los programas privilegiados, es uno de los principales impulsores para dejar de usar los binarios setuid.

Por otro lado, PackageKit es un conjunto de herramientas que permite una capa de abstracción (sobre D-BUS) para trabajar a través de sistemas de gestión de paquetes y arquitecturas. Es decir, intenta facilitar el uso de gestores como APT, Yum, pacman y otros. ¿Adivináis que backend utiliza para la autenticación de usuarios? Sí, utiliza Polkit.


Sigamos... En Fedora, puede que DNF o Yum no permita que un usuario específico pueda instalar paquetes, pero sin embargo las reglas polkit son independientes y podrían permitírselo. Sus reglas por defecto están escritas en simple javascript y permiten ser admin a cualquier usuario dentro del grupo Wheel. Por ejemplo:

/etc/polkit-1/rules.d/50-default.rules



/* -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- */
// DO NOT EDIT THIS FILE, it will be overwritten on update
//
// Default rules for polkit
//
// See the polkit(8) man page for more information
// about configuring polkit.

polkit.addAdminRule(function(action, subject) {
   return [“unix-group:wheel”];
});

Entonces resumiendo, los usuarios en el grupo wheel podrán realizar tareas administrativas en el sistema y ejecutar sudo. Esto significa que, abusando de los privilegios de este grupo wheel, no necesitaremos root o introducir la contraseña (si ejecutamos sudo) para realizar acciones que requieren privilegios.

Por ejemplo, vemos que un usuario dentro del grupo wheel no puede instalar un programa porque no es root:



]$ id
uid=1000(blahman) gid=1000(blahman) groups=1000(blahman),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

]$ Yum install cowsay
Loaded plugins: auto-update-debuginfo, langpacks, refresh-packagekit
You need to be root to perform this command.

Y dnf tampoco funciona por los permisos del filesystem:



]$ dnf install cowsay
Dependencies resolved.
…
Error: Unable to initialize yumdb history: [Errno 13] Permission denied: ‘//var/lib/dnf’

Pero si ejecutamos pkcon...



]$ pkcon install cowsay

Resolving                     [=========================]        
Querying                     [=========================]        
Testing changes               [=========================]        
Finished                     [=========================]        
Installing                   [=========================]        
Resolving dependencies       [=========================]        
Downloading packages         [=========================]        
Testing changes               [=========================]        
Installing packages          [=========================]        
Finished                     [=========================]    

]$ cowsay got root?
______________
< got root? >
———–
       \   ^__^
         \ (oo)\_______
           (__)\       )\/\
               ||—-w |
               ||     ||


Fuente

No hay comentarios:

Publicar un comentario