News · OpenAI renova o certificado de assinatura do macOS depois que uma versão maliciosa do Axios entrou no pipeline de assinatura de apps
OpenAI renova o certificado de assinatura do macOS depois que uma versão maliciosa do Axios entrou no pipeline de assinatura de apps
Uma dependência JavaScript comprometida chegou ao fluxo que certifica o ChatGPT Desktop, o Codex e o Atlas — e a solução é uma atualização forçada do cliente antes de 8 de maio de 2026.
Uma biblioteca HTTP de frontend acabou dentro do job de assinatura de código
Axios é um dos clientes HTTP mais usados no ecossistema JavaScript — o tipo de dependência que fica escondida na árvore transitiva de inúmeros projetos de frontend e ferramentas Node. Em 31 de março de 2026 (UTC), uma versão maliciosa, a 1.14.1, foi publicada como parte de um ataque mais amplo à cadeia de suprimentos.
O que torna a divulgação da OpenAI específica é onde essa biblioteca estava sendo executada. A versão comprometida do Axios foi baixada e executada por um workflow do GitHub Actions usado no processo de assinatura de apps macOS da OpenAI — o mesmo job que tinha acesso ao certificado e ao material de notarização do ChatGPT Desktop, Codex, Codex CLI e Atlas. Um pacote JavaScript feito para fazer requisições web acabou ficando ao lado das chaves que dizem ao macOS que esses apps realmente vêm da OpenAI.
A lição incômoda é que um pipeline de assinatura só é tão confiável quanto cada pacote que ele instala no momento do build. O certificado é a joia da coroa; o workflow em volta dele herdou a superfície de risco de todo o grafo de dependências do npm.
Duas configurações incorretas concretas que a OpenAI aponta
A OpenAI é incomumente precisa sobre a causa raiz. O workflow referenciava a action problemática por uma tag flutuante, em vez de um hash de commit fixo, e não tinha um minimumReleaseAge configurado para pacotes novos.
A action em questão usava uma tag flutuante, em vez de um hash de commit específico, e não tinha um minimumReleaseAge configurado para pacotes novos.Montana Labs
Ambas são situações reconhecíveis para qualquer pessoa que mantém CI. Uma tag flutuante significa que o workflow aceita silenciosamente para onde quer que o mantenedor — ou um atacante que comprometeu o mantenedor — redirecione essa tag. Um minimumReleaseAge teria imposto uma janela de quarentena, recusando pacotes publicados muito recentemente para terem sido verificados; se estivesse configurado, a versão maliciosa de 31 de março talvez nunca tivesse sido consumida. Essas não são defesas exóticas. São as recomendações padrão de proteção para fixar e retardar atualizações de dependências, aplicadas aqui a um pipeline cujo raio de impacto acabou sendo um certificado de assinatura.
A correção transfere o custo para o cliente, não para o servidor
A OpenAI concluiu que o certificado provavelmente não foi exfiltrado, citando o momento do payload, a sequência de injeção do certificado e outros fatores atenuantes. Não encontrou evidências de notarização indevida, nenhuma modificação não autorizada em softwares publicados e nenhum comprometimento de dados de usuários ou chaves de API. Ainda assim, está tratando o certificado como comprometido e o renovando.
Essa decisão transfere a correção para cada usuário de macOS. Os novos builds assinados com o certificado atualizado chegam como as versões mínimas suportadas — ChatGPT Desktop 1.2026.051, Codex App 26.406.40811, Codex CLI 0.119.0 e Atlas 1.2026.84.2 — e depois de 8 de maio de 2026, versões mais antigas podem simplesmente parar de funcionar quando o certificado antigo for totalmente revogado.
A abordagem em etapas é intencional. A OpenAI já bloqueou novas notarizações com o certificado antigo, então um app falsificado assinado com ele falharia no Gatekeeper por padrão, a menos que o usuário ignore manualmente as proteções. A janela de 30 dias antes da revogação total existe para dar tempo aos atualizadores internos dos apps de se atualizarem, e a OpenAI diz que vai acelerar a revogação se detectar atividade maliciosa durante esse período.
O que um comprometimento no pipeline de assinatura significa para times que distribuem clientes desktop
A superfície visível desses produtos é uma janela de chat e um editor de código, mas a âncora de confiança é um certificado gerado por um job de build. Esse incidente derruba a distinção entre dependências de frontend e segurança em produção: um pacote instalado para dar suporte a ferramentas ficou no mesmo contexto de execução do material de assinatura, e uma única versão envenenada forçou uma renovação de certificado sentida por todos os usuários de Mac de quatro apps diferentes.
Para quem opera pipelines parecidos, as lições práticas são exatamente as que a própria OpenAI apontou contra si mesma — fixar actions em hashes de commit, impor uma quarentena por idade de lançamento em pacotes novos e tratar o workflow que toca chaves de assinatura como o ambiente de maior privilégio que você roda, isolado das instalações comuns de dependências. A renovação do certificado e a atualização forçada do cliente foram a recuperação cara; a prevenção barata eram duas linhas de configuração de CI.
Find this story relevant to you?
Contact us to find a unique solution
Precisa de um parceiro de engenharia de IA que consiga construir de verdade?
Ajudamos empresas no Brasil a integrar IA, acelerar produtos com IA, automatizar operações e modernizar os sistemas de software por trás do negócio.
Leituras relacionadas
Mais análises sobre entrega de produto, IA operacional e o trabalho de sistemas que faz a implantação se sustentar na prática.