CVE-2026-120203: code injection in ShowDoc via Mock, come verificare e aggiornare

Vincenzo Katriel Giuva31 ottobre 20266 min di lettura
CVE-2026-120203: code injection in ShowDoc via Mock, come verificare e aggiornare

Se la tua azienda usa ShowDoc per documentare API e procedure interne, controlla subito la versione installata. La vulnerabilità CVE-2026-120203 permette a un utente registrato di eseguire comandi di sistema sul server tramite la funzione Mock, e nell'immagine Docker ufficiale quei comandi girano come root. Le versioni interessate vanno dalla 2.8.14 alla 3.9.5. Il rimedio è aggiornare alla 3.9.6 o, se non è possibile subito, disattivare il servizio mock e la registrazione libera.

Cosa è successo: la vulnerabilità CVE-2026-120203 in ShowDoc

ShowDoc è uno strumento open source per condividere documentazione tecnica e API all'interno di un team. La funzione Mock genera dati di prova a partire da template scritti dagli utenti. Questi template vengono passati a un servizio Node interno, in ascolto su 127.0.0.1:7123, che li elabora con la libreria mockjs 1.1.0. Il problema è che mockjs valuta i parametri dei segnaposto con eval(). Un template costruito con parentesi escapate riesce a richiamare il modulo child-process di Node e a lanciare comandi shell. Si tratta quindi di una code injection che si trasforma in esecuzione remota di comandi.

Chi è colpito: versioni vulnerabili di ShowDoc

  • ShowDoc dalla 2.8.14 alla 3.9.5 inclusa. La descrizione ufficiale indica come corretta la 3.9.6.
  • Le immagini Docker ufficiali star7th/showdoc:v3.9.4 e v3.9.5 sono state verificate come vulnerabili dal ricercatore.
  • La 3.9.5, rilasciata il 21 ottobre 2026, ha aggiunto solo blocchi su Sqlite/ e Public/Uploads/. La catena Mock è rimasta invariata.
  • Serve che il servizio mock sia attivo: nell'immagine completa ufficiale lo è per impostazione predefinita.

Se hai installato ShowDoc fuori da Docker, con PHP e Node gestiti a mano, sei comunque esposto se la versione rientra nell'intervallo e il servizio mock è in esecuzione. Cambia solo l'utente con cui girano i comandi.

Quanto è grave: punteggio CVSS e sfruttamento attivo

Il punteggio CVSS 3.1 è 8.8, gravità alta, con vettore AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. In pratica: attacco via rete, bassa complessità, nessuna interazione da parte della vittima, impatto alto su riservatezza, integrità e disponibilità. Il requisito di privilegi bassi (PR:L) significa che basta un account normale con diritti di modifica su un progetto. Due dettagli rendono la cosa più seria di quanto sembri:

  • la registrazione degli utenti (register_open) non è disattivata per impostazione predefinita, quindi su un'istanza esposta chiunque può crearsi l'account necessario;
  • l'endpoint che innesca il template, MockController::infoByKey, non richiede autenticazione. Nelle versioni fino alla 3.9.4 il percorso era /server/mock-data/<key>, dalla 3.9.5 è raggiungibile l'azione ?s=/api/mock/infoByKey&unique_key=<key>.

Al momento la vulnerabilità non risulta nel catalogo CISA KEV, quindi non ci sono segnalazioni ufficiali di sfruttamento attivo. L'advisory pubblica però descrive la catena nel dettaglio e il metodo è semplice da riprodurre.

Come capire se sei esposto: verifica versione, esposizione e log

Versione installata

Se usi Docker, leggi il tag dell'immagine con docker ps e docker images star7th/showdoc. Il tag latest non dice nulla: controlla la versione mostrata nel pannello di amministrazione dell'applicazione. Qualsiasi valore da 2.8.14 a 3.9.5 è vulnerabile.

Servizio mock attivo

Entra nel container con docker exec -it <nome> sh e verifica se c'è un processo Node in ascolto sulla porta 7123 (ps aux oppure ss -lntp o netstat -lntp, a seconda di cosa è disponibile). Se il processo c'è, la catena è attiva.

Esposizione su internet

