Eles detectaram uma vulnerabilidade no firejail que permitiu o acesso root ao sistema

Recentemente divulgaram a notícia de que uma vulnerabilidade foi identificada (já listado em CVE-2022-31214) na ferramenta de sandboxing do aplicativo Firejail, é detalhado que a falha detectada pode permitir que um usuário local se torne root no sistema host.

O Firejail usa o mecanismo de namespaces, AppArmor e filtragem de chamadas do sistema (seccomp-bpf) no Linux para isolamento, mas requer privilégios elevados para configurar uma versão isolada, que é obtida ligando-se ao utilitário suid root flag ou executando com sudo.

A vulnerabilidade é devido a um erro na lógica da opção “–join=" », projetado para se conectar a um ambiente isolado que já está em execução (semelhante ao comando login para um ambiente sandbox) com o ambiente definido pelo ID do processo em execução nele. Na fase de pré-lançamento, o firejail detecta os privilégios do processo especificado e os aplica ao novo processo que ingressa no ambiente com a opção “–join”.

Antes de conectar, verifica se o processo especificado está sendo executado no ambiente firejail. Esta verificação avalia a existência do arquivo /run/firejail/mnt/join. Para explorar a vulnerabilidade, um invasor pode simular um ambiente firejail fictício não isolado usando o namespace mount e, em seguida, conectando-se a ele usando a opção “–join”.

Se a configuração não habilitar o modo de proibição de obtenção de privilégios adicionais em novos processos (prctl NO_NEW_PRIVS), o firejail conectará o usuário a um ambiente fictício e tentará aplicar a configuração de namespace de usuário de identificadores de usuário (namespace user) do processo init ( PID 1).

A maior parte da lógica por trás da função de junção está no código-fonte do arquivo `src/firejail/join.c`. Seções críticas de código são executadas com privilégios elevados (uid efetivo 0). O ID do processo passado como um comando o argumento de linha é inspecionado para determinar se é um rrecipiente e determinar algumas de suas propriedades que Também se aplica ao novo processo de entrada.

Os principais critérios para decidir se deve participar do processo de destino sucesso é a presença de um arquivo no namespace de montagem do destino, processo encontrado em /run/firejail/mnt/join. Essa verificação é feita no ffunção `is_ready_for_join()`. O arquivo é aberto usando lOs sinalizadores `O_RDONLY|O_CLOEXEC` e o resultado do rastreamento `fstat()` devem atender aos seguintes requisitos:

– o arquivo deve ser um arquivo normal.
– o arquivo deve ser de propriedade do userid 0 (como visto a partir do usuário inicial
espaço de nomes).
– o arquivo deve ter 1 byte de tamanho.

Como resultado, o processo conectado via "firejail --join" terminará no namespace ID de usuário original do usuário com privilégios inalterados, mas em um espaço de ponto de montagem diferente, completamente controlado pelo invasor.

O shell "unido" resultante agora viverá no usuário inicial
namespace, ainda mantendo os privilégios de usuário normais originais, no entanto o namespace mount será aquele controlado pelo invasor. Já que
a configuração nonewprivs não foi aplicada, o invasor pode agora
execute programas setuid-root dentro deste namespace de montagem

Em particular, um invasor pode executar programas setuid-root no espaço do ponto de montagem que criou, permitindo, por exemplo, alterar a configuração do /etc/sudoers ou os parâmetros do PAM em sua hierarquia de arquivos e obter a capacidade de executar comandos como root usando sudo ou seus utilitários.

Por fim, vale ressaltar que foi desenvolvido um exploit funcional, testado nas versões atuais do openSUSE, Debian, Arch, Gentoo e Fedora com o utilitário firejail instalado.

O problema foi corrigido na versão 0.9.70 do firejail. Como uma correção de segurança, você pode definir a configuração (/etc/firejail/firejail.config) para "no join" e "force-nonewprivs yes".

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.