Pular para o conteúdo principal
Todos os estudos de caso
SDK de nuvem · C++ · 2026

Dois CVEs de Segurança de Memória
no Base64 do AWS SDK for C++

A Amazon Web Services publicou um boletim de segurança para dois problemas de segurança de memória que reportamos no AWS SDK for C++: CVE-2026-19642 e CVE-2026-19643, ambos classificados pela AWS como de severidade média. Nós os encontramos verificando com o ESBMC o decodificador Base64 escrito à mão do SDK, conduzindo-o com entradas simbólicas em vez de strings de teste individuais. Ambos estão corrigidos no AWS SDK for C++ 1.11.862.

2

CVEs atribuídos pela AWS a partir da nossa análise com ESBMC (CVE-2026-19642, CVE-2026-19643)

Média

severidade atribuída pela AWS aos dois problemas (CVSS v4.0 6.0)

1.11.862

versão do AWS SDK for C++ que traz a correção, publicada em 2026-08-03

2026-080

boletim de segurança da AWS cobrindo os dois problemas, publicado em 2026-08-12

Contexto

O AWS SDK for C++ é a biblioteca cliente pela qual aplicações C++ conversam com os serviços da AWS, e a decodificação Base64 fica em um caminho que praticamente toda aplicação desse tipo exercita: é assim que payloads binários, assinaturas e respostas de serviço trafegam sobre protocolos de texto. Isso faz do decodificador um trecho de código de parsing que rotineiramente processa entradas influenciadas por um atacante, em uma linguagem que não verifica limites por conta própria.

O decodificador em questão era escrito à mão, em vez de delegado a uma implementação já endurecida. Decodificadores escritos à mão são exatamente o tipo de código em que a aritmética de tamanho falha silenciosamente: o buffer é dimensionado por um cálculo, o laço de escrita é limitado por outro, e os dois concordam justamente nas entradas que alguém pensou em testar.

Abordagem

Analisamos o decodificador com o ESBMC, nosso verificador de modelos de software, que detecta automaticamente, ou prova a ausência de, erros em tempo de execução como estouros de buffer em programas C++. Em vez de testar strings individuais, fornecemos entradas simbólicas: o decodificador foi executado sobre todas as entradas até um dado limite de uma só vez, e o solucionador foi consultado sobre se alguma delas poderia provocar uma violação de segurança de memória.

É essa a diferença que importou aqui. Um fuzzer ou uma suíte de testes unitários amostra o espaço de entradas e relata o que por acaso atingiu; a verificação limitada de modelos raciocina sobre todo o espaço até o limite e retorna um contraexemplo concreto ou estabelece que nenhum existe. Os contraexemplos produzidos pelo ESBMC eram strings de entrada exatas, o que tornou os relatos diretamente acionáveis para a equipe de segurança da AWS.

Resultados

CVE-2026-19642, escrita fora dos limites (CWE-787). Certas entradas levam o decodificador a escrever além do fim do seu buffer de saída alocado no heap, o que pode derrubar o processo ou corromper memória. A AWS classifica como média (CVSS v4.0 6.0, v3.1 5.9) e registra que não foi demonstrada execução remota de código.

CVE-2026-19643, leitura fora dos limites (CWE-125). Entradas específicas levam o decodificador a ler fora dos limites da sua tabela de decodificação, o que pode derrubar o processo em algumas plataformas. A AWS classifica como média (CVSS v4.0 6.0, v3.1 5.3).

Uma classe de entradas, não um caso isolado. O comportamento fora dos limites remonta à aritmética de tamanho do decodificador, de modo que é alcançável a partir de uma família de entradas Base64 bem formadas, e não de uma única string malformada. É essa propriedade que justifica o raciocínio exaustivo: o bug não está escondido em um canto do espaço de entradas que o autor dos testes esqueceu, é um descompasso sistemático que a amostragem pode não alcançar.

Corrigidos no AWS SDK for C++ 1.11.862 (lançado em 2026-08-03). A correção delega as operações Base64 ao AWS Common Runtime, em vez de remendar o decodificador escrito à mão. A AWS publicou o boletim de segurança 2026-080 em 2026-08-12, creditando a divulgação coordenada.

Se você usa o SDK

Atualize para o AWS SDK for C++ 1.11.862 ou posterior. Como a correção move o tratamento de Base64 para o AWS Common Runtime, apenas subir a versão nem sempre basta: se você compila o SDK a partir do código-fonte ou o linka estaticamente, confirme que a sua build realmente incorpora a dependência aws-crt-cpp atualizada, em vez de resolver para uma cópia fixada ou vendorizada da antiga.

O que isso significa

Rotinas de parsing e decodificação em C++ de produção são pequenas, autocontidas e intensamente exercitadas, que é precisamente o perfil que a verificação limitada de modelos trata bem. Um decodificador desse tamanho pode ser analisado exaustivamente até um limite útil no tempo que se leva para escrever um punhado de testes unitários, e a saída é um contraexemplo concreto ou uma prova de que nenhum existe abaixo do limite. Para equipes que entregam C++ lidando com bytes não confiáveis, esse é um instrumento mais barato e mais preciso do que acrescentar mais uma amostra do espaço de entradas a uma suíte de testes.

Referências

  1. AWS Security Bulletin 2026-080, "Memory-safety issues in the Base64 decoder in the AWS SDK for C++" (publicado em 2026-08-12). aws.amazon.com/pt/security/security-bulletins/2026-080-aws
  2. CVE-2026-19642, escrita fora dos limites no decodificador Base64 do aws-sdk-cpp anterior a 1.11.862 (CWE-787; CVSS v4.0 6.0, média). nvd.nist.gov/vuln/detail/CVE-2026-19642
  3. CVE-2026-19643, leitura fora dos limites no decodificador Base64 do aws-sdk-cpp anterior a 1.11.862 (CWE-125; CVSS v4.0 6.0, média). nvd.nist.gov/vuln/detail/CVE-2026-19643
  4. aws/aws-sdk-cpp, o AWS SDK for C++; a versão 1.11.862 traz a correção. github.com/aws/aws-sdk-cpp
  5. ESBMC, o verificador limitado de modelos open source usado na análise. github.com/esbmc/esbmc

Nota. Os problemas foram reportados por Lucas Carvalho Cordeiro e Rafael Sá Menezes (University of Manchester), creditados nominalmente no boletim da AWS. A CRC Ltd não mantém parceria comercial com a AWS e a análise não foi encomendada pela AWS; os achados passaram pelo processo de divulgação coordenada de vulnerabilidades da AWS, que a equipe de segurança da AWS conduziu de forma direta do primeiro relato até o boletim publicado. Detalhes técnicos além dos que constam do boletim são omitidos em conformidade com esse processo.