Adobe Campaign Classic CVE-2026-48449: lo stesso CVSS 10.0, per la terza volta
Terzo bypass di autorizzazione CVSS 10.0 in Adobe Campaign Classic in 50 giorni. La build che vi metteva in sicurezza a giugno è quella vulnerabile a luglio — e Adobe sta per smettere di contarli separatamente.
Il 29 luglio 2026 Adobe ha pubblicato APSB26-114, bollettino di Priorità 1 per Adobe Campaign Classic. Corregge CVE-2026-48449 — CWE-863, Incorrect Authorization, esecuzione di codice arbitrario, CVSS 3.1 pari a 10.0, vettore AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H. Non autenticato, nessuna interazione utente, scope changed, tutto su high.
È il terzo bypass di autorizzazione a severità massima che Adobe rilascia sullo stesso prodotto in 50 giorni. Non tre bug sparsi su una famiglia di prodotti affini: tre bollettini su Adobe Campaign Classic v7, ognuno dei quali chiude un'altra strada attraverso lo stesso presupposto sbagliato, e ogni fix diventa la versione vulnerabile del bollettino successivo. Se il vostro processo di vulnerability management consuma identificativi CVE e confronta stringhe di versione, questo prodotto ha passato due mesi a dimostrare che nessuna delle due cose è un controllo.
Tre bollettini Adobe Campaign Classic, un solo modello di autorizzazione
La sequenza, presa alla lettera dagli advisory Adobe:
| Bollettino | Pubblicato | CVE | Categoria | CVSS | Build affetta | Build corretta |
|---|---|---|---|---|---|---|
| APSB26-66 | 9 giu 2026 | CVE-2026-48303 | Incorrect Authorization (CWE-863) | 10.0 | ≤ 7.4.3 build 9394 | 9396 |
| APSB26-66 | 9 giu 2026 | CVE-2026-47938 | Incorrect Authorization (CWE-863) | 10.0 | ≤ 7.4.3 build 9394 | 9396 |
| APSB26-69 | 30 giu 2026 | CVE-2026-48286 | Incorrect Authorization (CWE-863) | 10.0 | ≤ 7.4.3 build 9396 | 9397 |
| APSB26-114 | 29 lug 2026 | CVE-2026-48449 | Incorrect Authorization (CWE-863) | 10.0 | ≤ 7.4.3 build 9397 | 9398 |
| APSB26-114 | 29 lug 2026 | CVE-2026-48448 | SQL Injection (CWE-89) | 8.6 | ≤ 7.4.3 build 9397 | 9398 |
Tutti e tre i bollettini sono Priorità 1. Tutti e tre riportano la stessa nota: l'advisory riguarda i deployment interamente on-premise e le componenti on-premise dei deployment ibridi, perché le istanze ospitate da Adobe "sono già state remediate e non richiedono azioni da parte del cliente". E le quattro voci di code execution condividono un vettore CVSS identico, carattere per carattere.
Un dettaglio da segnalare per correttezza: la tabella dell'advisory Adobe classifica CVE-2026-47938 come CWE-863 con impatto di esecuzione di codice arbitrario, mentre NVD lo registra come CWE-918 (server-side request forgery) con impatto di privilege escalation. Stesso punteggio, stesso vettore, due racconti diversi su cosa sia il bug. Teniamolo da parte: diventa il punto centrale più avanti.
I ringraziamenti dicono quanto le vulnerabilità. APSB26-66 ringrazia un ricercatore esterno con nome e cognome, Jamie Parfet, per il solo CVE-2026-48303. Le altre quattro voci nei tre bollettini non hanno alcun credito esterno: è l'aspetto tipico delle scoperte interne su un bollettino Adobe.
Cosa raggiunge davvero CVE-2026-48449
"Esecuzione di codice arbitrario nel contesto dell'utente corrente" è una frase piatta che nasconde un raggio d'azione anomalo, per via di cosa sia Adobe Campaign Classic.
ACC on-premise non è un sito web. È una piattaforma di esecuzione marketing e, secondo la documentazione di configurazione del server di Adobe, il processo nlserver fa girare sulla stessa macchina una serie di moduli: web (un'istanza Tomcat, di default sulla porta 8080), wfserver (il motore di workflow), mta (il mail transfer agent che invia materialmente le campagne), tracking, inMail e syslogd. Su Linux girano come utente dedicato neolane, con home in /usr/local/neolane.
Messo tutto insieme, l'esecuzione di codice atterra contemporaneamente accanto a tre cose:
- Il datamart dei destinatari. Il database marketing è l'archivio di dati personali a più alta cardinalità che la maggior parte delle organizzazioni possiede: nomi, indirizzi, numeri di telefono, flag di consenso, storico comportamentale, attributi di segmentazione. Di norma è un ritratto del cliente più completo di quello nel CRM.
- La capacità di inviare mail come il brand. L'MTA è configurato con i vostri relay e, nella maggior parte dei deployment, con il materiale di firma dei domini di invio. L'esecuzione di codice sull'host MTA non produce phishing che assomiglia al vostro brand: produce posta che si autentica come il vostro brand, verso la vostra lista opt-in, dalla vostra infrastruttura.
- Una superficie di esecuzione comandi documentata. Le linee guida di sicurezza Adobe raccomandano di limitare i comandi esterni a un utente Unix dedicato, proprio perché il motore di workflow è progettato per eseguire comandi esterni e JavaScript. Chi arriva al motore di workflow con diritti da operatore non ha bisogno di piazzare una webshell per avere uno scheduler, un interprete e un canale di esfiltrazione: sono funzionalità di prodotto.
CVE-2026-48448, la SQL injection valutata 8.6, è quella silenziosa dello stesso bollettino. NVD la descrive come lettura arbitraria del file system. Su un server ACC i file interessanti non sono i documenti degli utenti: sono serverConf.xml e config-<instance>.xml, che contengono i parametri di connessione al database e il materiale degli account interni. Una lettura di file su questo prodotto è una raccolta di credenziali.
La build che vi salvava a giugno è quella che vi ha esposti a luglio
Rileggete le colonne "affetta" e "corretta" come una linea temporale, non come una tabella.
La build 9396 era il rimedio che Adobe indicava di installare il 9 giugno. Il 30 giugno la build 9396 era la versione vulnerabile. La build 9397 era il rimedio del 30 giugno. Il 29 luglio la build 9397 era la versione vulnerabile. Due volte di fila, un'organizzazione che ha patchato subito e correttamente — dentro le 72 ore indicate da Adobe stessa — si è ritrovata con una RCE non autenticata a severità massima nel giro di tre settimane, senza aver sbagliato nulla.
"Siamo sull'ultima build." "Aggiornata a quando? Perché la vostra evidenza di conformità dice 9397, l'ultimo scan dice 9397, e dal 29 la 9397 è un CVSS 10.0."
Questo è l'aspetto che ha un difetto di classe visto da fuori. Quando lo stesso CWE, lo stesso impatto e lo stesso vettore CVSS si ripetono su build consecutive di un prodotto, la lettura onesta non è "sono stati trovati tre bug scorrelati". È che il modello di autorizzazione ha una debolezza sistemica e ogni bollettino ne chiude un percorso in più. Il flusso di un-CVE-per-endpoint è il sintomo: la correzione non sta nell'elenco dei CVE.
Conseguenza operativa: un controllo di versione risponde a "ho applicato l'ultimo fix noto", che è una domanda strettamente più debole di "questo endpoint è raggiungibile e applica l'autorizzazione?". Delle due, solo la seconda sopravvive al bollettino successivo.
SAP ha spedito la stessa forma nel 2023
Il pattern ha un precedente, e vale la pena nominarlo perché dice cosa aspettarsi.
A marzo 2023 SAP ha pubblicato una serie di advisory su NetWeaver Application Server for Java 7.50 con descrizioni quasi intercambiabili. CVE-2023-24526 (CWE-306, CVSS 5.3): il Classload Service "non esegue alcun controllo di autenticazione per funzionalità che richiedono l'identità dell'utente". CVE-2023-26460 (CWE-284, CVSS 5.3): il Cache Management Service, stessa frase. Stesso prodotto, stessa versione, stesso giorno, servizio diverso — un CVE ciascuno.
Se ne generalizzano due cose. Primo: quando l'autorizzazione di una piattaforma è applicata per-servizio invece che centralmente, il numero di finding scala con il numero di servizi che qualcuno si è preso la briga di guardare, non con il numero di difetti nel disegno. Secondo: i punteggi si frammentano. Quelle voci SAP valevano 5.3 prese singolarmente — un numero da "prossimo trimestre" — mentre la condizione sottostante, accesso non autenticato a servizi interni su un host di middleware, non è un problema da 5.3. La versione Adobe di questa storia segna 10.0 ogni volta, il che almeno fallisce rumorosamente.
Adobe sta per smettere di contarli separatamente
Veniamo alla nota a piè di pagina. In fondo ad APSB26-114, sotto la tabella delle vulnerabilità, Adobe ha aggiunto questo:
"Effective August 11, 2026, Adobe may assign a single CVE identifier to internally discovered vulnerabilities with the same severity rating and CWE category when a release includes systemic fixes."
Otto giorni dopo questo articolo, esattamente il segnale che ha reso visibile il pattern di Campaign Classic — tre identificativi CVE, stesso CWE, stessa severità, build consecutive — diventa un solo CVE per policy. Le cinque voci della tabella qui sopra, con la nuova regola, si comprimerebbero plausibilmente a due.
Non è Adobe che viola le regole. Le CNA Rules del programma CVE richiedono identificativi separati per vulnerabilità correggibili in modo indipendente e stabiliscono esplicitamente che, quando una CNA non è certa che due problemi siano correggibili in modo indipendente, dovrebbe assegnare un identificativo unico. Una release che contiene fix sistemici a un unico modello di autorizzazione è una scelta difendibile. E Adobe non lo sta nascondendo: la policy è pubblicata nel bollettino e sul blog di sicurezza Adobe, dove si legge che "alcune release potrebbero non avere singoli CVE assegnati a ciascuna vulnerabilità quando la release contiene fix estesi".
La parte su cui vale la pena fermarsi è il perché stia succedendo. Lo stesso post spiega la ragione del passaggio a bollettini bisettimanali dal 14 luglio 2026:
"I modelli di frontiera e gli strumenti di analisi agentica ora individuano difetti su codebase estese molto più rapidamente di quanto potessero fare i metodi tradizionali. Adobe sta applicando quelle stesse capacità in modo continuo per accelerare la scoperta di vulnerabilità sui propri prodotti su scala macchina... la finestra tra divulgazione pubblica e sfruttamento attivo si sta comprimendo da giorni a ore."
La catena è quindi: la scoperta assistita da AI alza il tasso di ritrovamento interno, il tasso di ritrovamento supera un bollettino mensile, la cadenza raddoppia, e l'identificativo CVE — uno per difetto correggibile indipendentemente — smette di essere un'unità praticabile quando una singola release corregge un'intera classe in un colpo solo. Adobe non sta tanto distorcendo una metrica, quanto dimostrando che quella metrica è sempre stata un proxy dello sforzo ingegneristico, non del rischio.
Chi sta a valle dovrebbe accorgersene, perché quel proxy regge parecchio peso. "CVE critici aperti" sta sulle dashboard di sicurezza. "CVE remediati nel trimestre" finisce nei pacchetti per il board. Gli SLA di patching sono scritti per-CVE. I questionari di vendor risk contano i CVE per prodotto per anno. Ognuno di quei numeri sta per muoversi, almeno per un fornitore importante, senza alcun cambiamento nel rischio sottostante — e si muoverà verso il basso, che è la direzione che nessuno verifica.
Ne discendono due corollari:
- Un conteggio CVE in calo non è prova di sicurezza di prodotto in miglioramento, e dall'11 agosto non è nemmeno prova di un calo dei difetti. Se la vostra metrica può essere cambiata dalla policy editoriale di qualcun altro, non è mai stata la vostra metrica.
- Il rapporto CVE/CWE è ormai un proxy rotto della profondità. Un CVE unificato che copre un fix sistemico e un CVE che copre un bug su un singolo endpoint appariranno identici in un feed. A distinguerli è solo il testo del bollettino, che la maggior parte delle pipeline di vulnerability management non legge in automatico.
L'unità di misura difendibile non è mai stata il CVE. È se un percorso specifico, su un asset specifico del vostro perimetro, sia raggiungibile e sfruttabile adesso.
Remediation
Priorità 1, nessuno sfruttamento noto al 29 luglio secondo Adobe — che è una finestra, non un'assenza. Per calibrare: quando Adobe ha rilasciato ColdFusion CVE-2026-48282 il 1° luglio, la falla era sotto attacco attivo poche ore dopo la divulgazione. L'abbiamo analizzata qui. Stesso fornitore, stesso mese, stessa formula "non siamo a conoscenza di exploit" nel bollettino.
1. Sono esposto?
Tre condizioni, tutte da verificare: la versione è solo la prima.
Tipo di deployment. Le istanze ospitate da Adobe sono già remediate. Riguarda i deployment interamente on-premise e le componenti on-premise dei deployment ibridi. L'ibrido è la trappola: i team che hanno migrato console e reporting su hosting Adobe spesso mantengono un MTA o una macchina di mid-sourcing on-premise, e quella macchina rientra nel perimetro.
Numero di build. Secondo la documentazione di installazione Adobe, nlserver pdump riporta versione e build di un server in esecuzione:
# Sul server Campaign (Linux, come utente neolane)
nlserver pdump # -> "Application server for Adobe Campaign Classic (7.X YY.R build XXXX@SHA1)"
# Controprova dal package manager: il numero di build è nel nome del pacchetto
rpm -qa | grep nlserver # -> nlserver6-v7-<build>-0.x86_64.rpm
Qualsiasi cosa alla build 9397 o inferiore è vulnerabile a CVE-2026-48449 e CVE-2026-48448. Qualsiasi cosa alla 9396 o inferiore era già vulnerabile a CVE-2026-48286 dal 30 giugno: controllate lo storico delle patch, non solo lo stato attuale.
Raggiungibilità. Testate dall'esterno del perimetro, da un host che non stia sulla VLAN di management né in un range in allow-list. Quello che cercate è se il web tier risponde a un chiamante non autenticato:
# Da un punto di osservazione esterno, non dall'interno del perimetro
curl -skI https://<campaign-host>/ # il tier applicativo risponde?
curl -skI http://<campaign-host>:8080/ # il modulo Tomcat è esposto direttamente?
Un reverse proxy davanti non vi mette al sicuro di per sé, ma un modulo web di Campaign che risponde direttamente sulla 8080 da internet è un'emergenza indipendente da qualsiasi CVE.
2. Patch — versioni corrette esatte
| Prodotto | Versione corretta | Piattaforma | Priorità |
|---|---|---|---|
| Adobe Campaign Classic | ACC v7: 7.4.3 build 9398 | Windows, Linux | 1 |
Per il ciclo di fix Priorità 1 su ColdFusion l'indicazione Adobe era di patchare "il prima possibile (per esempio entro 72 ore)". Applicate lo stesso orologio qui. E mettete in calendario il prossimo: Adobe ora pubblica il secondo e il quarto martedì di ogni mese.
3. Non potete patchare subito? Controlli compensativi
Sono tutte configurazioni documentate da Adobe, in serverConf.xml e config-<instance>.xml nella directory conf dell'installazione. Nessuna sostituisce la build 9398: restringono chi può raggiungere il codice vulnerabile.
- Security zone. ACC ha un modello a security zone con zone
public,vpnelaned elementisubNetworkche portano le maschere IP. Verificate a quale zona si risolve il percorso esposto su internet e cosa quella zona consente. ImpostatesessionTokenOnlydove l'autenticazione utente/password non serve, forzateallowDebuga off in produzione, e metteteallowUserPassworda true solo per le zone e le integrazioni che ne hanno davvero bisogno. - Legate le sessioni all'IP sorgente. Impostate
checkIPConsistent="true"nel nodo di autenticazione e abbassatesessionTimeOutSecesecurityTimeOutSecrispetto ai default di 86400 secondi. Un token di sessione lungo un giorno su un server marketing esposto è una finestra lunga un giorno. - Mettete davanti un vero web server. La raccomandazione di Adobe è un web server dedicato come unico punto di ingresso HTTP quando l'host Campaign è raggiungibile da internet. Terminate lì il TLS, mettete in allow-list solo i path che tracking, mirror page e integrazioni usano davvero, e scartate tutto il resto — compresi i metodi HTTP che Adobe documenta come rischio su
nlserverporta 8080 (DELETE, OPTIONS). - Restringete la superficie SSRF. ACC governa l'accesso a URL in uscita da JavaScript con tre modalità: blocking (solo allow-list, il default), permissive e warning. Verificate di essere in blocking. I deployment scivolano in permissive durante un progetto di integrazione e ci restano; CVE-2026-47938 è esattamente la classe di bug che trasforma quella deriva in privilege escalation.
- Restringete upload e comandi esterni. Applicate
serverConf/shared/datastore/@uploadAllowlistcon una regex stretta sui tipi di file, e verificate che i comandi esterni dei workflow girino come utente Unix dedicato e a privilegi bassi, distinto dall'account proprietario dell'applicazione e della sua configurazione.
4. Caccia alla compromissione
Non date nulla per scontato sul dwell time: la build 9396 è sfruttabile dal 30 giugno e la 9394 dal 9 giugno. La vostra finestra di caccia inizia a inizio giugno, non il 29 luglio.
| Fase | ATT&CK | Cosa cercare |
|---|---|---|
| Accesso iniziale | T1190 | Richieste non autenticate agli endpoint applicativi nei log del web tier — soprattutto POST che precedono la comparsa di una sessione senza un evento di login |
| Esecuzione | T1059 | Attività di workflow che invocano comandi esterni o JavaScript, create o modificate fuori dalle finestre di change |
| Persistenza | T1505.003 | File nuovi o modificati sotto la web root e nel datastore di upload; timestamp che non corrispondono a un deployment |
| Persistenza | T1136 / T1078 | Account operatore creati nello schema Campaign, o operatori esistenti promossi ad admin, senza un ticket a monte |
| Accesso credenziali | T1552.001 | Letture di serverConf.xml / config-<instance>.xml — il bersaglio della lettura file di CVE-2026-48448 |
| Raccolta | T1213 | Query o export massivi sulle tabelle dei destinatari; workflow inspiegati con attività di export o scrittura file |
| Esfiltrazione | T1041 / T1567 | Sessioni in uscita dall'utente applicativo verso destinazioni fuori dall'insieme noto delle integrazioni |
| Impatto | T1566 | Delivery che non corrispondono a una campagna approvata; variazioni improvvise nella dimensione del target o nel dominio di invio |
Due segnali specifici di Campaign che quasi tutte le hunt generiche si perdono. Primo: confrontate il log delle delivery con il piano di campagna. Una mail partita dalla vostra infrastruttura, verso la vostra lista, con le vostre chiavi di firma è invisibile a qualunque controllo anti-phishing possediate; l'unico posto dove risulta sbagliata è accanto al calendario marketing. Secondo: controllate le baseline di volume su tracking e MTA. L'esfiltrazione di un database di destinatari da un host il cui mestiere è generare traffico in uscita ad alto volume si nasconde nel rumore di fondo per costruzione.
I log del server sono gestiti dal modulo syslogd e ruotano — il default documentato è 10 MB per file. Copiateli fuori dall'host prima di aggiornare.
5. Bonifica e verifica
L'ordine conta. Non patchate per primi se avete qualsiasi indizio di compromissione, perché l'upgrade rimescola le prove.
- Preservate. Snapshot dell'host e copia dell'albero dei log e della directory
conffuori dalla macchina prima di qualsiasi upgrade. - Patchate alla build 9398.
- Ruotate ciò che il bug poteva leggere. CVE-2026-48448 è una lettura arbitraria di file e CVE-2026-48449 è esecuzione di codice come utente applicativo: considerate esposti le credenziali di database referenziate nella configurazione
dbcnx, il materiale degli account interni sotto il nodo di autenticazione, le password degli operatori, le credenziali dei relay SMTP e qualsiasi token di integrazione Experience Cloud o AEM. Se l'istanza custodisce chiavi di firma DKIM per i vostri domini di invio, ruotate anche quelle: è l'unica credenziale la cui compromissione è invisibile al destinatario e costosa da recuperare. - Fate il diff della configurazione rispetto a una baseline fidata: definizioni delle security zone, maschere IP, modalità URL in uscita, allow-list degli upload. Un attaccante che allarga una zona lascia una modifica che sopravvive alla vostra patch.
- Ri-verificate dall'esterno. Ripetete il test di raggiungibilità da un punto di osservazione esterno dopo la modifica, non da una jump host già in allow-list.
- Ricostruite se avete trovato artefatti di esecuzione. Con un motore di workflow che esegue comandi esterni come funzionalità di prodotto, "abbiamo rimosso la webshell" non è una conclusione difendibile.
Una nota legale per gli operatori europei: il datamart dei destinatari è dato personale su larga scala. Se la caccia trova evidenza di accesso e non di sola esposizione, l'orologio dell'articolo 33 GDPR e gli eventuali obblighi di notifica NIS2 decorrono dalla consapevolezza — il che rende la qualità e la marcatura temporale delle vostre evidenze parte integrante del lavoro.
Dove si colloca Zero Hunt
Tutto quanto sopra converge su una domanda a cui un feed di CVE strutturalmente non può rispondere: sulla mia istanza, oggi, questo percorso è raggiungibile e applica l'autorizzazione? Adobe ha appena passato 50 giorni a dimostrare che "siamo sull'ultima build" ha una scadenza misurabile in settimane, e dall'11 agosto il conteggio CVE su cui rendiconta la maggior parte dei programmi smette di essere un'unità stabile.
È esattamente il vuoto per cui è stato costruito lo swarm di 10 agenti AI di Zero Hunt. Gli agenti Recon e Web stabiliscono cosa è realmente raggiungibile sul perimetro invece di quanto dichiara la CMDB, e l'agente Exploit genera una catena di exploit per-target con un LLM locale invece di rigiocare un PoC che potrebbe non corrispondere al vostro deployment — cosa che qui pesa parecchio, perché con le topologie ibride due organizzazioni sulla stessa build hanno esposizioni completamente diverse. Ogni skill è backtestata nell'AI Gym contro Vulhub e Vulhub-Bench prima di toccare la produzione, e ogni finding è firmato ECDSA al momento della scrittura: quello che vi resta in mano è un'affermazione datata e verificabile sul fatto che uno specifico endpoint fosse o non fosse sfruttabile — evidenza, non una stringa di versione. Le campagne change-triggered chiudono il resto del divario: con una cadenza di bollettini bisettimanale, uno scheduler che rivalida entro un'ora da una modifica del perimetro è la differenza tra tre settimane di esposizione e un giorno solo.
Il lato compliance qui conta più del solito, perché questo articolo parla anche di una metrica che sta cambiando silenziosamente sotto i piedi di tutti. La mappatura continua dei finding di Zero Hunt su 32 framework — NIS2, ISO 27001, DORA, GDPR e gli altri — è calcolata su finding validati e pesati per severità sul vostro perimetro, non su conteggi di identificativi emessi da un fornitore. Quando un auditor chiederà quale fosse la vostra esposizione su Adobe Campaign tra il 9 giugno e il 3 agosto, la risposta dovrebbe essere una catena di evidenze firmate dal Trust Center con le date sopra, non un conteggio di CVE le cui regole di conteggio sono cambiate a metà periodo.
Se gestite Campaign Classic on-premise: patchate oggi alla 9398, poi andate a scoprire cos'altro su quell'host risponde a un chiamante non autenticato. Il quarto bollettino è una questione di quando, non di se.
Zero Hunt è un'appliance 100% on-premise — nessuna callback verso il cloud, nessuna API LLM esterna, air-gap supportato. Scoprite come funziona la piattaforma o contattateci.