Controlla se la porta web di ShowDoc è raggiungibile dall'esterno: dal tuo firewall, dal reverse proxy, o con una prova dall'esterno della rete. Verifica anche se la registrazione libera è attiva aprendo la pagina di registrazione da un browser non autenticato.

Log e indicatori di compromissione

  • Nei log di accesso del web server cerca richieste verso /server/mock-data/ e verso ?s=/api/mock/infoByKey, in particolare da IP sconosciuti.
  • Cerca richieste di scrittura template (azione MockController::add) e registrazioni di nuovi account non riconducibili al personale.
  • Esporta i template mock salvati nel database e cerca stringhe come child_process, require, exec o sequenze di parentesi escapate.
  • Nel container cerca processi figli anomali del processo Node, file nuovi in /tmp, cron o script non previsti.

Come risolvere la vulnerabilità: patch, aggiornamento e rimedio

La descrizione ufficiale indica che il problema è corretto dalla versione 3.9.6. Il commit di correzione è pubblicato nel repository star7th/showdoc (riferimento 5a2087a3). Prima di aggiornare, verifica sulla pagina delle release del progetto che la 3.9.6 sia effettivamente disponibile e quale immagine Docker la contiene. Procedura consigliata:

  1. Fai un backup completo del database e dei volumi (Sqlite, Public/Uploads) prima di toccare qualunque cosa.
  2. Aggiorna l'immagine al tag corretto (docker pull star7th/showdoc:v3.9.6 o il tag indicato nelle release), ricrea il container e verifica la versione nel pannello.
  3. Dopo l'aggiornamento, rivedi comunque i template mock già salvati: la patch impedisce nuovi abusi, non rimuove template malevoli inseriti in precedenza.

Se non puoi aggiornare, applica i workaround della sezione successiva. Non dare per scontato che la 3.9.5 basti: non corregge questa vulnerabilità.

Cosa fare subito: mitigazioni e hardening

  1. Togli ShowDoc da internet. Rendilo raggiungibile solo dalla rete interna o tramite VPN. Se ti serve un riferimento pratico, ho descritto una configurazione adatta alle PMI nell'articolo su WireGuard per PMI.
  2. Disattiva la registrazione libera (register_open) e rimuovi gli account che non riconosci.
  3. Ferma il servizio mock se non lo usi: senza il processo Node sulla 7123 la catena non funziona.
  4. Non far girare il container come root. Se la tua installazione lo permette, usa un utente non privilegiato e limita le capability del container.
  5. Segmenta. Il server ShowDoc non deve raggiungere liberamente server di produzione, NAS o domain controller.
  6. Ruota le credenziali salvate nella documentazione: ShowDoc spesso contiene chiavi API, password di test e URL interni. Se qualcuno ha eseguito comandi come root, deve essere considerato tutto letto.

Se sospetti una compromissione: incident response e analisi forense

Se trovi template sospetti, richieste anomale nei log o processi non previsti, non spegnere il server e non ricreare subito il container: perderesti memoria volatile e file temporanei che servono a capire cosa è stato fatto. Isola la macchina a livello di rete, conserva i log del web server e del container, esporta il database e fai una copia forense dei volumi prima di qualsiasi bonifica. Il metodo è lo stesso che applico per la copia forense di un computer: hash, catena di custodia, analisi su una copia. Se nella documentazione erano presenti dati personali, valuta l'obbligo di notifica al Garante entro 72 ore previsto dal GDPR. Il mio servizio di incident response copre contenimento, analisi e relazione tecnica, con preventivo a prezzo fisso tra 1.500 e 6.000 euro a seconda dell'ampiezza.

Fonti ufficiali

Serve una verifica sulla tua installazione?

Se non sai quale versione di ShowDoc gira in azienda, se è esposta o se qualcuno l'ha già usata contro di te, posso verificarlo con un audit mirato di server e container e, se serve, gestire l'incidente. Lavoro di persona a Varese, Como e Milano e da remoto in tutta Italia. Chiedi un preventivo gratuito: rispondo entro 24 ore, anche su WhatsApp tramite la pagina contatti.

#CVE#CVE-2026-120203#ShowDoc#code injection#Docker#mockjs

Condividi l'articolo

LinkedInTwitter