A importância de conhecimentos diversos em pesquisa de vulnerabilidades – A transferibilidade de conhecimento

To access this blog post in English, click here.

Para alcançar uma carreira de excelência e alto nível em segurança da informação, conhecimentos técnicos diversos e profundos são, muitas vezes, necessários. É crucial ter uma experiência solida com:

  • Protocolos de rede
  • Arquitetura de computadores
  • Sistemas operacionais
  • Linguagens de programação
  • Compiladores e muitos outros conhecimentos

O profissional precisa ser um polímata. Estamos falando de carreiras que fazem a diferença, pessoas que trabalham na vanguarda da tecnologia moderna. Outras qualidades são também necessárias, claro, mas o foco aqui é apenas no ponto técnico.

Continue reading “A importância de conhecimentos diversos em pesquisa de vulnerabilidades – A transferibilidade de conhecimento”

Vulnerabilidade de use-after-free no subsistema CAN BCM conduzindo a divulgação de informação (CVE-2023-52922)

To access this blog post in English, click here.

Em 2024, nosso time de pesquisa descobriu e escreveu provas de conceitos para uma vulnerabilidade de use-after-free afetando a última versão do Red Hat Enterprise Linux 9 (RHEL 9). No tempo, o kernel 5.14.0-503.15.1.el9_5. A vulnerabilidade foi corrigida no Linux kernel upstream em 17 de Julho de 2023 [1][2]. Depois que nós reportamos, a correção foi backported para o Red Hat Enterprise Linux 9 em 11 de março de 2025 [3] no kernel versão 5.14.0-503.31.1.el9_5.

Nós reportamos a vulnerabilidade para a Red Hat em 16 de Julho de 2024 e eles responderam que upstream rejeitou emitir um CVE e pediram a prova de conceito que tínhamos mencionado no primeiro contato. Depois de enviar um relatório detalhado incluindo a prova de conceito, eles emitiram o CVE-2023-52922 [4]. Esta postagem também destaca um padrão em potencial presente no subsistema CAN BCM, como uma outra vulnerabilidade também foi reportada e corrigida.

Continue reading “Vulnerabilidade de use-after-free no subsistema CAN BCM conduzindo a divulgação de informação (CVE-2023-52922)”

Descobrindo acidentalmente uma vulnerabilidade de sete anos no kernel do Linux

To access this blog post in English, click here.

Pesquisa em vulnerabilidades está no coração da Allele Security Intelligence. Pesquisamos ativamente há mais de uma década e oferecemos nossa experiência aos nossos clientes. Entre os serviços que oferecemos estão pesquisa de vulnerabilidades em 0day e nday.

Nos projetos de pesquisa em vulnerabilidades em nday, no caso do kernel do Linux, procuramos por vulnerabilidades corrigidas em upstream que ainda afetam as principais distribuições em suas versões mais recentes. Normalmente encontramos vulnerabilidades corrigidas há mais de um ano que ainda afetam distribuições Linux populares. Fazemos isso através da auditoria de código-fonte, monitorando vulnerabilidades em listas de discussão e corrigidas em upstream, olhando os resultados do fuzzer syzkaller e de outras formas.

Enquanto fazíamos isso, nós acidentalmente descobrimos uma vulnerabilidade no núcleo do subsistema TCP do kernel do Linux. Ela tinha sido introduzida há sete anos. Nós reportamos a vulnerabilidade e ela foi corrigida em maio do ano passado. Nesta postagem, compartilharemos como isso aconteceu e uma análise breve da vulnerabilidade.

Continue reading “Descobrindo acidentalmente uma vulnerabilidade de sete anos no kernel do Linux”

Nossas recentes contribuições para o kernel do Linux

To access this blog post in English, click here.

Durante nossos projetos de pesquisa, precisamos investigar profundamente os subsistemas dos sistemas operacionais que são nosso alvo. Nesse processo, frequentemente encontramos outros problemas que não se alinham diretamente com nossos objetivos de pesquisa. No passado, nós os ignorávamos, mas recentemente decidimos iniciar um ciclo de contribuição, reportando e corrigindo essas falhas.

Especificamente para os problemas abordados nesta postagem, nós não apenas os reportamos, como também submetemos os patches de correção. Embora já tenhamos reportado vulnerabilidades e auxiliado em suas correções no passado, estes problemas marcam as primeiras instâncias em que somos os únicos autores dos patches submetidos.

Nesta postagem, detalhamos os problemas que reportamos e corrigimos no kernel do Linux.

Dos três itens reportados, dois são NULL pointer dereferences e o terceiro é um potencial out-of-bounds write no subsistema de arquivos Btrfs. Os NULL pointer dereferences poderiam permitir que usuários não privilegiados afetassem o funcionamento do sistema. Não investimos tempo significativo para tentar acionar a vulnerabilidade potencial de out-of-bounds no Btrfs, pois ela não era prioritária para nossos objetivos de pesquisa.

