News

XMLRPC-php Wordpress diagramma funzionamento

xmlrpc-php in WordPress

xmlrpc-php in WordPress cos’è e perché dovresti disabilitarlo per la tua sicurezza.

 

 xmlrpc-php in WordPress che cos’è?

L’xmlrpc-php in WordPress è un protocollo basato su XML, utilizzato per lo scambio di informazioni tra sistemi informatici in rete, e consiste in una chiamata di una procedura da remoto, la quale usa l’XML per codificare le scambio.

L’xmlrpc-php usa l’HTTP per il trasporto, permettendo la trasmissione e l’elaborazione di strutture di dati complesse.

xmlrpc-php in WordPress è una funzionalità molto utilizzata, perché permette la trasmissione dei dati, mediante il protocollo HTTP che agisce come meccanismo di trasporto, e l’XML come meccanismo di codifica.

WordPress ha sempre avuto delle funzionalità integrate che consentono di interagire da remoto con un sito web.

Immaginiamo sia successo anche a te di dover accedere al tuo sito, ma il tuo computer non era nelle vicinanze.

Per superare questo problema, per molto tempo, la soluzione è stata un file chiamato xmlrpc-php anche se, negli ultimi anni, il file è diventato più un parassita che una soluzione.

Analizziamo cos’è xmlrpc-php in realtà, e perché sia stato creato dando anche una visione d’insieme dei problemi di sicurezza comuni che provoca e di come correggerli nel proprio sito in WordPress.

Dato che WordPress non è un sistema chiuso e che necessita più o meno occasionalmente di comunicare con altri sistemi, questo metodo è stato cooptato, per gestire al meglio questa tipologia di servizio.

Facciamo un esempio per chiarire meglio il concetto.

Supponiamo che desideri scrivere un post nel tuo sito dal tuo cellulare, perchè sei in vacanza e, quindi, il tuo computer non è nelle vicinanze: potresti usare la funzione di accesso remoto abilitata da xmlrpc-php per fare questo post urgente.

Le caratteristiche principali che xmlrpc-php ha abilitato, erano la possibilità di connettersi al sito tramite smartphone, l’implementazione di trackback e pingback da altri siti, e alcune funzioni associate al plugin Jetpack.

 

Perché è stato creato xmlrpc-php in WordPress?

L’implementazione di xmlrpc-php in WordPress risale dalle primissime versione del CMS, prima ancora che diventasse il CMS più famoso ed utilizzato.

Nella prima era di internet, quando le connessioni erano incredibilmente lente, il processo di scrittura e pubblicazione sul web era molto più difficile e richiedeva molto più tempo.

Invece di scrivere all’interno del browser stesso, la maggior parte delle persone scriveva offline, poi copiava e incollava i propri contenuti sulla pagina web, ma questo modo di pubblicare era tutt’altro che ideale.

La soluzione (all’epoca), era quella di creare un client di blogging offline, comporre il proprio contenuto, connettersi al proprio blog e pubblicarlo:
questa connessione avveniva ed avviene ancora, tramite il protocollo XML-RPC, ed era il metodo maggiormente utilizzato all’epoca per pubblicare post nel proprio sito web tramite WordPress.

Grazie a XML-RPC, le prime versioni del CMS utilizzavano questa modalità di connessione per consentire ai blogger, di accedere ai loro siti WordPress da altri dispositivi, in questo caso dal proprio editor di testo.

 

xmlrpc-php oggi.

Nel 2008, con la versione 2.6 di WordPress, è nata un’opzione per abilitare o disabilitare xmlrpc-php ma, con il rilascio dell’applicazione WordPress nell’App Store di Apple, il supporto a XML-RPC è stato abilitato di default, e non c’era alcuna opzione per disattivare l’impostazione.

Questo metodo è rimasto tutt’ora invariato.

Anche se la funzionalità di questo file è notevolmente diminuita nel tempo, (la dimensione complessiva del file è diminuita da 83kb a 3kb), questa non svolge più il ruolo indispensabile che aveva una volta.

 

Il futuro di xmlpc-php

Con le nuove API di WordPress, crediamo che xmlrpc.php venga completamente eliminato e crediamo anche che, in futuro relativamente prossimo, l’API venga codificata direttamente nel core di WordPress, eliminando del tutto la necessità del file xmlrpc-php.

Come tutti i nuovi software, anche le nuove API non sono ancora perfette, ma forniscono sicuramente una soluzione più robusta e sicura al problema che xmlrpc-php ha affrontato.

 

