Uma correção imprudente levou a uma eliminação incompleta da vulnerabilidade Spectre no núcleo do Linux

Os desenvolvedores do projeto Grsecurity compartilharam contam uma história instrutiva que demonstra como a remoção descuidada de avisos do compilador pode levar à introdução de vulnerabilidades no código. No final de maio, foi proposta uma correção para um novo vetor de exploração da vulnerabilidade Spectre através da chamada de sistema ptrace.

Durante os testes do patch, os desenvolvedores notaram que, ao compilar, o compilador emitia um aviso sobre a mistura de código e definições (a estrutura foi definida após o código que atribuía um valor a uma variável existente):

int index = n;
if (n ptrace_bps[index];

Linus aceitou a correção na sua branch master, eliminando o aviso por meio do deslocamento da definição da variável para o bloco if:

if (n ptrace_bps[index];

Em julho, a correção também foi portado para as branches estáveis do núcleo 4.4, 4.9, 4.14, 4.19 e 5.2. Mantenedores das branches estáveis também enfrentaram o aviso e, em vez de verificar se ele já havia sido resolvido na branch master de Linus, realizaram a correção manualmente. O problema é que simplesmente movimentaram a definição da estrutura para cima, de modo que a chamada array_index_nospec, que proporciona diretamente a proteção contra a vulnerabilidade, deixou de ser utilizada na definição da estrutura, e em vez da variável 'index', a variável 'n' passou a ser utilizada:

int index = n;
if (n ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster