Una vulnerabilità critica nel plugin di WordPress LayerSlider potrebbe consentire agli aggressori non autenticati di estrarre gli hash delle password tramite SQL injection.
Il bug, tracciato come CVE-2024-2879ha un punteggio CVSS di 9,8 e influisce sulle versioni di LayerSlider dalla 7.9.11 alla 7.10.0. Una patch per il difetto è stata resa disponibile per la prima volta il 27 marzo con il file rilascio di LayerSlider 7.10.1.
LayerSlider è un plug-in per contenuti web visivi, progettazione grafica ed effetti visivi digitali con “milioni” di utenti in tutto il mondo, secondo il suo sito web.
La vulnerabilità LayerSlider era scoperto e segnalato da AmrAwad durante il Bug Bounty Extravaganza di Wordfence il 25 marzo, guadagnando al ricercatore una taglia di $ 5.500, la più alta mai pagata da Wordfence.
Il potenziale per l'iniezione SQL risiede nella funzione di LayerSlider per interrogare i markup dei popup dello slider. Se il parametro “id” della funzione “ls_get_popup_markup” non è un numero, non viene ripulito prima di essere passato alla funzione “trova”.
Inoltre, mentre il plugin esegue l'escape dei valori $args utilizzando la funzione “esc_sql”, la chiave “where” è esclusa da questa funzione di escape e quindi gli input controllati dall'aggressore contenuti all'interno di “where” possono essere inclusi nelle query al database della vittima.
Di conseguenza, un utente malintenzionato potrebbe creare una richiesta manipolando “id” e “dove” per estrarre informazioni sensibili, inclusi gli hash delle password, dal database.
Tuttavia, le SQL injection basate su UNION non sono possibili quando si sfrutta questa vulnerabilità a causa della struttura delle query, quindi un utente malintenzionato dovrebbe fare il passo aggiuntivo includendo le istruzioni SQL CASE e il comando “SLEEP” nelle proprie richieste.
Questo metodo, noto come blind SQL injection basato sul tempo, prevede l'estrazione indiretta dei dati monitorando il tempo di risposta del server del database in base alle istruzioni CASE vero/falso specificate e al tempo SLEEP.
Interrogare ripetutamente il database con diverse condizioni CASE e osservare il tempo di risposta consente infine all'aggressore di determinare i valori contenuti nel database.
“Si tratta di un metodo complicato, ma spesso efficace, per ottenere informazioni da un database quando si sfruttano le vulnerabilità SQL Injection”, ha affermato Wordfence nel suo post sul blog sulla vulnerabilità LayerSlider.
I plugin WordPress vulnerabili sono un punto di ingresso popolare per gli autori delle minacce per estrarre dati o compromettere i siti WordPress. Ad esempio, un difetto di scripting cross-site nel plug-in Popup Builder, tracciato come CVE-2023-6000era sfruttato per diffondere il malware Balada Injector su più di 6.700 siti WordPress nel mese di gennaio.
È stato utilizzato anche Balada Injector più di 9.000 siti vulnerabile al difetto del plugin TagDiv Composer tracciato come CVE-2023-3169 lo scorso ottobre. Complessivamente, secondo Sucuri, negli ultimi sei anni sono stati compromessi più di un milione di siti WordPress nella campagna Balada Injector.