WordPress corregge una vulnerabilità di esecuzione remota di codice in Imagick

WordPress corregge una vulnerabilità di esecuzione remota di codice in Imagick

WordPress 7.0.4 corregge una falla che consentiva agli autori con accesso di eseguire codice caricando un file con estensione immagine ma contenuto PostScript.

WordPress 7.0.4 include una correzione per una vulnerabilità di esecuzione remota di codice nella libreria di elaborazione immagini Imagick. I ricercatori di sicurezza di Patchstack, guidati dal responsabile della ricerca sulla sicurezza Dave Jong, hanno descritto come un autore con accesso potesse caricare un file che sembra un'immagine ma che in realtà è un programma PostScript, portando all'esecuzione di codice sul server web. La falla ha interessato le versioni core di WordPress dalla 4.7 alla 7.0, e l'annuncio su WordPress.org conferma la release di manutenzione. Per i proprietari di siti, questo è un aggiornamento prioritario perché chiude un percorso che potrebbe trasformare un normale caricamento di file multimediali in un compromesso totale del server.

WordPress utilizza ImageMagick, un potente strumento open-source per l'elaborazione delle immagini, tramite un'estensione PHP chiamata Imagick per gestire il ridimensionamento e l'elaborazione delle immagini nella libreria multimediale. Il problema è che ImageMagick comprende molto più dei formati comuni come JPEG e PNG. Può anche aprire file PostScript, EPS e PDF e, per renderizzarli, chiama Ghostscript, un programma che interpreta PostScript e PDF e che ha una lunga storia di essere ingannato per eseguire comandi che non dovrebbe. Questa è la stessa famiglia di problemi dei vecchi bug ImageTragick. Il cuore del problema è una discrepanza: ImageMagick decide che tipo di file è leggendone il contenuto, non l'estensione, mentre WordPress si fidava principalmente dell'estensione del file. Quindi un file chiamato holiday.png che in realtà contiene codice PostScript supererebbe i controlli di caricamento, verrebbe passato a Imagick, che riconosce il PostScript al suo interno e attiva Ghostscript per eseguire il codice.

Il codice vulnerabile si trova nel metodo WP_Image_Editor_Imagick::load() di WordPress. Quel metodo decideva come passare un file caricato a ImageMagick basandosi solo sull'estensione del file, senza mai ispezionarne il contenuto. Il codice prima controllava se l'estensione è pdf e, in caso contrario, chiamava readImage() o readImageBlob(), che annusano i magic bytes del file e ignorano il nome del file. Quindi il contenuto che inizia con le firme %!, \x04%!, \xC5\xD0\xD3\xC6 o \xFFWPC seleziona il decodificatore PostScript, EPS o WPG di ImageMagick, che poi chiama Ghostscript per eseguire il file come programma PostScript. Durante un normale flusso di caricamento file, la funzione di WordPress wp_check_filetype_and_ext() rileva questa discrepanza e impedisce l'attacco. Ma non tutti i percorsi di caricamento passano attraverso quel controllo. Il metodo wp.uploadFile di XML-RPC e la routine di estrazione della copertina per MP3 caricati scrivono entrambi i loro byte con wp_upload_bits(), che non ispeziona mai il contenuto, quindi il payload dannoso finisce su disco e raggiunge il codice vulnerabile.

Patchstack riferisce che la correzione è nel commit 7daaa50 nel core di WordPress. La funzione load() aggiornata ora controlla il contenuto reale del file prima di costruire l'oggetto Imagick, quindi nulla viene mai passato a un decodificatore della famiglia PostScript. In concreto, la patch annusa il primo blocco di ogni file e rifiuta i file PostScript ed EPS in base alle loro firme, all'estensione o ai prefissi del formato ImageMagick. Rifiuta anche i finti PDF, cioè i file che dichiarano un'estensione PDF ma non iniziano con il vero marcatore %PDF-. Blocca i file compressi che ImageMagick decomprimerebbe silenziosamente, come gli archivi gzip e bzip2, che erano un altro modo per introdurre contenuti oltre i controlli. C'è anche un pezzo più sottile: ImageMagick consente di forzare un particolare gestore anteponendo un prefisso al nome del file, come EPS:innocent.png. Il nuovo codice rimuove e ispeziona questi prefissi, facendo attenzione a non inciampare nelle lettere di unità di Windows come C:, quindi un utente malintenzionato non può usare il nome del file stesso per indirizzare Imagick verso Ghostscript. Poiché lo stesso trucco può arrivare tramite un URL remoto o uno stream, la correzione analizza i nomi dei file da queste fonti prima di validarli.

