A próxima versão do kernel Linux, a 7.2, incluirá a flag OPENAT2_REGULAR para a chamada de sistema openat2. Esta funcionalidade permite que os programas garantam que abrem apenas arquivos regulares, evitando que sejam redirecionados para dispositivos especiais como /dev/null ou FIFOs, que podem causar comportamentos de travamento inesperados e vulnerabilidades de segurança.
Como o OPENAT2_REGULAR funciona no kernel 🛡️
A flag OPENAT2_REGULAR atua como um filtro na chamada openat2. Quando ativada, o kernel verifica se o arquivo de destino é do tipo regular (S_IFREG) antes de permitir a abertura. Se o arquivo for um dispositivo de bloco, um FIFO ou um socket, a operação falha com o erro EISDIR ou EPERM. Esta verificação ocorre após resolver links simbólicos, fechando o caminho para ataques que usam links para apontar para dispositivos especiais. A implementação foi solicitada pelo grupo UAPI para proteger aplicações que processam arquivos de usuário.
Adeus aos sustos com /dev/null e os FIFOs travessos 😅
Até agora, um programa confiante podia abrir um arquivo e descobrir que era um FIFO que o deixava esperando dados para sempre, ou pior, um /dev/null que engolia toda a sua saída sem reclamar. Com o OPENAT2_REGULAR, esses sustos acabam: se o arquivo não for regular, o kernel diz não e o desenvolvedor economiza horas de depuração. É como colocar um filtro na entrada do disco para que apenas arquivos reais passem, sem fantasias de carnaval.