FlawOpen

flawopen.com/Incidents/openai-community-forum-heif-sso-chain-september-2026

● OpenAI / Discourse / libheif · CVE-2026-32882 · 2026-07-25 · CVSS 7.1 · Alta
Pesquisa · FlawOpen

Cadeia do fórum ao SSO da OpenAI: CVE-2026-32882

A Hacktron relatou uma cadeia entre uma leitura fora dos limites no plano alfa do libheif, pelo processamento de imagens do Discourse, e uma falha separada de SSO da OpenAI. A CVE-2026-32882 foi corrigida no libheif 1.22.0; os pesquisadores dizem que pararam após uma pull request inofensiva para comprovar o acesso.[4], [1], [2]

💡 Explicação em Linguagem Simples (ELI5)

Imagine duas folhas transparentes: uma tem uma fileira larga de quadrados coloridos, e a outra, uma fileira mais estreita de valores de transparência. O decodificador usou o comprimento da fileira da folha colorida para localizar o próximo valor de transparência. A cada linha, a leitura avançava mais para fora da folha menor. A correção usa o comprimento próprio da fileira de transparência.[1]

Conceitos Centrais e Termos

HEIF / HEIC
Formato de contêiner de imagem. Um arquivo HEIF pode conter imagens derivadas, sobreposições e planos de cor e alfa separados, que o decodificador precisa manter dentro dos próprios limites.[1]
libheif
Biblioteca nativa que decodifica e codifica imagens HEIF e AVIF. O comunicado do Discourse relaciona o caminho de processamento de uploads de imagem à CVE-2026-32882.[1], [2]
Stride
Quantidade de bytes entre o início de uma linha de um plano de imagem e o início da próxima. Profundidades de bits diferentes podem dar strides diferentes aos planos de cor e alfa.[1]
CWE-125
Leitura fora dos limites: o software lê além da região de memória alocada para um buffer. Neste caso, o endereço do plano alfa avançava usando o stride do plano de cor.[1]
Limite de confiança do SSO
Relação de identidade entre um serviço de login e um aplicativo. A Hacktron relatou que a relação SSO do fórum da OpenAI ampliou o impacto do comprometimento separado do fórum; o relatório público não revela a falha exata nem a correção do SSO.[4]

Mapeamentos de frameworks

  • Referência CWE para a fraqueza descrita neste guia: CWE-125

Linha do Tempo do Incidente

2026-05-19

O mantenedor do libheif publica GHSA-hg7q-rjr2-8x46, identifica CVE-2026-32882 e lista libheif 1.22.0 como corrigido.[1]

2026-07-25

A Hacktron afirma que seus pesquisadores chegaram ao fórum da OpenAI pelo caminho de imagens do Discourse, relataram o problema de SSO do lado da OpenAI e interromperam os testes após uma pull request inofensiva para comprovar o acesso.[4]

2026-07-28

O Discourse publica GHSA-vhm9-85gw-x335, lista versões corrigidas e recomenda reconstruir instalações autogerenciadas.[2]

2026-09-13

A Hacktron publica seu relato da divulgação coordenada. O texto afirma que a OpenAI confirmou a correção do SSO e esclarece que a recompensa reconheceu essa falha do lado da OpenAI, não os testes no fórum hospedado do Discourse.[4]

Fluxo de Ataque Passo a Paso

Passo 1

Uma imagem enviada chega a um decodificador nativo

A Hacktron relata que o caminho de imagens do Discourse encaminhava arquivos HEIF/HEIC pelo ImageMagick ao libheif, porque o fluxo normal de verificação de imagens não tratava esse formato.[4], [2]

Passo 2

O layout do plano de cor é reutilizado no alfa

Em HeifPixelImage::overlay(), o código vulnerável avança alpha_p por y * in_stride, embora alpha_stride tenha sido obtido para esse plano. Quando a profundidade de bits do alfa e da cor difere, as linhas têm tamanhos diferentes e a leitura pode ultrapassar a alocação alfa. O comunicado upstream classifica isso como CWE-125.[1]

Passo 3

O impacto downstream depende do caminho hospedeiro

O comunicado do libheif descreve uma falha ou possível divulgação por meio dos pixels decodificados. O comunicado separado do Discourse descreve execução remota de código pelo caminho de upload e atribui CVSS 8.8 ao problema do Discourse. Não substitua essa classificação ou impacto do produto pela CVSS 7.1 e pela leitura fora dos limites da própria CVE.[1], [2]

Passo 4

Uma falha separada de SSO ampliou a cadeia relatada

A Hacktron diz que o comprometimento do fórum permitiu acesso às contas ChatGPT/Codex de funcionários por meio de um problema de SSO da OpenAI e que uma pull request inofensiva demonstrou acesso ao repositório conectado. As fontes públicas não revelam o defeito de código do SSO, as permissões exatas da conta nem uma correção reutilizável para o SSO.[4]

Passo 5

Mantenha a prova e as afirmações limitadas

A Hacktron diz que interrompeu os testes após a pull request de comprovação de acesso. O relato descreve uma divulgação controlada por pesquisadores, não um incidente malicioso nem evidência de que dados de clientes foram obtidos. Os pesquisadores também dizem que a recompensa da OpenAI cobriu a falha de SSO da empresa e excluiu os testes no fórum hospedado do Discourse.[4]

Código-Fonte: Vulnerável vs. Seguro

Este é um trecho específico, não um decodificador independente nem o patch completo reproduzido literalmente. O comunicado do mantenedor identifica a expressão vulnerável e informa que o problema foi corrigido no libheif 1.22.0. Cada plano deve ser indexado com seu próprio stride; reutilizar o stride da cor faz a leitura do alfa avançar demais quando os planos têm profundidades de bits diferentes. No aplicativo hospedeiro, mantenha também os decodificadores atualizados e isole a conversão de uploads não confiáveis.[1], [3]

IMPLEMENTAÇÃO VULNERÁVEL
// Trecho simplificado do padrão de acesso descrito.
// alpha_stride estava disponível, mas foi usado o stride da cor.
uint8_t alpha_value = alpha_p[in_x0 + y * in_stride + x];
PATCH SEGURO E ROBUSTO
// Use o layout de linha da própria camada alfa.
// A correção upstream está no libheif 1.22.0.
uint8_t alpha_value = alpha_p[in_x0 + y * alpha_stride + x];

Lista de Verificação de Segurança para Engenharia

Fontes