flawopen.com/Incidents/openai-community-forum-heif-sso-chain-september-2026
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]
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
O mantenedor do libheif publica GHSA-hg7q-rjr2-8x46, identifica CVE-2026-32882 e lista libheif 1.22.0 como corrigido.[1]
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]
O Discourse publica GHSA-vhm9-85gw-x335, lista versões corrigidas e recomenda reconstruir instalações autogerenciadas.[2]
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
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]
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]
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]
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]
// 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];// 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
- ✓No Discourse autogerenciado, atualize para uma versão corrigida listada em GHSA-vhm9-85gw-x335 e reconstrua a imagem do aplicativo; uma atualização apenas pela interface web não comprova que o pacote nativo libheif mudou.[2], [4]
- ✓Inventarie a versão do libheif realmente presente em cada contêiner de processamento de imagens e verifique os backports da distribuição; o número de versão upstream, sozinho, pode não refletir o estado do pacote da distribuição.[6], [4]
- ✓Ao indexar um plano de imagem, use o stride e as dimensões desse plano. Inclua testes de regressão com planos alfa e de cor em profundidades de bits e strides diferentes.[1], [3]
- ✓Execute a conversão de HEIF/AVIF de uploads não confiáveis em um worker restrito e descartável, com acesso mínimo ao sistema de arquivos, sem credenciais ambientais e com limites de CPU e memória.[2]
- ✓Revise as relações de confiança do SSO separadamente da correção do parser: valide emissor, público, URI de redirecionamento, vínculo de conta e associação de sessão; revogue sessões se o limite de identidade puder ter sido atravessado.[4]
- ✓Não descreva como conhecidos a implementação de SSO da OpenAI ou seu patch exato; o relatório público apresenta o relato dos pesquisadores, mas não o defeito nem a correção em código.[4]