Joomla: Estensioni e Sicurezza

Esplorando in profondità la struttura di Joomla!, che la maggior parte di noi percepisce come una struttura monolitica, scopriamo invece che è costituito da una struttura fortemente modulare, flessibile ed estendibile. Da questa prospettiva inizia ad assumere un senso più profondo il termine estensione che è un termine generico, infatti, con il quale vengono indicati gli applicativi che estendono, appunto, le funzionalità di Joomla!.

Volendo scendere ad un livello di profondità ancora maggiore scopriamo che è possibile fare un’altra importante differenziazione tra Joomla! Framework e Joomla! Content Management System (per brevità Joomla! CMS).

Joomla! Framework è un framework PHP (un framework è una raccolta di librerie e pacchetti software) per la scrittura di applicazioni web e di applicazioni da riga di comando in PHP, senza le funzionalità aggiuntive di Joomla! CMS. Infatti Joomla Framework fornisce le fondamenta su cui si basa Joomla! CMS ma allo stesso tempo può essere usato indipendentemente per realizzare applicativi stand alone.

Joomla! CMS quindi si basa su Joomla! Framework che viene potenziato e ampliato grazie all’aggiunta di tutta una serie di estensioni. Infatti la gestione articoli e l’editor TinyMCE altro non sono che delle estensioni; per citare quelle che tutti coloro che utilizzano Joomla! CMS a qualsiasi livello sicuramente conoscono essendo imprescindibili per la realizzazione delle pagine di un sito Joomla!.

Visto che, come detto in precedenza, il termine estensione è generico ritengo utile entrare nello specifico e andare a vedere le diverse tipologie di estensioni ciascuna con la propria funzionalità:

Componenti (presenti a partire da Joomla! 1.0) - I componenti sono le estensioni più complesse presenti in Joomla! e possono essere considerate come dei veri e propri programmi a sé stante. Il componente principale fornito nella installazione base di Joomla! CMS è il com_content che permette di gestire gli articoli e le categorie. Talmente fondamentale per Joomla! CMS che ha una voce di menu specifica nel pannello di amministrazione di Joomla!: la voce Contenuti che è a se stante rispetto a tutti gli altri componenti che vengono raccolti nella voce principale Componenti.

Lingue (presenti a partire da Joomla! 1.0) - Le lingue sono la tipologia di estensione più semplice dal punto di vista tecnico ma importantissima dal punto di vista pratico in quanto permettono di avere Joomla! tradotto in varie lingue e non soltanto in inglese.

Librerie (presenti a partire da Joomla! 2.5) - Le librerie sono degli insiemi di funzioni e\o di strutture dati predefinite e pronte per l'uso da poter includere in altri programmi. Alcune librerie esterne sono incluse e usate sia da Joomla! Framework che da Joomla! CMS così come dalle estensioni di terze parti.

Moduli (presenti a partire da Joomla 1.0) - I moduli sono estensioni leggere e flessibili utilizzate per il rendering delle pagine web. Un esempio tipico di modulo Joomla! è il box per il Login.

Pacchetti (presenti a partire da Joomla 2.5) - Un pacchetto è un'estensione che viene utilizzata per installare più estensioni in una volta. In quei casi in cui un componente e un modulo, ad esempio, dipendono l'uno dall'altro includerli in un pacchetto consente di installare e disinstallare entrambi in un’unica operazione.

Plugins (presenti a partire da Joomla 1.5) - Malgrado la loro apparente semplicità i plugins sono tra le estensioni con le maggiori potenzialità per estendere non solo le funzioni di Joomla! ma per rendere estendibili a loro volta anche le altre tipologie di estensioni. Volendo sintetizzare possiamo definirle estensioni al cubo.

Templates (presenti a partire da Joomla 1.0) - I templates permettono di modificare l’aspetto del sito. In estrema sintesi sono la grafica di un sito web. Da tenere presente che il pannello di amministrazione di Joomla! non è altro che un template che può essere modificato a proprio piacimento così come possono essere modificati i templates del lato pubblico di Joomla!.

Le estensioni di terze parti

A questo punto è di fondamentale importanza la distinzione tra le estensioni che sono incluse nel pacchetto base di Joomla! CMS e le estensioni realizzate da sviluppatori e agenzie web indipendenti conosciute come estensioni di terze parti.

Lo strumento ufficiale dove sono raccolte le estensioni è la Joomla! Extensions Directory (JED), anche se è possibile trovare estensioni per Joomla! in rete.

Consiglio fortemente di appoggiarsi alla JED perchè le estensioni ivi presenti vengono sottoposte ad un processo di selezione e verifica che le rende più affidabili e sicure di quelle reperite in rete.

Dal punto di vista della sicurezza di un sito Joomla! le estensioni vanno tenute fortemente sotto controllo; soprattutto le estensioni di terze parti. Se le estensioni del core di Joomla! vengono aggiornate con le nuove versioni di Joomla!; per quanto riguarda le estensioni di terze parti spesso vengono trascurate e ci si dimentica di averle installate. Soprattutto quando si tratta dei plugins. Dal 10 gennaio 2017 uno dei requisiti richiesti sulla JED per le estensioni è di usare il Joomla Update System, il sistema che notifica la presenza di nuove versioni delle estensioni in modo tale da aggiornarle tempestivamente.

Tenere aggiornate e sotto controllo le estensioni è talmente cruciale che Joomla! si è dotata di uno strumento utilissimo in tal senso che è la Joomla! Vulnerable Extensions List (VEL). Strumento utile sia per prevenire eventuali attacchi e sia per indagare sulle possibili cause di un attacco.

Mi soffermerò sulle sezioni a mio avviso fondamentali da questo punto di vista che sono: Live VEL, Resolved e AbandonWare.

Nella sezione Live VEL vengono elencate tutte le estensioni che hanno vulnerabilità note non risolte ed è per questo motivo che si consiglia vivamente di disinstallare tali estensioni. In fondo alla pagina si trova il link: Subscribe to Joomla! Security - Vulnerable Extensions by Email per ricevere per mail una notifica ogni volta che si scoprono vulnerabilità in una estensione.

Nella sezione Resolved sono elencate le estensioni le cui vulnerabilità sono state risolte ed è disponibile una patch di sicurezza e\o un aggiornamento di versione. Si consiglia vivamente di installare la patch di sicurezza o aggiornare tali estensioni. Anche in questo caso in fondo alla pagina si trova il link: Subscribe to Joomla! Security - Recently Resolved Vulnerable Extensions by Email per ricevere per mail una notifica ogni volta che una vulnerabilità di una estensione è stata risolta.

Infine, nella sezione AbandonWare sono elencate le estensioni il cui sviluppo è cessato e per le quali non esiste più supporto. E’ bene precisare che non si sa se tali estensioni siano o non siano vulnerabili. In ogni caso si tratta di estensioni per certi versi obsolete in termini di codice e pertanto da verificare prima di utilizzarle.

Ci sono casi in cui esistono dei forks (un fork è lo sviluppo di un nuovo progetto che si basa sul codice sorgente di un altro) di tali estensioni e volendo si può utilizzare la sezione AbandonWare per prendere spunti e magari realizzare un proprio fork.

Le altre sezioni della Joomla! Vulnerable Extensions List (VEL) servono per comunicare con il Team segnalando vulnerabilità scoperte, segnalando la risoluzione di vulnerabilità. Concludo segnalando il blog della sezione Articles.