News · OpenAI ruota il certificato di firma macOS dopo che una build compromessa di Axios è finita nella sua pipeline di firma delle app
OpenAI ruota il certificato di firma macOS dopo che una build compromessa di Axios è finita nella sua pipeline di firma delle app
Una dipendenza JavaScript compromessa ha raggiunto il workflow che certifica ChatGPT Desktop, Codex e Atlas — e la soluzione è un aggiornamento client obbligatorio prima dell'8 maggio 2026.
Una libreria HTTP frontend finita dentro il job di code-signing
Axios è uno dei client HTTP più utilizzati nell'ecosistema JavaScript — il tipo di dipendenza che si annida silenziosamente nell'albero transitivo di innumerevoli progetti frontend e di tooling Node. Il 31 marzo 2026 (UTC) è stata pubblicata una versione malevola, la 1.14.1, come parte di un attacco più ampio alla supply chain.
Ciò che rende specifica la divulgazione di OpenAI è dove quella libreria era in esecuzione. La build compromessa di Axios è stata scaricata ed eseguita da un workflow GitHub Actions usato nel processo di firma delle app macOS di OpenAI — lo stesso job che aveva accesso al certificato e al materiale di notarizzazione per ChatGPT Desktop, Codex, Codex CLI e Atlas. Un package JavaScript pensato per fare richieste web si è trovato adiacente alle chiavi che dicono a macOS che queste app provengono davvero da OpenAI.
La lezione scomoda è che una pipeline di firma è affidabile solo quanto ogni singolo package che installa in fase di build. Il certificato è il gioiello della corona; il workflow che lo circonda ha ereditato la superficie di rischio dell'intero grafo di dipendenze npm.
Due errori di configurazione concreti individuati da OpenAI
OpenAI è insolitamente precisa sulla causa principale. Il workflow faceva riferimento all'azione incriminata tramite un tag non fissato invece di un hash di commit specifico, e non aveva un minimumReleaseAge configurato per i nuovi package.
L'azione in questione usava un tag mobile, invece di un hash di commit specifico, e non aveva un minimumReleaseAge configurato per i nuovi package.Montana Labs
Entrambi gli errori sono familiari a chiunque gestisca una CI. Un tag mobile significa che il workflow accetta silenziosamente qualunque cosa il maintainer — o un attaccante che ha compromesso il maintainer — decida di puntare a quel tag. Un minimumReleaseAge avrebbe imposto una finestra di quarantena, rifiutando package pubblicati troppo di recente per essere stati verificati; se fosse stato impostato, la versione malevola del 31 marzo forse non sarebbe mai stata scaricata. Non si tratta di difese esotiche: sono i consigli standard di hardening per fissare e ritardare gli aggiornamenti delle dipendenze, applicati qui a una pipeline il cui raggio d'impatto si è rivelato essere un certificato di firma.
Il rimedio scarica il costo sul client, non sul server
OpenAI ha concluso che il certificato probabilmente non è stato esfiltrato, citando il timing del payload, la sequenza di iniezione del certificato e altri fattori attenuanti. Non ha trovato prove di un uso improprio della notarizzazione, né modifiche non autorizzate al software pubblicato, né una compromissione dei dati utente o delle chiavi API. Eppure tratta comunque il certificato come compromesso e lo sta ruotando.
Questa decisione trasferisce il rimedio su ogni utente macOS. Le nuove build firmate con il certificato aggiornato vengono distribuite come le prime versioni supportate — ChatGPT Desktop 1.2026.051, Codex App 26.406.40811, Codex CLI 0.119.0 e Atlas 1.2026.84.2 — e dopo l'8 maggio 2026 le versioni più vecchie potrebbero smettere completamente di funzionare una volta revocato del tutto il vecchio certificato.
L'approccio graduale è deliberato. OpenAI ha già bloccato nuove notarizzazioni con il vecchio certificato, quindi un'app falsificata firmata con esso non passerebbe Gatekeeper per impostazione predefinita, a meno che un utente non aggiri manualmente le protezioni. La finestra di 30 giorni prima della revoca completa serve a dare tempo agli aggiornatori integrati nelle app di recuperare terreno, e OpenAI afferma che accelererà la revoca se rileva attività malevole durante quella finestra.
Cosa significa una pipeline di firma compromessa per i team che distribuiscono client desktop
La superficie visibile di questi prodotti è una finestra di chat e un editor di codice, ma l'ancora di fiducia è un certificato prodotto da un job di build. Questo incidente fa crollare la distinzione tra dipendenze frontend e sicurezza in produzione: un package installato per supportare il tooling si trovava nello stesso contesto di esecuzione del materiale di firma, e una release avvelenata ha costretto a una rotazione del certificato avvertita da ogni utente Mac di quattro app diverse.
Per chiunque gestisca pipeline simili, le lezioni applicabili sono quelle che OpenAI riconosce a proprio carico — fissare le action a hash di commit, imporre una quarantena basata sull'età della release per i nuovi package, e trattare il workflow che tocca le chiavi di firma come l'ambiente a più alto privilegio che gestisci, isolato dalle installazioni ordinarie delle dipendenze. La rotazione del certificato e l'aggiornamento client obbligatorio sono stati il recupero costoso; la prevenzione economica erano due righe di configurazione CI.
Find this story relevant to you?
Contact us to find a unique solution
Cerchi un partner di ingegneria AI capace di costruire davvero?
Aiutiamo le aziende a integrare l AI nei prodotti, automatizzare i flussi di lavoro ad alto valore e modernizzare i sistemi software che sostengono la crescita.
Letture correlate
Altre analisi su delivery di prodotto, IA operativa e il lavoro sui sistemi che fa reggere il deployment alla prova dei fatti.