Why is my shellcode being corrupted?

In 2022, while one of our researchers was developing our Linux Binary Exploitation training, he approached me with a curious issue. During the exploitation of the simplest case of a stack-based buffer overflow, the shellcode was being corrupted on GDB. It took us a while to figure out what was happening, but we understood it. At least, we thought we had understood.

I revisited that topic this week to teach the students of our training about that case and I noticed something that I hadn’t noticed back then. I noticed that the behavior he faced was an illusion! I then started to write this blog post aiming to show the illusion GDB creates and in the middle of it, when experimenting on GDB, I came across weird behaviors that I didn’t understand immediately.

That journey led me to discover much more about GDB than I knew when I started this blog post. The main points I discovered about GDB are that a breakpoint hit is not always caused by hardware or software breakpoints, and that GDB has a feature called Displaced Stepping (or Out-Of-Line execution) that hides the execution of instructions from the user.

Continue reading “Why is my shellcode being corrupted?”

A brief analysis of a vulnerability in the glibc (CVE-2025-4802)

Para acessar este post em Português, clique aqui.

In this blog post, we present a brief analysis of vulnerability CVE-2025-4802 [1], which affects libc developed by the GNU project, glibc, across versions 2.27 to 2.38, spanning the years 2017 to 2023 [2].

In simple terms, this vulnerability allows statically linked ELF binaries that execute dlopen() [3] either implicitly or explicitly to load arbitrary libraries via the LD_LIBRARY_PATH environment variable on a SUID binary. In practical terms, this enables a user with limited privileges to execute arbitrary code with elevated permissions.

Our objective is to provide the foundational knowledge required to understand the issue comprehensively. We will analyze the root cause of the vulnerability, the patch, its security impact, and how the involved components – the loader, the dynamic linker, and the kernel – interact to enable binary execution on the system. The operating system used for this blog post is Ubuntu 22.04, as provided to the students during our Linux binary exploitation training course.

Continue reading “A brief analysis of a vulnerability in the glibc (CVE-2025-4802)”

Breve análise de uma vulnerabilidade na glibc (CVE-2025-4802)

To access this post in English, click here.

Nessa publicação apresentamos uma análise sucinta da vulnerabilidade CVE-2025-4802 [1] que afeta a implementação da libc feita pelo projeto GNU, a GLIBC, das versões 2.27 à 2.38 , entre 2017 e 2023 [2].

Tratando brevemente a seu respeito, essa vulnerabilidade permite que binários ELF estaticamente ligados (statically linked), que executem dlopen() [3] de forma implícita ou explícita e com o bit SUID habilitado carreguem bibliotecas arbitrárias através da variável de ambiente LD_LIBRARY_PATH. Em outras palavras, ela permite que um usuário com privilégios limitados execute código arbitrário com privilégios elevados.

Nossa proposta é apresentar os conhecimentos necessários para entender o problema de forma ampla, analisar a causa da vulnerabilidade, a correção, o impacto e como os componentes envolvidos, o loader, dynamic linker e o kernel, se relacionam para permitir a execução de binários no sistema. O sistema operacional utilizado para este blog post é o Ubuntu 22.04, como fornecido aos estudantes durante a turma do treinamento de exploração de vulnerabilidades em binários em ambiente Linux.

Continue reading “Breve análise de uma vulnerabilidade na glibc (CVE-2025-4802)”

O Mindset que Separa o Sênior do Júnior: Lições de Nelson Elhage

Publicamos o texto a seguir no grupo de inscritos em nossos treinamentos na semana passada e resolvemos compartilhar essa reflexão aqui para que outros também possam lê-lo.

Conversando com um amigo ontem sobre o blog post [1] que publicamos esta semana e ao qual vocês tiveram acesso prévio, ele me lembrou do artigo de Nelson Elhage, intitulado: Computers can be understood [2] (em português: “Computadores podem ser compreendidos”).

Nelson Elhage é atualmente engenheiro de sistemas na Anthropic e trabalhou anteriormente na Ksplice, Stripe e, provavelmente, em outras empresas de destaque. Para quem não conhece, a Ksplice era uma startup americana que resolveu um problema que muitos consideravam impossível na época: atualizar o kernel sem reiniciar o sistema! Em 2011, a Ksplice foi adquirida pela Oracle e hoje faz parte das soluções oferecidas pela empresa. Seu envolvimento na Ksplice, em um projeto notoriamente desafiador, por si só já demonstra as diversas habilidades de Nelson.

Continue reading “O Mindset que Separa o Sênior do Júnior: Lições de Nelson Elhage”

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”

The importance of diverse knowledge in vulnerability research – The transferability of knowledge

Para acessar este post em português, clique aqui.

To achieve an excellent and high-level career in Information Security, diverse and deep technical knowledge is indispensable. It is crucial to have solid experience with:

  • Network protocols;
  • Computer architecture;
  • Operating systems;
  • Programming languages;
  • Compilers, among other fundamentals.

The professional needs to have a broad range of knowledge. We are talking about high-impact careers, formed by people who work at the forefront of modern technology. Although other qualities are necessary, the focus here resides strictly on the technical aspect.

Continue reading “The importance of diverse knowledge in vulnerability research – The transferability of knowledge”

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”