Eles encontraram uma maneira de contornar o SELinux

ignorar

Contornando efetivamente as políticas do SELinux

No final de maio passado, peixe Sean, um pesquisador de segurança cinformações compartilhadas eem seu blog sobre um método que ele encontrou para ignorar o módulo de segurança do SELinux.

Em seu blog, cEle compartilhou uma demonstração de como é possível contornar a proibição de carregar módulos do kernel, implementado em regras específicas do SELinux em um dos dispositivos estudados (não é especificado qual dispositivo é e quanto o problema afeta as regras do SELinux em firmware e distribuições).

Para quem não sabe SELinux (Security Enhanced Linux) deve saber que este eÉ um módulo de segurança para o kernel do Linux, o que melhora a segurança do sistema e, em caso de quebra de segurança, evita que ela se espalhe pelo sistema.

O SELinux funciona em três modos; "Desativar, Permissivo e Execução." No modo Disable, o SELinux permanece completamente desabilitado. Se o SELinux estiver ativado, ele estará no modo Permissivo ou no modo Executor. No modo permissivo, o SELinux monitorará apenas a interação. No modo Enforcing, o SELinux também filtrará a interação com o monitoramento.

Sua rigidez de segurança pode ser entendida pelo fato de que, com o SELinux, mesmo que o sistema seja comprometido, os arquivos que não recebem acesso não podem ser acessados.

Já tendo explicado muito superficialmente o SELinux, sobre o bypass Sean Pesce menciona que os módulos de bloqueio nas regras do SELinux envolvidas dependia de restringir o acesso à chamada do sistema módulo_finit, que permite que um módulo seja carregado de um arquivo e é usado em utilitários como insmod.

Recentemente, estive de olho em um dispositivo baseado em Linux não divulgado como um projeto pessoal de fim de semana. Usando algumas técnicas simples que não discutirei aqui, obtive acesso ao shell root. Para evitar revelar detalhes desnecessários sobre a implementação de destino, informações como nomes de arquivo e contextos do SELinux foram alteradas no artigo.

É mencionado que como tal, não é necessariamente obrigatório desabilitar o SELinux, mas para evitar muitas complicações, um módulo de kernel personalizado é carregado "seria melhor". Mas não neste caso, pois para ignorá-lo ele compartilha que primeiro decido clonar um dos módulos do kernel existentes do sistema de arquivos do dispositivo usando um script e que é corrigido na função module_init que também pode ser usada para carregar os módulos do kernel diretamente de um buffer na memória.

Conectando-me ao meu shell reverso, percebi rapidamente que o sistema estava com o SELinux ativado. Embora a política não fosse tão rigorosa quanto a política padrão que você pode encontrar em um dispositivo Android típico, era rigorosa o suficiente para me impedir de fazer muitas coisas úteis (por exemplo, montar sistemas de arquivos e acessar arquivos em /etc/ ) . Felizmente, consegui escrever e executar arquivos em /tmp/ , então ainda tinha uma maneira fácil de criar e executar ferramentas personalizadas.

Ele ainda menciona que existem duas chamadas de sistema diferentes que podem ser usadas para carregar um módulo do kernel: int init_module que carrega um módulo do kernel armazenado na memória, enquanto int módulo_finit carrega um módulo do kernel do disco.

Com isso, aproveita-se a possibilidade de carregar módulos do kernel, que podem ser compilados como módulos personalizados para fazer algo mais avançado e com as configurações necessárias, pode-se obter uma execução bem-sucedida do kernel com acesso ao espaço do usuário.

O contexto do SELinux não está sendo removido; em vez disso, estamos fazendo a transição para o contexto da tarefa de inicialização (de um modo geral, esse contexto provavelmente tem poucas ou nenhuma restrição).

Para demonstrar o método, um protótipo de trabalho foi preparado que permite a execução de código no nível do kernel carregando seu módulo e desativando completamente a proteção do SELinux, se você tiver acesso root limitado ao sistema usando o SELinux.

Por fim, se você estiver interessado em saber mais sobre o assunto, pode conferir os detalhes na publicação original em o seguinte link.