Approfondimento: analisi di un’altra vulnerabilità XSS nel plugin Bookly

Al momento stai visualizzando Approfondimento: analisi di un’altra vulnerabilità XSS nel plugin Bookly

In un post precedente i ricercatori dei Seqrite Security Lab avevano già descritto una vulnerabilità XSS nel plugin Bookly (WordPress Online Booking and Scheduling Plugin). Adesso approfondiamo un’altra vulnerabilità XSS emersa durante la nostra analisi sullo stesso plugin.

Il nostro team di cyber security ha individuato questa vulnerabilità nel Marzo 2023. A seguito di questa scoperta abbiamo avviato tutte le procedure di divulgazione responsabile per assicurarci che questa vulnerabilità venisse risolta tempestivamente.

L’identificativo CVE assegnato a questa vulnerabilità è CVE-2023-1159 ed è stato risolto con successo nel Maggio 2023.

In questo post analizzeremo le ragioni profonde dietro questa vulnerabilità individuata nel plugin Bookly. Esamineremo inoltre la patch rilasciata per mitigare efficacemente questa problematica.

Approfondendo la CVE–2023-1159

Nel corso della nostra ricerca abbiamo individuato una vulnerabilità nel plugin Bookly. La vulnerabilità riguarda il campo “Service title”. Questa CVE espone il plugin ad attacchi Stored Cross-Site Scripting a causa di insufficienti misure di sanificazione degli input. E’ importante sottolineare che gli amministratori possono modificare o impostare il titolo direttamente dall’interfaccia del plugin.

Un attacco Stored Cross-Site Scripting avviene quando un applicazione riceve i dati da una fonte non affidabile e include questi dati nelle risposte HTTP successive in maniera non sicura.

Dopo ulteriori approfondimenti abbiamo scoperto che se un titolo dannoso viene impostato entro il servizio, questo sarà visualizzato ed eseguito nel browser del client a sua insaputa quando avrà accesso al servizio suddetto. Questa esecuzione può, potenzialmente, rendere possibile per gli attaccanti l’esecuzione di codice da remoto, fatto che pone un rischio sostanziale alla sicurezza.

Per fornire indicazioni più precise, pubblichiamo questa porzione di codice che mostra come il campo “ServiceTitle” sia impostato e letto mentre viene creato un nuovo servizio

“createService” a sua volta, chiama il metodo “parameters”.

Nel metodo Parameters c’è una chiamata per la funzione ‘getRequest()’. Questa funzione recupera i valori immessi dall’interfaccia. Questi valori, subito dopo, sono passati al metodo “createService”, dove vengono salvati. Tuttavia è importante sottolineare come, durante questo processo, non avvenga alcuna sanificazione dell’input, lasciando il sistema vulnerabile a rischi potenziali.

Approfondiamo la patch

Dopo aver esaminato la patch che corregge la vulnerabilità, possiamo dire che la variabile $parameters è stata sottoposta ad un’adeguata sanificazione degli input, così da prevenire efficacemente potenziali violazioni di sicurezza nel programma.

Questo miglioramento include anche una l’implementazione della funzione “unfiltered_html” e del metodo “stripScripts“, fondamentali per sanificare $parameters e mitigare attacchi potenziali.

Grazie all’uso della funzione “unfiltered_html”, la patch assicura che solo gli utenti autorizzati con le necessarie autorizzazioni possano inviare contenuti HTML non filtrati. Così si impedisce l’uso di script dannosi e si riduce significativamente il rischio di attacchi XSS.

Inoltre l’uso del metodo “stripScripts” migliora ulteriormente il processo di sanitizzazione rimuovendo o neutralizzando ogni codice Javascript “embedded” nel $parameters.

Per concludere

La vulnerabilità CVE-2023-1159 nel plugin Bookly è stata patchata nella versione 21.8. Consigliamo a tutti i proprietari di siti WordPress di aggiornare prima possibile il plugin all’ultima versione disponibile per mitigare potenziali attacchi. Assicurarsi di applicare tempestivamente aggiornamenti e patch è essenziale per mantenere sicuri i propri sistemi e protetti i propri dati.

Un ulteriore consiglio è che, quando si va a garantire la permissione ‘unfiltered_html’ ad un utente, occorre prestare molta attenzione e assegnarla solo ed esclusivamente a utenti fidati che ne richiedono l’uso genuinamente. Il rischio potenziale derivante da questa permissione è molto alto e va gestito con grande attenzione.

Tutti i clienti SEQRITE e Quick Heal sono protetti da qualsiasi exploit mirato su questa vulnerabilità grazie alle seguenti individuazioni:

  • HTTP/CVE-2023-1159!VK.47550
  • HTTP/CVE-2023-1159!VK.47551
  • HTTP/CVE-2023-1159!VK.47552