Embora a vulnerabilidade exista, ela requer uma condição que não parece trivial de ser alcançada. O mais notável sobre essa vulnerabilidade em particular é que ela é extremamente antiga, estando presente no kernel do Linux por mais de 17 anos. Ela havia sido identificada e houve uma tentativa de correção no passado, mas essa falha foi posteriormente esquecida. Apesar de o código vulnerável ter sido modificado diversas vezes desde a tentativa de correção original, a vulnerabilidade persistiu.

Todos os patches que submetemos já foram aplicados no upstream do kernel. A seguir, você encontrará todos os detalhes técnicos sobre cada uma das correções.

Continue reading “Nossas recentes contribuições para o kernel do Linux”

Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 4: Bypass de Mitigações (KASLR e SMEP)

Introdução

No post anterior desta série realizamos a exploração da vulnerabilidade e, com isso, conseguimos escalar os privilégios ao obter a execução de uma shell como usuário ‘root'. Também tratamos um problema que surgiu no decorrer da exploração, conseguindo manter o sistema estável normalmente.

Porém, toda essa exploração foi feita com as mitigações desabilitadas. Ao montar o ambiente, na primeira parte da série de blog posts, o configuramos para que as mitigações fossem desabilitadas a fim de facilitar nossas análises e testes. Essa é uma prática bastante comum ao fazer pesquisa e exploração de vulnerabilidades.

Neste último post da série, agora que já exploramos a vulnerabilidade, vamos habilitar as mitigações, uma a uma, e fazer os bypasses delas, de modo que nosso exploit funcione mesmo em um ambiente com essas mitigações habilitadas. As mitigações que contornaremos serão Supervisor Mode Execution Prevention (SMEP) e Kernel Address Space Layout Randomization (KASLR). Já outras, como Supervisor Mode Access Prevention (SMAP) e Kernel Page Table Isolation (KPTI), não serão habilitadas e explicaremos o motivo ao final da postagem.

Continue reading “Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 4: Bypass de Mitigações (KASLR e SMEP)”

Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 3: Exploração

Introdução

No primeiro post da série, montamos o ambiente necessário para debugging e explorar a vulnerabilidade e no segundo, acionamos a vulnerabilidade com o código em C. Agora, neste post, vamos entender melhor a vulnerabilidade e evoluir o código para realizar a escalação de privilégio com sucesso.

Nosso objetivo nessa terceira parte é explorar a vulnerabilidade usando uma técnica conhecida como ret2usr, que apesar de não ser mais interessante hoje em dia devido às mitigações modernas, permite ao leitor ter uma introdução à exploração de vulnerabilidades em kernel. Na próxima parte, vamos explorar a vulnerabilidade com algumas mitigações habilitadas, utilizando Return Oriented Programming (ROP) no kernel do Linux.

Além de explorar a vulnerabilidade com sucesso, obter acesso a uma shell de root, também queremos manter o sistema estável e funcionando corretamente, mesmo após a exploração. Diversos estados instáveis podem acontecer após a exploração de uma vulnerabilidade. E, como o kernel é peça central do sistema, é nosso papel investigar, entender o que aconteceu e lidar com a situação para resolver o problema.

Continue reading “Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 3: Exploração”

Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 2: Acionamento da Vulnerabilidade

Introdução

No post anterior desta série, fizemos uma introdução sobre exploração de vulnerabilidades no kernel do Linux e passamos pelos passos necessários para montar o ambiente de modo a ser possível realizarmos os testes e análises para explorar a vulnerabilidade que escolhemos para nossos blog posts. Dando seguimento, neste post, construiremos um código que aciona a vulnerabilidade. Dessa forma, dando um passo importante para exploração bem sucedida da vulnerabilidade.

Continue reading “Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 2: Acionamento da Vulnerabilidade”

Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 1: Vulnerabilidade e Ambiente

Introdução

Em setembro e outubro desse ano ministraremos uma turma do nosso treinamento de Introdução à Exploração de Vulnerabilidades no Kernel Linux. Será uma turma na modalidade online e, para dar um gostinho sobre o que abordaremos no curso decidimos fazer uma série de blog posts realizando a exploração de uma vulnerabilidade da mesma classe e na mesma distribuição Linux que serão empregados no treinamento.

Para isso, será utilizada uma vulnerabilidade real do kernel do Linux. Passaremos por todo o processo de exploração da vulnerabilidade, desde montar o ambiente do laboratório, fazer a exploração da vulnerabilidade, manter o sistema estável e, por fim, realizar os bypasses de algumas mitigações presentes no sistema. Ao final da série, o leitor deverá ser capaz de escrever um exploit que obtém privilégios de root em um sistema Linux com as principais mitigações habilitadas (com exceção do SMAP devido à classe de vulnerabilidade, falaremos sobre isso no último post da série) como demonstrado no vídeo abaixo.

Continue reading “Introdução à Exploração de Vulnerabilidades no Kernel do Linux – Parte 1: Vulnerabilidade e Ambiente”