Como você se sente sobre uma vulnerabilidade de uma década em uma variedade de sistemas operacionais baseados em Unix, como Linux, OpenBSD, NetBSF, FreeBSD e Solaris? Infelizmente, esta questão não é teórica como tal vulnerabilidade (identificado como CVE-2017-1000364) foi descoberto, permitir que os invasores executem ataques de escalonamento de privilégios em que o acesso root é concedido e um controle total do sistema está em vigor.
CVE-2017-1000364 foi apelidado de Stack Slash e foi descoberto na maneira como a memória estava sendo alocada na pilha para binários de espaço do usuário, como explicado pelo pesquisadores quem descobriu.
![](/wp-content/uploads/2016/04/shield.png)
CVE-2017-1000364 Resumo técnico de falha de barra de pilha
Como o bug é explicado? É bastante simples - os programas usam regiões de memória especiais conhecidas como pilhas, usado para armazenar dados de curto prazo. A pilha pode expandir e contrair automaticamente durante a execução do programa, em relação às necessidades de um determinado programa.
Pesquisadores da Qualys revelam que um programa mal-intencionado pode tentar usar mais espaço de memória do que o disponível na pilha. Isso pode facilmente levar ao estouro de memória, fazendo com que a pilha entre em conflito com as regiões de memória próximas e sobrescreva seu conteúdo.
Além do acima, a falha pode ignorar a página de guarda da pilha. Esta é uma proteção de gerenciamento de memória de 2010 que foi introduzido depois que a falha foi explorada em anos anteriores. Conforme descrito pelos pesquisadores da Qualys em seu relatório:
Infelizmente, uma página de guarda de pilha de alguns kilobytes é insuficiente: se o ponteiro da pilha 'saltar’ sobre a página de guarda - se ela for movida da pilha para outra região de memória sem acessar a página de guarda - nenhuma exceção de falha de página será gerada e a pilha se estenderá para a outra região de memória.
CVE-2017-1000364 também requer acesso local ao sistema vulnerável. Contudo, também poderia ser explorado remotamente de acordo com as aplicações envolvidas.
Na atualidade, O CVE-2017-1000364 pode ser explorado junto com outras falhas críticas, como a vulnerabilidade do Sudo, que foi corrigida recentemente. A vulnerabilidade do Sudo, CVE-2017-1000367, é uma vulnerabilidade de raiz grave do Linux mais uma vez descoberta por pesquisadores da Qualys. A falha foi encontrada em “get_process_ttyname” do Sudo()” para Linux e pode permitir que um usuário com privilégios de Sudo execute comandos como root ou eleve privilégios para root.
Infelizmente, as más notícias não terminam aqui como 7 explorações de prova de conceito foram criadas para a vulnerabilidade adequada para Linux, OpenBSD, NetBSD, FreeBSD, Solaris em ambos 32- e processadores de 64 bits. Os pesquisadores foram inicialmente atenciosos o suficiente para não forçar suas provas de conceito, permitindo que usuários e administradores abordassem a falha corrigindo seus sistemas vulneráveis.. No entanto, estes foram tornados públicos depois que as atualizações foram publicadas pelo Fedora e Slackware. FreeBSD e NetBSD também lançaram patches.
A prova de conceito inclui quatro etapas – confrontando a pilha com outra região de memória, executando o ponteiro de pilha para o início da pilha, saltando sobre a página de guarda da pilha, e finalmente, esmagando a pilha ou outras regiões de memória.
![](/wp-content/uploads/2016/04/shield_green.png)
Mitigação contra CVE-2017-1000364
Com base em suas pesquisas, Os pesquisadores da Qualys recomendam que os sistemas operacionais afetados façam o seguinte:
Aumente o tamanho da página de guarda da pilha para pelo menos 1 MB, e permitir que os administradores do sistema modifiquem facilmente esse valor (por exemplo, grsecurity/PaX introduziu /proc/sys/vm/heap_stack_gap em 2010). Este primeiro, solução de curto prazo é barata, mas pode ser derrotado por um
buffer baseado em pilha muito grande.Recompilar todo o código do userland (ld.so, bibliotecas, binários) com o GCC “-fstack-check” opção, que impede que o ponteiro da pilha se mova para outra região de memória sem acessar a página de guarda da pilha (ele grava uma palavra para cada página de 4 KB alocada na pilha). Este segundo, solução de longo prazo é cara, mas não pode ser derrotado (mesmo que a página de guarda da pilha tenha apenas 4 KB, uma página) — a menos que uma vulnerabilidade seja descoberta na implementação da página de guarda de pilha ou na “-fstack-check” opção.
Outros sistemas operacionais (janelas, andróide, Mac) Também vulnerável a CVE-2017-1000364
Talvez as coisas não acabem aqui, pois os pesquisadores também acreditam que outros sistemas operacionais, como Windows e macOS e até o Android, também podem ser vulneráveis a essa falha. No entanto, isso precisa ser adicionalmente confirmado.
Não obstante, as partes afetadas são instadas a atualizar o mais rápido possível.
Se ainda não houver patches disponíveis para um sistema operacional específico, usuários e administradores podem tentar reinicializar seus sistemas ou aplicar manualmente limites de pilha aos aplicativos de usuários locais para evitar explorações. Outra dica útil é recompilar todo o código userland com o recurso -fstack-check, como visível nas dicas acima.