Perché si dovrebbe disabilitare xmlrpc-php in WordPress? Che problemi di sicurezza comporta averlo attivo?

I problemi maggiori con xmlrpc-php, sono le vulnerabilità di sicurezza che si presentano, le quali non riguardano direttamente l’xmlrpc-php ma, piuttosto, il modo in cui il file può essere utilizzato per consentire un attacco di “brute force” sul tuo sito.

Ovviamente, è possibile proteggersi con password incredibilmente forti e con un plugin a pagamento, per mettere al sicuro il tuo sito in WordPress ma, forse, la migliore modalità di protezione consiste semplicemente nel disabilitarlo.

Ci sono due punti deboli principali di xmlrpc.php che sono stati sfruttati in passato.

1) Il primo è l’uso di attacchi di “brute force” per ottenere l’accesso al tuo sito.

Un hacker cercherà di accedere nel tuo sito usando xmlrpc.php utilizzando varie combinazioni di username e password.

Volendo può usare anche efficacemente un unico comando per testare centinaia di password diverse, e questo gli permetterà
di bypassare gli strumenti di sicurezza che tipicamente rilevano e bloccano gli attacchi di forza bruta.

2) Il secondo è stato quello di portare i siti oggetto di attenzione offline, attraverso un attacco DDoS.

Gli hacker potrebbero utilizzare la funzione pingback di WordPress per inviare pingback a migliaia di siti istantaneamente.
Questa funzione in xmlrpc-php, offre agli hacker un’offerta quasi infinita di indirizzi IP su cui distribuire un attacco DDoS.

Per verificare se xmlrpc-php è in esecuzione sul tuo sito, puoi fare un test attraverso uno strumento gratuito chiamato
XML-RPC Validator al seguente link:

XML-RPC Validator

 

xmlrpc-validation-service

 

Se dopo il test, il tuo sito attraverso il servizio ricevete un messaggio di errore, significa che xmlrpc-php non è abilitato .

 

failed-check-xmlrpc-validator-service

 

Se invece, si ottiene un messaggio di successo, puoi subito fermare xmlrpc-php con il seguente metodo via htaccess.

 

Disabilitazione manuale di xmlrpc-php in WordPress

Se non vuoi utilizzare un plugin e preferisci farlo manualmente, strada che noi consigliamo sempre vivamente, segui questo suggerimento e bloccherai tutte le richieste xmlrpc-php in arrivo prima che vengano trasferite su WordPress.

Apri il file .htaccess nella cartella principale del tuo hosting: in alcuni casi potrebbe essere necessario attivare il ‘mostra file nascosti’ all’interno del file manager o del client FTP per localizzare questo file.

All’interno del file .htaccess, inserisci alla fine di tutti gli script, il seguente codice:

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>

Nota: Modificare xxx.xxx.xxx.xxx nell'indirizzo IP che desideri consentire l'accesso a xmlrpc.php
o, se non vuoi far accedere nessuno ad esso, semplicemente rimuovi completamente questa riga di codice.

Conclusioni

Nel complesso, xmlrpc-php è stata una valida soluzione per superare alcune limitazioni come la pubblicazione di contenuti a distanza nel tuo sito web.

Tuttavia, con questa caratteristica sono emerse alcune falle di sicurezza che hanno finito per essere molto dannose per i publisher dei siti in WordPress.

Per garantire che il tuo sito rimanga sempre in sicurezza, è buona norma disabilitare completamente xmlrpc.php, a meno che non si richiedano alcune delle funzioni necessarie per la pubblicazione da remoto oppure il plugin Jetpack, il quale ha sofferto di troppe vulnerabilità in passato.

In tal caso, dovresti usare dei plugin che permettono queste funzioni, ma dovrai sempre colmare tutte le falle di sicurezza che possono nascere continuamente.

Sei sicuro che ne valga la pena?

Col tempo, possiamo aspettarci che le funzionalità di xmlrpc.php si integrino nelle nuove API di WordPress, che manterranno l’accesso remoto e simili, senza sacrificare la sicurezza ma, nel frattempo, una buona idea è di proteggersi dalle potenziali falle di sicurezza di xmlrpc-php.

E tu, come hai bloccato l’accesso xmlrpc-php? Tramite un plugin o manualmente? Hai avuto problemi di sicurezza per averlo attivato?

Condividi la tua esperienza nei commenti qui sotto.

Hai già guardato i nostri piani hosting per WordPress? Clicca qui per scoprirli adesso.