Alibaba Cloud scopre l’ultima vulnerabilità di ThinkPHP v5

Di Yong Chen

Lo sfruttamento delle vulnerabilità del software è una delle fasi iniziali di un attacco informatico. Nelle scuole di ingegneria, ti insegnano che correggere un difetto in fase di implementazione è 6,5 volte superiore rispetto a risolverlo in fase di progettazione1. Applicando questo principio alla “scuola di sicurezza informatica”, possiamo dire che bloccare un attacco nella fase di vulnerabilità è una dozzina di volte più economico che fermarlo dopo che un dispositivo è stato compromesso da un exploit.

In questo post del blog presentiamo un’analisi di una vulnerabilità rilevata di recente nel framework ThinkPHP, che ha esposto il 10% di tutti i siti Web che lo utilizzano al controllo remoto. Il post fornisce una spiegazione dettagliata di un codice effettivo utilizzato da un utente malintenzionato nel tentativo di sfruttare questa vulnerabilità, nonché consigli precisi su come proteggersi (suggerimento: applica la correzione ufficiale! In caso contrario, fatti aiutare da Threat Detection di Alibaba Cloud Servizio).

Yohai Einav

Principal Security Researcher, SIL

Sfondo

ThinkPHP è un popolare framework MVC orientato agli oggetti PHP utilizzato da molti siti Web di e-commerce, finanziari e di giochi online. Il framework fornisce supporto per UTF-8, plug-in, accesso al controllo basato sui ruoli (RBCA), un motore di controllo dei modelli e database multipli. Una recente vulnerabilità in ThinkPHP v5, rilevata da Alibaba Cloud, ha consentito agli aggressori di eseguire comandi in remoto sui sistemi che eseguono il framework e infliggere danni ingenti.

Mentre una correzione ufficiale per questa vulnerabilità critica l è stata rilasciata il 10 dicembre 2018, Alibaba Cloud Threat Detection Service (TDS), precedentemente noto come Situational Awareness Service ( SAS), ha ancora rilevato più attacchi che sfruttano la vulnerabilità dopo la correzione. Al fine di garantire che anche gli utenti che non aggiornano i propri sistemi in modo tempestivo nel cloud siano protetti dalla vulnerabilità, Alibaba Cloud TDS offre un servizio di allarme di attacco, che utilizza il proprio firewall per applicazioni web (WAF) per bloccare in modo sincrono la vulnerabilità, e proteggere tutti i clienti da esso.

Quanto segue fornisce un’analisi completa del contesto, della logica e del comportamento della vulnerabilità, insieme a un’analisi dei casi reali.

Analisi delle vulnerabilità

Il framework ThinkPHP v5 non dispone di un controllo di sicurezza sufficiente dei nomi dei controller, il che consente all’autore dell’attacco di costruire una richiesta specifica in cui l’applicazione del routing è disabilitata. Ciò significa che l’aggressore può eseguire il codice in remoto e ottenere le autorizzazioni del server.

Versioni interessate dalla vulnerabilità

ThinkPHP v5.0 versioni precedenti alla 5.0.23

ThinkPHP v5.1 versioni precedenti alla 5.1.31

Come funziona la vulnerabilità

Con un confronto con le istruzioni di correzione ufficiali rilasciate da ThinkPHP, abbiamo analizzato il codice in /thinkphp/library/think/Route.php dove ThinkPHP pianifica per l’analisi del percorso.

La funzione “parseUrlPath” chiama la funzione path e analizza le informazioni di routing in “pathinfo”. L’URL nella funzione è diviso da barre (/) senza applicare alcun filtro.

Dopo aver cercato “pathinfo”, troviamo che //thinkphp/library/think/Request.php definisce il & quot; pathinfo & quot; funzione che ottiene l’URL.

Un utente malintenzionato può sfruttare il valore di “$ _GET” per l’iniezione di comandi: il parametro di “var_pathinfo” è “s”, dove è possibile creare la funzione per l’iniezione di comandi.

