Vulnerabilidades nos editores de texto Vim e GNU Emacs, descobertas com o auxílio do assistente Claude, permitem a execução remota de código apenas ao abrir um arquivo.
O assistente também criou diversas versões de exploits de prova de conceito (PoC), aprimorou-os e sugeriu formas de mitigar essas falhas de segurança.
Vim e GNU Emacs são editores de texto programáveis amplamente usados por desenvolvedores e administradores de sistemas para edição de código, fluxos de trabalho no terminal e automação por scripts.
O Vim, em especial, é muito popular no ambiente DevOps e vem instalado por padrão na maior parte das distribuições Linux para servidores, sistemas embarcados e macOS.
Hung Nguyen, pesquisador da Calif, uma empresa boutique de cibersegurança focada em red teaming de IA e engenharia de segurança, identificou as falhas no Vim após pedir ao Claude que procurasse uma vulnerabilidade zero-day de execução remota de código (RCE) acionada pela abertura de um arquivo.
O assistente analisou o código-fonte do Vim, detectando a ausência de verificações de segurança e problemas no tratamento de modelines, que permitem a execução de código incorporado no arquivo ao ser aberto.
Modeline é uma linha de texto no início do arquivo que orienta o Vim sobre como manipulá-lo.
Embora o código devesse rodar em sandbox, uma falha adicional permitiu que ele ignorasse essa restrição e executasse comandos com os privilégios do usuário atual.
Essa vulnerabilidade ainda não recebeu um identificador CVE e afeta todas as versões do Vim até a 9.2.0271.
Nguyen comunicou o problema aos mantenedores do Vim, que prontamente lançaram um patch na versão 9.2.0272.
Segundo o time do Vim, o ataque é simples: basta que a vítima abra um arquivo especialmente criado para explorar a falha.
“Um invasor que consiga entregar um arquivo malicioso à vítima obtém a execução arbitrária de comandos com os privilégios do usuário que está rodando o Vim”, alerta o boletim oficial.
No caso do GNU Emacs, a vulnerabilidade persiste porque seus desenvolvedores atribuem a responsabilidade à equipe do Git.
O problema está na integração de controle de versão do GNU Emacs (vc-git).
Ao abrir um arquivo, operações do Git são disparadas via vc-refresh-state, que faz o Git ler o arquivo .git/config e executar um programa core.fsmonitor definido pelo usuário.
Isso pode ser explorado para rodar comandos arbitrários.
Um cenário de ataque criado pelo pesquisador consiste em distribuir um arquivo compactado (por exemplo, por e-mail ou drive compartilhado) contendo um diretório oculto .git/ com um arquivo de configuração apontando para um script executável.
Quando a vítima extrai o arquivo e abre o texto no GNU Emacs, a payload é executada sem nenhum indicativo visível na configuração padrão do editor.
Os mantenedores do GNU Emacs consideram essa uma falha do Git, e não do editor, pois o ambiente apenas dispara a ação perigosa executada pelo Git, que lê a configuração controlada pelo atacante e roda um programa a partir dela.
Embora esse argumento seja tecnicamente correto, já que nada é executado diretamente no GNU Emacs, o risco para o usuário é real, pois o editor executa automaticamente o Git em diretórios não confiáveis sem neutralizar opções perigosas, sem pedir consentimento do usuário ou implementar sandbox.
Nguyen sugeriu que o GNU Emacs poderia alterar suas chamadas ao Git para bloquear explicitamente a opção core.fsmonitor, evitando que scripts e payloads perigosos sejam executados automaticamente ao abrir um arquivo.
Como a falha ainda não foi corrigida na versão mais recente do GNU Emacs, os usuários devem redobrar a atenção ao abrir arquivos de fontes desconhecidas ou baixados da internet.
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...