Per sfruttare questa vulnerabilità, un utente malintenzionato deve essere in grado di caricare file multimediali, il che significa un account di livello Autore o superiore in WordPress. Questo non è un attacco anonimo e casuale che chiunque può lanciare. Ma molti siti web distribuiscono account Autore più liberamente di quanto pensino. Se gestisci una pubblicazione con più autori, un sito di membership, un sito client con contributori o qualsiasi cosa con registrazione aperta o gestita in modo lasco, quella barriera di accesso è molto più bassa di quanto sembri. Su quei siti, un Autore che carica un'immagine trappola è una minaccia genuinamente realistica, non teorica. Se il tuo sito ha solo te e un gruppo ristretto e fidato di editor, la tua esposizione è minore, ma l'aggiornamento è comunque importante perché un account editor compromesso potrebbe essere usato allo stesso modo.

L'azione immediata è aggiornare WordPress alla versione 7.0.4 o successiva. Se hai abilitato gli aggiornamenti automatici in background, potresti essere già coperto, quindi vale la pena controllare rapidamente la versione corrente. Se aggiorni manualmente, dai priorità a questo, soprattutto su qualsiasi sito in cui gli account vengono distribuiti oltre al tuo team principale. Questo incidente è anche un utile promemoria sulla gestione dei file multimediali in generale: la parte rischiosa di solito non è l'immagine stessa, ma tutto il resto che la libreria di immagini è disposta silenziosamente ad aprire. Per i proprietari di siti web che vogliono ridurre la finestra di esposizione tra una release di sicurezza e la sua applicazione, l'hosting WordPress gestito come AEU Hosting fornisce manutenzione incentrata sulla sicurezza, inclusi aggiornamenti automatici di core e plugin come parte della sua piattaforma protetta end-to-end. Questo tipo di aggiornamento gestito aiuta a garantire che patch come questa vengano installate tempestivamente senza richiedere intervento manuale.

Infine, rivedi i ruoli utente sul tuo sito. Rimuovi l'accesso di livello Autore da chiunque non ne abbia bisogno e considera l'uso di un plugin di sicurezza che ispezioni il contenuto dei file durante il caricamento, non solo le estensioni. La lezione fondamentale di questa falla è che i nomi dei file non sono un indicatore affidabile di ciò che un file contiene realmente e i controlli di sicurezza devono guardare ai dati stessi.

Come Proteggerti

  1. Aggiorna subito il tuo sito WordPress alla versione 7.0.4 o successiva.
  2. Attiva gli aggiornamenti automatici in background in WordPress, così le future correzioni di sicurezza verranno installate senza che tu debba ricordartene.
  3. Controlla l'elenco degli account utente sul tuo sito e rimuovi o declassa qualsiasi account di livello Autore che non ha più bisogno di caricare file.
  4. Usa un plugin di sicurezza che controlli il contenuto effettivo dei file caricati, non solo l'estensione del nome del file.
  5. Se gestisci il tuo server, aggiorna i programmi ImageMagick e Ghostscript alle loro ultime versioni, perché le versioni precedenti hanno vulnerabilità di sicurezza note.

I Termini Spiegati

  • ImageMagick Una suite software open-source per modificare e convertire immagini che WordPress può usare per elaborare le immagini caricate.
  • Imagick Un'estensione PHP che consente a WordPress di comunicare con ImageMagick per ridimensionare e manipolare le immagini.
  • Ghostscript Un programma che interpreta file PostScript e PDF e può essere indotto a eseguire comandi dannosi se gli vengono forniti file appositamente predisposti.
  • PostScript Un linguaggio di descrizione della pagina originariamente usato per le stampanti, ma anche un formato che può contenere codice eseguibile.
  • Magic bytes I primi byte di un file che identificano il tipo reale di file, indipendentemente dal suo nome.
  • XML-RPC Un protocollo di chiamata di procedura remota che WordPress usa per alcune funzionalità esterne, incluso un metodo di caricamento file.
  • Author-level Un ruolo utente di WordPress che consente di creare e pubblicare articoli e caricare file multimediali.
  • Remote code execution Un tipo di vulnerabilità di sicurezza che consente a un attaccante di eseguire i propri comandi su un server.

Servizi AEU correlati

  • AEU Panel Pannello di controllo per l'hosting gestito