Problemas de segurança em patches propostos por um funcionário da Huawei para proteger o kernel Linux

Desenvolvedores do projeto Grsecurity chamou atenção à presença de uma vulnerabilidade trivialmente explorável no conjunto de patches HKSP (Huawei Kernel Self Protection), alguns dias atrás proposto para melhorar a segurança do kernel Linux. A situação lembra caso com Samsung, em que uma tentativa de melhorar a segurança do sistema levou ao surgimento de uma nova vulnerabilidade e facilitou o comprometimento de dispositivos.

Os patches HKSP foram publicados por um funcionário da Huawei, incluem uma menção à Huawei no perfil do GitHub e usam a palavra Huawei no nome do projeto (HKSP - Huawei Kernel Self Protection). Ao mesmo tempo, representantes da Huawei negaram a ligação do projeto HKSP com a empresa e afirmaram que o código foi desenvolvido por iniciativa pessoal do funcionário, não é um projeto oficial da Huawei e não é utilizado nos produtos da empresa. Sobre Página GitHub HKSP retroativamente após a descoberta vulnerabilidades também foi adicionado observo que o projeto está sendo desenvolvido em meu tempo livre para fins de pesquisa.

HKSP inclui mudanças como randomização de deslocamentos na estrutura cred, proteção contra ataques ao namespace do identificador de usuário (pid namespace), separação da pilha de processos da área mmap, detecção de chamadas duplas para a função kfree, bloqueio de vazamentos através do pseudo -FS /proc (/proc/ {módulos, chaves, usuários-chave}, /proc/sys/kernel/* e /proc/sys/vm/mmap_min_addr, /proc/kallsyms), randomização de endereço de espaço de usuário aprimorada, Ptrace adicional proteção, proteção aprimorada contra smap e smep, capacidade de proibir o envio de dados por meio de soquetes brutos, bloqueando endereços incorretos em soquetes UDP e verificando a integridade dos processos em execução. Também inclui o módulo do kernel Ksguard, que visa detectar tentativas de introdução de rootkits típicos.

Patches causado Greg Kroah-Hartman, responsável por manter o ramo estável do kernel Linux, foi interessante e pediu ao autor que dividisse o patch monolítico em partes para simplificar a revisão e promoção para o kernel principal. Kees Cook, chefe projeto em promoção tecnologia de proteção ativa no kernel Linux, também positivamente respondeu aos patches e, entre os problemas, chamou a atenção para a ligação à arquitetura x86 e a natureza de notificação de muitos modos, que apenas registram informações sobre o problema, mas não tentam bloqueá-lo.

Um estudo do patch realizado pelos desenvolvedores do Grsecurity revelou muitos erros e fraquezas no código, e também mostrou a ausência de um modelo de ameaça que lhes permitisse avaliar adequadamente as capacidades do projeto. Para demonstrar claramente que o código foi escrito sem usar métodos de programação seguros, é dado um exemplo de vulnerabilidade trivial no manipulador.
arquivo /proc/ksguard/state, que é criado com direitos 0777, implicando que todos tenham acesso de gravação. A função ksg_state_write, usada para analisar comandos escritos em /proc/ksguard/state, cria um buffer tmp[32] no qual os dados são gravados com base no tamanho do operando passado, sem levar em conta o tamanho do buffer de destino e sem verificando o parâmetro com o tamanho da string. Aqueles. Para sobrescrever parte da pilha do kernel, um invasor só precisa escrever uma linha especialmente formatada em /proc/ksguard/state.

static ssize_t ksg_state_write(arquivo struct *arquivo, const char __user *buf,
tamanho_t len, loff_t *deslocamento)
{
valor u64;
char tmp [32];
tamanho_t n = 0;

if (copy_from_user(tmp, buf, len))
retornar -1;

valor = simple_strtoul(tmp, '\0', 10);
...

Explorar protótipo:

char buf[4096] = { };
int fd = open(“/proc/ksguard/estado”, O_WRONLY);
se (fd >= 0) {
escreva(fd, buf, sizeof(buf));
fechar(fd);
}

Fonte: opennet.ru

Adicionar um comentário