A Calif, uma empresa de pesquisa em segurança, publicou detalhes de uma vulnerabilidade no OpenBSD que remonta a aproximadamente 37 anos, até as fontes originais do BSD. Um contador de anexos de memória compartilhada foi definido como um short de 16 bits com sinal. Criar repetidamente um processo com registros de anexo de memória compartilhada podia fazer o contador ultrapassar seu valor máximo de 32.767, fazendo-o dar a volta para um valor negativo. Esse estouro de inteiro podia levar a um use-after-free por meio de uma condição de corrida. Combinado com uma escrita fora dos limites separada no kernel, permitia a escalada local de privilégios até root. As falhas foram corrigidas nas errata 026 e 018.
Os pesquisadores descreveram um caminho de exploração que obteve root local no OpenBSD com KARL, SMAP e SMEP habilitados, sem usar uma vulnerabilidade de divulgação de informações. O método consistiu em mapear 127 segmentos de memória compartilhada System V, desmapeá-los e criar 259 processos para fazer o contador de anexos dar a volta. Em seguida, foram usados o heap grooming e uma condição de corrida para alinhar alocações, corromper uma estrutura multicast e, por fim, obter execução de código no kernel sobrescrevendo um ponteiro previsível do kernel.
A exploração dependeu de uma primitiva de escrita write-what-where: a escrita veio de uma operação TAILQ_REMOVE, o alvo era memória userland tornada acessível em modo supervisor, e a localização era um ponteiro previsível do kernel. O KARL do OpenBSD randomiza endereços de funções e dados, mas os alocadores de memória do kernel continuam determinísticos, o que tornou certas alocações do início do boot alvos confiáveis.
Para reduzir o risco de ataques semelhantes, os autores sugerem medidas como o safe-unlinking, que verifica os invariantes das listas duplamente encadeadas antes de executar as escritas de desvinculação e interrompe a execução com abort ou panic se forem violados. A Calif afirmou que reporta regularmente vulnerabilidades a projetos de código aberto, muitas vezes com patches sugeridos.
Fonte: Hacker News · Resumido por HeadlinesBriefing