Abbiamo anche analizzato il codice app.php per la pianificazione del percorso, che fa funzionare il controller tramite la variabile “controller”, istanzia il controller e tiene traccia del metodo del controller.

In //thinkphp/library/think/Loader.php , il controller chiama & quot; parseModuleAndClass & quot; per analizzare & quot; $ name & quot; e crea un’istanza di & quot; $ class & quot ;. Quando & quot; $ name & quot; corrisponde a una barra rovesciata (\), viene utilizzato come metodo e classe in & quot; strpos ($ name, & # x27; \ & # x27;) & quot ;. Un utente malintenzionato può costruire e istanziare qualsiasi metodo da chiamare e istanziare la & quot; namespaceclass & quot; classe per eseguire & quot; call_user_func_array & quot; metodo.


Riproduzione delle vulnerabilità

Abbiamo riprodotto l’effetto in ThinkPHP v5.0.22 che contiene anche la vulnerabilità legata all’esecuzione di codice in modalità remota. La figura seguente mostra che possiamo eseguire il comando “ls” su un host infettato da vulnerabilità per ottenere i dettagli di tutti i file nella directory:

Caso reale di un attacco di vulnerabilità

A partire dall’11 dicembre 2018, Alibaba Cloud Threat Detection Service (TDS) ha rilevato che la vulnerabilità è stata sfruttata in molti modi, principalmente sotto forma di web-shell, “uno script che può essere caricato su un server web per abilitare l’amministrazione remota della macchina “(https://www.us-cert.gov/ncas/alerts/TA15-314A).

Quello che segue è un riepilogo di tutti i metodi esistenti della shell web e individua i seguenti metodi popolari:

1. Sfrutta la vulnerabilità, esegui comandi di download in remoto.

Esempio:

La seguente schermata mostra l’elenco delle funzioni di questa webshell:

2. Scarica webshell in remoto utilizzando le funzioni file_get_contents e file_put_contents.

Esempio:

La seguente schermata mostra le funzioni della webshell:

3. Metti una webshell di una riga utilizzando la funzione file_put_contents.

Esempio:

Tendenze dell’impatto e degli attacchi delle vulnerabilità

La nostra analisi ha rilevato che circa il 10% di tutti i siti Web che utilizzano ThinkPHP in tutto il mondo erano esposti a questa vulnerabilità. Alibaba Cloud TDS ha registrato un forte aumento del numero di siti web attaccati dal 4 dicembre 2018 all’11 dicembre 2018.


Il grafico sopra mostra il forte aumento del numero di siti web attaccati, indicando che la vulnerabilità viene automaticamente sfruttata su larga scala subito dopo essere stata esposta.

Sulla base della precedente esperienza del team con lo sfruttamento delle vulnerabilità, riteniamo che questa vulnerabilità possa essere sfruttata in molti altri modi. Si consiglia pertanto a tutte le aziende di aggiornare il proprio framework ThinkPHP alla versione più recente il prima possibile per proteggere i propri siti Web dagli attacchi e impedire che i propri server vengano compromessi.

Consigli per la sicurezza

Gli esperti di sicurezza di Alibaba Cloud ti ricordano che ThinkPHP v5.0.23 e v5.1.31 sono versioni sicure e consigliano di aggiornare il tuo framework ThinkPHP all’ultima versione il prima possibile per correggere la vulnerabilità. Se non hai prontamente aggiornato il tuo framework ThinkPHP, iscriviti a Alibaba Cloud Threat Detection Service (TDS) e Web Application Firewall (WAF) per difenderti dagli attacchi in modo tempestivo.

Per ulteriori informazioni su questa vulnerabilità, vedere https://blog.thinkphp.cn/869075.

Riferimento

[1] https://www.researchgate.net/figure/IBM-System-Science-Institute-Relative-Cost-of-Fixing-Defects_fig1_255965523

Riferimento: https: //www.alibabacloud.com/blog/alibaba-cloud-discovers-the-latest-thinkphp-v5-vulnerability_594307? spm = a2c41.12450928.0.0