Falhas de segurança

Pesquisadores encontram uma falha no patch original do Dirty Cow

Pesquisadores encontram uma falha no patch original do Dirty Cow

Parece que o bug Dirty Cow ( CVE-2016-5195 ) voltou a encher a paciência do mundo Linux.

O patch original para a vulnerabilidade Dirty COW (CVE-2016-5195) é uma falha de segurança que ao ser explorado por um invasor permitia ao invasor executar um código local em sistemas afetados e explorar uma race condition para permitir uma escalação de privilégios.

A vulnerabilidade foi classificada como importante e recebeu uma pontuação 6.1 na escala CVSS e foi corrigida em 2016.

O nome Dirty COW é devido ao fato de que ela é desencadeada por uma race condition na forma como o subsistema de memória do kernel do Linux lida com a gravação copy-on-write ( COW ) de mapeamentos de memória somente leitura.

De acordo com o aviso de segurança publicado pela Red Hat a vulnerabilidade rastreada como CVE-2016-5195 permite que os atacantes locais modifiquem os seus setuid.

Agora acharam uma falha no patch original rastreada como CVE-2017-1000405 que foi identificada pela empresa de segurança Bindecy.

Entremos na parte técnica. No patch original do Dirty COW a chamada can_follw_write_pmd() foi modificada para ser o novo sinalizador da flag FOLL_COW (8310d48b125d” mm / huge_memory.c: respeitando FOLL_FORCE / FOLL_COW para thp “).

E é aí que foi achado um uso problemático do pmd_mkdirty() na função touch_pmd ().

A função touch_pmd () consegue alcançar a get_user_pages ().

E neste caso a pmd gerará sujeira que quebra a nova lógica do can_follow_write_pmd ().

Com o pmd ficando “sujo” durante um ciclo COW torna-se possível a escrita em grandes páginas na memória que são somente leitura.

O novo bug não chega a ser tão grave quanto a vulnerabilidade original Dirty COW que afetou muitas distribuições Linux e o sistema operacional Android.

A vantagem para quem usa distribuições sérias, como a Red Hat Enterprise ( ou sua irmã direta CentOS ) é que elas não são afetadas. E isto também acontece para o Android.

De acordo com a Red Hat a vulnerabilidade não afeta os pacotes do kernel do Linux fornecidos para o Red Hat Enteprise Linux 5, 6, 7 e Red Hat Enterprise MRG 2.

O patch lançado em outubro de 2016 suplantou a vulnerabilidade Dirty COW tanto para páginas normais e transparent Huge Pages ( não achei uma tradução aceitável para este termo ).

Os pesquisadores relataram que a falha está no kernel da Linux Organization em 22 de novembro, o patch foi comprometido com o kernel publicado em 27 de novembro e oficialmente a falha foi lançada em 1 de dezembro.

Os especialistas da Bindecy publicaram uma POC que substituia a página zero do sistema.

O aviso da Red Hat inclui uma sugestão de mitigação que consiste em desativar o uso de “zero pages”.

“É possível impedir que a página zero seja mapeada com uma huge page modificando uma configuração no diretório /sys.

Isso evita que a falha seja explorada deste modo.

# echo 0 > /sys/kernel/mm/transparent_hugepage/use_zero_page

Desabilitar as huge pages ( ou páginas enormes ).

Isto permite mitigar esta falha ao desativar páginas gigantes no sistema”

Se é uma falha complicada ou não, somente nos dá a certeza que não há sistema completamente seguro.

 

Via Security Affairs

comments powered by Disqus