Com a abertura da janela de merge para o Linux 6.14, uma das mudanças aguardadas é a introdução da flag AT_EXECVE_CHECK na chamada `execveat`. Desenvolvida por Kees Cook, engenheiro do Google, essa funcionalidade busca melhorar a consistência e a segurança no ambiente de execução ao verificar permissões de “executabilidade” para arquivos usados por interpretadores e bibliotecas dinâmicas.
O que é a AT_EXECVE_CHECK?
A AT_EXECVE_CHECK é uma flag que permite verificar se um arquivo pode ser executado de acordo com as políticas de segurança do kernel Linux. Ela é projetada para lidar com casos em que a execução não passa diretamente pelo kernel, como:
- Scripts executados por interpretadores (e.g., `sh script.sh`).
- Bibliotecas carregadas dinamicamente (e.g., `dlopen()`).
Com essa flag, é possível garantir que a execução direta (e.g., `./script.sh`) e indireta (e.g., `sh script.sh`) tenham os mesmos requisitos de permissão, aumentando a consistência e a segurança.
Principais funcionalidades da AT_EXECVE_CHECK
1. Verificação de permissões de execução
Ao usar a flag, o sistema verifica se o arquivo é executável sem considerar dependências externas, como bibliotecas ou interpreters.
2. Prevenção de condições de corrida
Combinando a flag AT_EXECVE_CHECK com AT_EMPTY_PATH, é possível realizar a verificação diretamente via descritor de arquivo, evitando problemas de time-of-check to time-of-use (TOCTOU).
3. Aplicação em ambientes seguros
Em ambientes que utilizam o recurso SECBIT_EXEC_RESTRICT_FILE
ou SECBIT_EXEC_DENY_INTERACTIVE
, essa flag pode ser usada para reforçar políticas que exigem execução apenas de códigos confiáveis.
Benefícios para a segurança no Linux
A introdução da AT_EXECVE_CHECK representa um avanço significativo para fortalecer a segurança no kernel Linux. Entre os benefícios estão:
- Consistência: Garante que diferentes métodos de execução sigam as mesmas políticas de segurança.
- Controle granular: Permite que bibliotecas dinâmicas e scripts sejam validados antes da execução.
- Logs aprimorados: Possibilidade de adicionar informações detalhadas aos registros de acesso.
Próximos passos
A AT_EXECVE_CHECK passou pelo ciclo “-next” no Linux e já foi amplamente revisada e testada. Agora, o pull request enviado por Kees Cook aguarda aprovação de Linus Torvalds para ser incluído na próxima versão do kernel. Caso aprovado, a funcionalidade estará disponível no Linux 6.14.
Mais informações estão disponíveis no arquivo da lista de discussão.
Conclusão
A flag AT_EXECVE_CHECK é uma adição promissora ao kernel Linux, oferecendo novas ferramentas para aprimorar a segurança e a consistência em ambientes de execução. Essa funcionalidade destaca o compromisso contínuo da comunidade em tornar o Linux mais seguro para todos os usuários.