Uma vulnerabilidade grave que permitia a execução de código arbitrário no nível do kernel foi recentemente corrigida no Kernel Linux. O problema afetava especificamente sistemas baseados na arquitetura OpenRISC, originado por uma falha de validação de ponteiros de memória em uma chamada de sistema (syscall).
O patch de correção, submetido pelo desenvolvedor Ali Ahmet Memis e aceito pelo mantenedor Stafford Horne no último fim de semana de agosto de 2026, já foi integrado à árvore principal (mainline) mantida por Linus Torvalds.
O que isso significa na prática
Embora a expressão “execução de código no kernel” represente o nível mais alto de perigo em sistemas operacionais, o impacto no mundo real é bastante restrito.
O OpenRISC é uma arquitetura de processadores de código aberto voltada majoritariamente para sistemas embarcados, pesquisa acadêmica e hardwares customizados (FPGAs). Usuários de computadores tradicionais, servidores convencionais e smartphones, que utilizam processadores x86_64 (Intel e AMD) ou ARM, não são afetados por este problema em absoluto.
Entendendo a vulnerabilidade do syscall or1k_atomic

A raiz do problema residia no arquivo de entrada da arquitetura OpenRISC (arch/openrisc/kernel/entry.S). A falha ocorria na chamada de sistema sys_or1k_atomic, mapeada como o syscall número 244 na interface binária de aplicação (ABI) do OpenRISC.
A função desse syscall é receber dois ponteiros de usuário e trocar as palavras (words) para as quais eles apontam utilizando código assembly feito à mão. O erro crítico de design foi que esses ponteiros não passavam pela verificação padrão access_ok(), uma macro de segurança fundamental no Kernel Linux usada para garantir que o espaço de memória solicitado realmente pertence ao usuário e não ao núcleo do sistema.
Sem essa barreira, um processo comum sem privilégios administrativos poderia passar um endereço de memória pertencente ao próprio kernel como parâmetro. Como a leitura e a gravação ocorriam de forma direta, o sistema permitia a substituição de dados vitais do kernel. O autor do patch observou que um invasor poderia sobrescrever a tabela de chamadas de sistema (sys_call_table), resultando no controle total do sistema através da execução de código malicioso no contexto de maior privilégio do hardware.
A solução implementada
A correção introduzida por Memis resolve a falha em duas frentes. Primeiro, o código assembly foi alterado para validar rigorosamente se ambos os ponteiros apontam para endereços dentro do limite do espaço de usuário (OR1K_ATOMIC_ADDR_LIMIT) antes de entrar na seção crítica que desabilita interrupções.
Segundo, foram adicionados tratamentos de exceção para os acessos à memória. Se o sistema tentar acessar um endereço de usuário que seja válido teoricamente, mas não mapeado no momento da execução, o kernel agora retornará o erro padrão -EFAULT em vez de falhar silenciosamente ou permitir o acesso indevido.
Histórico e disponibilidade
O bug estava presente no Kernel Linux desde os primeiros commits que adicionaram o suporte inicial de boot ao OpenRISC, marcando uma falha que permaneceu dormente por anos no código da arquitetura.
Com a integração na ramificação master, o commit foi sinalizado para a lista stable@vger.kernel.org. Isso garante que a correção será portada (backported) para todas as versões estáveis do Kernel Linux que ainda recebem suporte oficial nas próximas semanas, protegendo dispositivos embarcados que dependem dessa infraestrutura.
