Vulnerabilidades de raíz local no kit de ferramentas de xestión de paquetes Snap

Qualys identificou dúas vulnerabilidades (CVE-2021-44731, CVE-2021-44730) na utilidade snap-confine, subministrada coa marca raíz SUID e chamada polo proceso snapd para crear un ambiente executable para aplicacións entregadas en paquetes autónomos. en formato snap. As vulnerabilidades permiten que un usuario local sen privilexios execute código con privilexios de root no sistema. Os problemas resólvense na actualización do paquete snapd de hoxe para Ubuntu 21.10, 20.04 e 18.04.

A primeira vulnerabilidade (CVE-2021-44730) permite un ataque mediante a manipulación de ligazóns ríxidas, pero require desactivar a protección da ligazón ríxida do sistema (configurando sysctl fs.protected_hardlinks en 0). O problema é causado pola verificación incorrecta da localización dos ficheiros executables dos programas auxiliares snap-update-ns e snap-discard-ns executados como root. O camiño a estes ficheiros foi calculado na función sc_open_snapd_tool() baseándose na súa propia ruta de /proc/self/exe, o que che permite crear unha ligazón ríxida para limitar no seu directorio e colocar as súas propias versións do snap- update-ns e snap- utilidades neste directorio discard-ns. Despois de executar a través dunha ligazón dura, snap-confine con dereitos de root lanzará os ficheiros snap-update-ns e snap-discard-ns desde o directorio actual, substituídos polo atacante.

A segunda vulnerabilidade é causada por unha condición de carreira e pódese explotar na configuración predeterminada do escritorio de Ubuntu. Para que o exploit funcione correctamente en Ubuntu Server, debes seleccionar un dos paquetes da sección "Featured Server Snaps" durante a instalación. A condición de carreira é evidente na función setup_private_mount() chamada durante a preparación do espazo de nomes do punto de montaxe para o paquete snap. Esta función crea un directorio temporal “/tmp/snap.$SNAP_NAME/tmp” ou usa un existente para vincular os directorios de montaxe para un paquete snap nel.

Dado que o nome do directorio temporal é previsible, un atacante pode substituír o seu contido por unha ligazón simbólica despois de comprobar o propietario, pero antes de chamar á chamada do sistema de montaxe. Por exemplo, pode crear unha ligazón simbólica "/tmp/snap.lxd/tmp" no directorio /tmp/snap.lxd que apunte a un directorio arbitrario, e unha chamada a mount() seguirá a ligazón simbólica e montará o directorio no directorio. espazo de nomes snap. Do mesmo xeito, pode montar o seu contido en /var/lib e, substituíndo /var/lib/snapd/mount/snap.snap-store.user-fstab, organizar o montaxe do seu directorio /etc no espazo de nomes de o paquete snap para organizar a carga da súa biblioteca con dereitos de root substituíndo /etc/ld.so.preload.

Nótase que a creación dun exploit resultou ser unha tarefa non trivial, xa que a utilidade snap-confine está escrita en Go usando técnicas de programación seguras, ten protección baseada nos perfís AppArmor, filtra as chamadas do sistema en función do mecanismo seccomp e usa o espazo de nomes de montaxe para o illamento. Non obstante, os investigadores puideron preparar un exploit de traballo para obter dereitos de root no sistema. O código de explotación publicarase nunhas semanas despois de que os usuarios instalen as actualizacións proporcionadas.

Fonte: opennet.ru

Engadir un comentario