La specifica XML-RPC di WordPress è stata sviluppata per standardizzare la comunicazione tra diversi sistemi, il che significa che le applicazioni al di fuori di WordPress (come altre piattaforme di blogging e client desktop) possono interagire con lo stesso WordPress.
Questa specifica è stata parte di WordPress fin dalla sua nascita e ha svolto un lavoro molto utile. Senza di essa, WordPress sarebbe stato nel suo silo, separato dal resto di internet.
Tuttavia, xmlrpc.php ha i suoi lati negativi. Può introdurre delle vulnerabilità nel vostro sito WordPress ed è stata ora sostituita dalla REST API di WordPress, che fa un lavoro molto migliore nell’aprire WordPress ad altre applicazioni.
In questo articolo, vi spiegheremo cos’è xmlrpc.php e perché dovreste disabilitarlo, e vi aiuteremo ad capire se è in esecuzione sul vostro sito WordPress.
Pronti? Cominciamo!
Cos’È xmlrpc.php?
XML-RPC è una specifica che consente la comunicazione tra WordPress e altri sistemi. È stato possibile farlo standardizzando tali comunicazioni, utilizzando HTTP come meccanismo di trasporto e XML come meccanismo di codifica.
XML-RPC è antecedente a WordPress: era presente nel software di blogging b2, da cui è nato il fork di WordPress nel 2003. Il codice che sta dietro il sistema è memorizzato in un file chiamato xmlrpc.php, nella directory principale del sito. Ed è ancora lì, anche se XML-RPC è in gran parte obsoleto.
Nelle prime versioni di WordPress, di default XML-RPC era disattivato. Ma dalla versione 3.5, è stato abilitato di default. Il motivo principale era quello di permettere all’applicazione mobile di WordPress di dialogare con l’installazione di WordPress.
Se avete utilizzato l’applicazione mobile di WordPress prima della versione 3.5, potreste ricordare di aver dovuto abilitare XML-RPC sul vostro sito per permettere all’applicazione di pubblicare contenuti. Questo perché l’app non utilizzava WordPress in sé, ma era un’app separata che comunicava con il vostro sito WordPress utilizzando xmlrpc.php.
Ma non è stata utilizzata solo l’applicazione mobile per l’XML-RPC: è stata utilizzata anche per consentire la comunicazione tra WordPress e altre piattaforme di blogging, ha abilitato i trackback e i pingback, e ha alimentato il plugin Jetpack, che collega un sito WordPress autoospitato a WordPress.com.
Ma, da quando l’API REST è stata integrata nel core di WordPress, il file xmlrpc.php non viene più utilizzato per questa comunicazione. Al suo posto viene invece utilizzata l’API REST per comunicare con l’applicazione mobile di WordPress, con i client desktop, con altre piattaforme di blogging, con WordPress.com (per il plugin Jetpack) e con altri sistemi e servizi. La gamma di sistemi con cui le REST API possono interagire è molto più ampia di quella consentita da xmlrpc.php. Inoltre, c’è molta più flessibilità.
Dato che l’API REST ha sostituito XML-RPC, ora si dovrebbe disabilitare xmlrpc.php sul proprio sito. Vediamo perché.
Perché si Dovrebbe Disabilitare xmlrpc.php
Il motivo principale per cui si dovrebbe disabilitare xmlrpc.php sul proprio sito WordPress è perché questo introduce vulnerabilità nella sicurezza e può essere bersaglio di attacchi.
Ora che XML-RPC non è più necessario per comunicare al di fuori di WordPress, non c’è più motivo di tenerlo attivo. Ecco perché è saggio rendere il vostro sito più sicuro disabilitandolo.
Se xmlrpc.php è una vulnerabilità di sicurezza e non svolge più un lavoro utile, perché non è stato eliminato del tutto da WordPress?
Il motivo è che una delle caratteristiche chiave di WordPress sarà sempre la compatibilità a ritroso. Se gestite bene il vostro sito, saprete che mantenere WordPress aggiornato, così come aggiornare regolarmente qualsiasi plugin o tema, è essenziale.
Ma ci saranno sempre proprietari di siti web che non vogliono o non possono aggiornare la loro versione di WordPress. Se hanno in esecuzione una versione precedente alla REST API, avranno comunque bisogno di accedere a xmlrpc.php.
Vediamo le vulnerabilità specifiche più dettagliatamente.
Attacchi DDoS tramite Pingback XML-RPC
Una delle funzioni abilitate da xmlrpc.php erano il pingback e il trackback. Queste sono le notifiche che appaiono nei commenti del vostro sito quando un altro blog o un altro sito si collega ai vostri contenuti.
La specifica XML-RPC ha reso possibile questa comunicazione, ma è stata sostituita dalla REST API (come abbiamo già visto).
Se XML-RPC è abilitato sul vostro sito, un hacker potrebbe potenzialmente montare un attacco DDoS sul vostro sito sfruttando lo script xmlrpc.php per inviare un gran numero di pingback al vostro sito in breve tempo. Questo potrebbe sovraccaricare il vostro server e mettere il sito fuori uso.
Attacchi Brute Force via XML-RPC
Ogni volta che xmlrpc.php fa una richiesta, invia il nome utente e la password per l’autenticazione. Questo presenta una significativa vulnerabilità nella sicurezza ed è qualcosa che l’API REST non fa. Infatti, la REST API utilizza OAuth, che invia token per l’autenticazione al posto di nome utente o password.
Dato che xmlrpc.php invia informazioni di autenticazione ad ogni richiesta, gli hacker potrebbero utilizzarle per provare ad accedere al vostro sito. Un attacco di forza bruta come questo potrebbe permettere loro di inserire contenuti, cancellare codice o danneggiare il vostro database.
Se un aggressore invia un numero sufficiente di richieste al vostro sito, ognuna con una diversa coppia di username e password, c’è la possibilità che alla fine possa indivinare quella giusta, ottenendo l’accesso al sito.
Ecco perché, se si ha in esecuzione una versione aggiornata di WordPress, che utilizza l’API REST per comunicare con sistemi esterni, si dovrebbe disabilitare xmlrpc.php. Ripetiamo, non è necessario e potrebbe rendere il vostro sito vulnerabile.
xmlrpc.php È Attivo Sul Vostro Sito WordPress?
La prima cosa da fare è capire se xmlrpc.php è in esecuzione sul vostro sito WordPress.
Non si tratta di un semplice caso di controllo della presenza del file: fa parte di ogni installazione di WordPress e sarà presente anche se la funzionalità di XML-RPC è disabilitata.
Per verificare se xmlrpc.php è abilitato sul vostro sito, utilizzate il applicazione web del validatore XML-RPC. Questo controllerà il sito e vi dirà se xmlrpc.php è abilitato.
Questo mostra che xmlrpc.php è stato disabilitato su kinsta.com. Quindi, se effettuate il controllo e scoprite che xmlrpc.php è ancora abilitato sul vostro sito, come si fa a disattivarlo?
Come Disattivare xmlrpc.php
Ci sono tre modi per disabilitare xmlrpc.php:
Diamo un’occhiata singolarmente a ciascuno di essi.
Come Disabilitare xmlrpc.php con un Plugin
Installare un plugin è il modo più semplice per disabilitare xmlrpc.php. Il plugin Disable XML-RPC lo disabiliterà completamente. Ecco come si usa.
Il mio punto di partenza è il mio sito web, sul quale è abilitato xmlrpc.php. Lo potete vedere attraverso il seguente controllo:
Installate il plugin dalla schermata Plugin del pannello di amministrazione di WordPress e attivatelo.
Non c’è bisogno di fare altro: l’attivazione del plugin disabiliterà XML-RPC. Ora, se faccio un controllo sul mio sito, ottengo un risultato diverso:
È così semplice!
Disabilitare i Pingback XML-RPC con un Plugin
Ma cosa succede se si vuole disabilitare alcuni aspetti di xmlrpc.php e non altri? Le pluginl Disable XML-RPC Pingback vi permette di disattivare solo la funzionalità di pingback, il che significa che si ha ancora accesso alle altre funzionalità di XML-RPC, se ne avete bisogno.
Il plugin funziona nello stesso modo del plugin Disable XML-RPC: basta installarlo e attivarlo.
Configurare l’Attivazione di XML-RPC e REST API con un Plugin
Se desiderate un controllo più accurato della configurazione di xmlrpc.php e delle API REST, potete installare il plugin REST XML-RPC Data Checker.
Una volta installato e attivato questo plugin, andate in Impostazioni > REST XML-RPC Data Checker e fate clic sulla scheda XML-RPC.
Questo vi permette di configurare esattamente gli aspetti di xmlrpc.php attivi sul vostro sito.
In alternativa, potete semplicemente disattivarlo del tutto. E, se volete anche il controllo sulle API REST, il plugin fornisce un’altra scheda anche per questo.
Come Disattivare xmlrpc.php Senza un Plugin
Se preferite non installare un altro plugin sul vostro sito, potete disabilitare xmlrpc.php aggiungendo del codice in un filtro, o nel vostro file .htaccess. Vediamo entrambi i metodi.
Disattivare xmlrpc.php Tramite un Filtro
Una soluzione per disabilitare xmlrpc.php è quella di utilizzare il filtro xmlrpc_enabled. Aggiungete questa funzione ad un plugin e attivatelo sul vostro sito:
add_filter( 'xmlrpc_enabled', '__return_false' );
Potreste aggiungerlo al file delle funzioni del tema, ma è meglio scrivere un plugin.
L’altra soluzione prevede la modifica del vostro file .htaccess, che è disponibile con i provider di hosting che utilizzano Apache, collegandosi al server del sito via FTP o cPanel.
Disattivare xmlrpc.php Tramite il File .htacess
Nel vostro file .htaccess, aggiungete questo codice:
<Files "xmlrpc.php">
Require all denied
</Files>
Assicuratevi di fare una copia del vecchio file prima di farlo, nel caso vi imbattiate in qualche problema.
Chiedete al Vostro Provider di Hosting di Disattivare xmlrpc.php
Alcuni provider di hosting disabilitano xmlrpc.php se viene rilevato un attacco.
Questo produrrà un errore 403 e fermerà l’attacco nel suo corso.
Con Kinsta non c’è bisogno di preoccuparsi, questo è già bloccato. Contattate l’assistenza per qualsiasi problema.
Se lo fate da soli, è meglio seguire uno dei metodi sopra indicati. Ma prima di procedere, verificate sempre con il vostro provider di servizi di hosting.
Quando È Necessario Abilitare xmlrpc.php?
Ci potrebbero essere alcune situazioni in cui sia necessario abilitare xmlrpc.php sul vostro sito WordPress oppure non dovreste disabilitarlo completamente.
Queste si verificano quando:
- Non avete in esecuzione l’API REST (non consigliato, ma necessario in alcune situazioni) ma dovete mettere in comunicazione il vostro sito WordPress con altri sistemi.
- Non è possibile aggiornare WordPress alla versione 4.4 o superiore, quindi non si ha accesso alle REST API. Questo potrebbe essere dovuto a restrizioni nella vostra configurazione di hosting (nel qual caso sarebbe meglio cambiare provider di hosting) o incompatibilità di temi o plugin (nel qual caso li sostituirei o li aggiornerei).
- State lavorando con un’applicazione esterna che non può accedere alla REST API di WordPress, ma può accedere a XML-RPC (a lungo termine, consiglierei di aggiornare tale applicazione o di passare a un’applicazione compatibile con REST).
Questo è tutto! Nessuno di questi è un motivo particolarmente valido per mantenere attiva la specifica XML-RPC.
L’unico motivo per cui è ancora in WordPress è per la retro-compatibilità e personalmente lo dovreste utilizzare solo se lavorate con sistemi obsoleti. Per chiunque voglia mantenere i propri siti aggiornati e lavorare con le ultime tecnologie, la strada da percorrere è disabilitare xmlrpc.php.
Riepilogo
La specifica XML-RPC è stata sviluppata prima ancora della creazione di WordPress, come mezzo di comunicazione tra WordPress e sistemi e applicazioni esterne. Ha delle falle nella sicurezza e potrebbe rendere il vostro sito vulnerabile agli attacchi.
Ora che l’API REST permette al vostro sito di comunicare con altre applicazioni, potete disabilitare in modo sicuro xmlrpc.php. Se seguite i passaggi sopra descritti per disabilitarlo, migliorerete la sicurezza dei vostri siti.
Lascia un commento