O pesquisador do GitHub Security Lab, Jaroslav Lobačevski, publicou, em 22 de maio, um aviso sobre a vulnerabilidade CVE-2026-48095 (GHSL-2026-140): um estouro de buffer no manipulador de arquivos NTFS do 7-Zip, capaz de permitir a execução arbitrária de código. A causa raiz está no comportamento indefinido da função GetCuSize(), que calcula o tamanho do buffer de um fluxo comprimido NTFS por meio de uma operação de deslocamento binário de 32 bits. Quando uma imagem NTFS criada por um atacante define ClusterSizeLog = 28 e CompressionUnit = 4, o expoente do deslocamento atinge 32 — o que é considerado comportamento indefinido na linguagem C++. Tanto em sistemas x86 quanto x64, a máscara de contagem de deslocamento do hardware faz com que o resultado dessa operação seja 1, levando à alocação de apenas 1 byte para _inBuf. A chamada subsequente ReadStream_FALSE grava até 256 MB de dados controlados pelo atacante nesse buffer minúsculo. Análises com depurador confirmam que o objeto de fluxo (CInStream) fica a apenas 304 bytes de distância de _inBuf no heap; os primeiros 64 KB de escrita sobrescrevem seu ponteiro de tabela virtual, e as iterações seguintes direcionam a execução através dessa tabela corrompida — um clássico método de sequestro de tabela virtual, que possibilita a execução de código. Essa vulnerabilidade recebeu pontuação 8,8 no índice CVSS 3.1, classificada como grave: não exige autenticação nem privilégios especiais, bastando apenas que o usuário abra o arquivo para que o ataque seja disparado.
Um detalhe relevante sobre a superfície de ataque: o 7-Zip utiliza detecção baseada em assinaturas, então qualquer imagem NTFS falsificada — contendo a sequência de 8 bytes "NTFS " a partir do terceiro byte — será encaminhada ao manipulador NTFS, independentemente da extensão do arquivo. Arquivos maliciosos com extensões .7z, .zip, .rar ou até mesmo sem extensão alguma acionam o mesmo caminho de código. Todas as versões do 7-Zip até a 26.00 são vulneráveis, tanto nas compilações de 32 quanto de 64 bits; em sistemas de 64 bits com menos de cerca de 16 GB de memória livre, a tentativa de alocar 8 GB para _outBuf pode falhar, limitando o impacto à simples queda do programa. Lobačevski reportou o problema de forma privada em 24 de abril; três dias depois, em 27 de abril, Igor Pavlov lançou a correção na versão 26.01. Usuários ainda na versão 26.00 ou anteriores devem atualizar imediatamente.