In questo articolo affronteremo il tema dell'obsolescenza dei firmware dei nostri dispositivi di rete. Viviamo un momento estremamente critico dal punto di vista della cybersecurity, la concomitante crisi geopolitica internazionale dovuta alla guerra in Ucraina è stata largamente anticipata nel cyberspazio con attività offensive iniziate mesi prima delle operazioni militari tradizionali. Forse starete pensando: cosa c'entra tutto ciò col mio modem o con i miei dispositivi di rete? Ebbene probabilmente avrete sentito parlare, ad esempio, di botnet. Qualche anno fa fù individuata una enorme rete di dispositivi zoombie, passata alla storia come rete MIRAI, responsabile di imponenti attacchi DDOS (Distribuited Denial Of Service) eseguiti grazie ad innocui dispositivi di rete compromessi, quali comuni modem, NAS, camere di videosorveglianza e similari. Spesso, la compromissione di "device insospettabili" come questi avviene grazie alla presenza di firmware vulnerabili o non patchati dopo l'individuazione di bug software.
Un altro motivo per cui scriviamo questo articolo risiede nel fatto che la stragrande maggioranza dei produttori hardware, specialmente in ambito consumer (B2C), offre un supporto minimale o completamente assente per la manutenzione e gli aggiornamenti del software dei dispositivi. Molto spesso, alla data dell'acquisto, i sistemi operativi o i firmware che equipaggiano i dispositivi sono già in uno stato di "abandonware" di fatto, costringendo quindi l'utente ad usare soluzioni che nel tempo non possono che continuare ad accumulare nuove vulnerabilità via via scoperte.
Quali sono i vantaggi impliciti derivanti dalla sostituzione di firmware e/o sistemi operativi dei nostri apparati? sono molteplici e sintetizzabili in: (a) software nella quasi totalità dei casi open source, con codice revisionabile e modificabile da tutti; (b) ampie comunità di sviluppatori attivi che provvedono al miglioramento del codice e ad una costante operazione di bug fixing; (c) software allineati allo stato dell'arte che "estendono" la vita utile dei nostri device; (4) remote possibilità di ritrovarsi "in casa" software malevolo (backdoor) o sfruttabile per violazioni di sicurezza; (5) infinite possibilità di customizzazione e fine-tuning di ogni aspetto dei sistemi e tanto altro ancora.
Con tali premesse, oggi affronteremo allo scopo un caso concreto relativo ad un classico modem/router per il mercato consumer acquistato in una delle note catene italiane della GDO specializzate in ambito tech. Parliamo quindi di un comune apparato di rete che possiamo acquistare per la nostra abitazione o la nostra piccola attività a cifre modeste (intorno ai 50€). Il dispositivo è stato acquistato alla fine del 2020 e presentava già "di fabbrica" un firmware risalente ai primi mesi del 2019, per cui non è stato mai fornito un aggiornamento fino alla data in cui è stato sostituito il firmware. Per evitare di focalizzarsi sullo specifico modello in questa guida riveleremo esclusivamente la marca dell'oggetto – un modem/router D-Link – senza specificare il modello. Come si può notare dalla schermata di gestione del firmware del produttore (Figura 1), l'unica versione disponibile del firmware risaliva al 2019.
Per una operazione di questo tipo, l'opzione migliore per procedere alla sostituzione di un firmware proprietario con uno open source, sicuro, customizzabile ed adattabile secondo le proprie esigenze non poteva che ricadere sul progetto OpenWRT. Il sito ufficiale ci presenta la natura del progetto:
"The OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application."
OpenWRT fornisce quindi un sistema operativo completo per device di rete (modem, switch, NAS, ecc) permettendo all'utente una profonda personalizzazione di ogni aspetto del proprio device. Spesso "aggiungendo" o semplicemente "sbloccando" funzionalità insite nel device che non sono accessibili o utilizzabili tramite i firmware proprietari. Il progetto infatti permette di aggiungere al core del sistema quasi 10.000 pacchetti scaricabili tramite l'interfaccia di managment per aggiungere funzioni specifiche. Ci si può sbizzarrire a piacimento, ad esempio si può equipaggiare il router con un Firewall, un server Apache o nginx che gira nativamente nello stesso o configurare una interfaccia per instradare il nostro traffico automaticamente verso una VPN.
Prima di procedere specifichiamo che queste sono operazioni tecniche che richiedono grande familiarità con i sistemi UNIX/LINUX e presuppongono una buona conoscenza di architettura delle reti. La sostituzione di un firmware è una operazione complessa che può determinare il brick del dispositivo, determinando quindi un danno permanente allo stesso che risulterebbe solo da buttare! Quindi NON PROCEDETE se non siete esperti dell'ambito e ricordate che questo articolo ha scopo PURAMENTE EDUCATIVO E/O DIDATTICO.
Di seguito riportiamo le operazioni da fare per grandi linee, dato l'enorme numero di vendors e modelli di device diversi, ognuno con sue specifiche ed istruzioni ampiamente variabili.
Innanzitutto prima di procedere bisogna verificare che il proprio device si presta effettivamente alla SOSTITUZIONE di un firmware preinstallato. Lo si fa nel caso di OpenWRT consultando la Table of Hardware (visionabile qui) in cui è disponibile l'elenco dei device supportati dal progetto. Se il nostro device non è presente nella lista con ampia probabilità non sarà mai possibile sostituire l'OS. Bisogna infatti verificare che il nostro device è presente non solo a livello di Brand e Modello, ma anche di Versione (lo stesso modello potrebbe avere più versioni non tutte supportate).
Ricordate quindi di dover controllare OGNI SPECIFICA del vostro device e MAI procedere pensando di forzare l'istallazione di un OS relativo ad un modello o ad una versione diversa. Nel caso potreste brickare il device, in pratica lo danneggerete irrimediabilmente!
Una volta verificata la completa corrispondenza del vostro device con uno dei modelli supportati da OpenWRT dovrete passare all'azione. Sempre nella tabella ToH, sotto la voce Device Page, troverete la pagina specifica del vostro device che contiene, in maniera più o meno dettagliata, le istruzioni di installazione.
Prima di passare alle operazioni consigliamo di fare 3 cose:
- • Innanzitutto la modifica di un firmware, ad esempio di un router, richiede necessariamente l'interruzione della connettività per consentire l'intervento, consigliamo di procedere solo quando altri utenti o servizi connessi alla stessa rete non hanno necessità di connessione. In pratica, verificare che non si vada ad interrompere il servizio per nessuno. Le operazioni andrebbero effettuate con calma garantendosi il tempo per affrontare eventuali problematiche che dovessero insorgere;
- • Nella stessa tabella ToH di solito è presente un link alla pagina del Vendor del nostro device che contiene i link ai firmware e/o sistemi operativi che equipaggiano il nostro apparato. Consigliamo di scaricare a fini di backup i software originali e di custodirli per il futuro. Se ci fossero problemi durante le operazioni o il nuovo sistema dovesse non soddisfarvi un backup vi permetterà eventualmente di ripristinare lo stato originale;
- • Procuratevi per sicurezza un cavo di rete ethernet aggiuntivo con cui effettuare dei test e, se il vostro PC fosse sprovvisto di porta ethernet, un connettore usb-ethernet che vi permetterà di ovviare alla mancanza.
Fatte queste dovute premesse dovrete iniziare le operazioni seguendo attentamente la guida relativa al vostro device raggiungibile dalla tabella ToH. Dato che di seguito non entreremo nel caso specifico di un singolo dispositivo possiamo riassumere le operazioni generali da compiere nei seguenti passaggi:
- • Se operate sull'unico router/modem che avete a disposizione ricordatevi che le operazioni richiederanno interruzione della connessione, chiudete quindi ogni servizio non essenziale (consultazione mail, ascolto musica, ecc). Nel mentre aprite la guida su un altro PC o sul vostro Smartphone/Tablet per la consultazione.
- • Dalla pagina web del vostro device sul sito OpenWRT avrete precedentemente scaricato le immagini del nuovo firmware, in alcuni casi anche altri file come un *sysupgrade* (da applicare subito dopo l'installazione del firmware). Questi files (con estensione .bin) dovranno essere ora caricati o "flashati" sul vostro device. Questo potrebbe avvenire in vari modi, ad esempio caricandolo in una interfaccia web che si ottiene dopo aver messo il device in "recovery mode" (tipicamente dopo la pressione del tasto Reset per alcuni secondi) o caricandolo direttamente tramite FTP (fate sempre riferimento alla guida). Una volta fatto ciò il device inizierà il flash in automatico o bisognerà avviarlo manualmente secondo le istruzioni.
- • Alla fine delle operazioni del punto (2) il device di solito si riavvia automaticamente. Al termine di questa operazione il firmware (salvo problemi) dovrebbe essere installato ed operativo nel device, ma (nella gran parte dei casi) ancora sprovvisto di Interfaccia Grafica (GUI), per intenderci quella che semplifica di molto il managment ed è raggiungibile da browser. In questa fase dovrete accedere al router per completare l'installazione, di conseguenza vi troverete a dover "raggiungere" il device (ancora sprovvisto di GUI) creando una rete dal PC con Gateway 192.168.0.0/1 oppure 192.168.1.0/1 (a seconda del vostro caso specifico). Una volta fatto dovrebbe essere possibile loggarsi nel dispositivo da terminale tramite SSH all'indirizzo root@192.168.x.x;
- • Se il vostro device lo richiede in questa fase potrebbe essere necessario caricare il file sysupgrade tramite scp o ftp provvedendo all'installazione con un comando sempre documentato sulla giuda del vostro dispositivo;
- • Al termine delle operazioni del punto 3 (o anche del punto 4) possiamo finalmente installare l'interfaccia GUI, denominata "LuCI"nel caso di OpenWRT, che ci faciliterà di molto la futura gestione e manutenzione del device. I comandi da impartire dopo essersi loggati sono, di solito, i seguenti: (1)
opkg update
e (2)opkg install luci
;
Innanzitutto opkg è il gestore di pacchetti di OpenWRT da cui passeremo sempre in futuro operando da terminale, il primo ed il secondo comando (in sequenza) aggiornano la lista dei pacchetti ed avviano l'installazione di LuCI. Al termine di questa operazione dovremmo riavviare il device per applicare le modifiche dando un semplice comandoreboot
. - • Fine delle operazioni. Dopo il riavvio il nostro device ed il suo nuovo sistema dovrebbero essere raggiungibili da browser all'indirizzo 192.168.x.x (a seconda del nostro caso).
Una volta loggati vedremo finalmente tutte le schermate del nuovo sistema operativo del device da cui potremo iniziare la configurazione della nostra rete e di tutta una serie di servizi a nostro piacimento. Al primo accesso potrebbe essere necessario riconfigurare il router su una rete 192.168.x.y opportuna per "riprendere" la nostra vecchia configurazione pre-intervento, operazione utile per evitare di riconfigurare manualmente tutti i nostri device (PC, Smartphone, Stampanti, ecc) nel caso in cui adottavamo per gli stessi IP fissi piuttosto che attribuiti tramite DHCP;
In Figura 2 mostriamo la schermata intro di OpenWRT che contiene un riepilogo di tutti i principali settaggi del sistema, ovviamente sarà necessario configurare numerose impostazioni prima di avere il nostro device al top dell'operatività.
Da questo momento in poi le possibilità sono praticamente infinite, ognuno potrà sbizzarrirsi a proprio piacimento. Aggiungiamo solo altre due considerzioni. Potrebbe essere comodo visualizzare l'interfaccia tradotta in italiano, per fare ciò dovrete recarvi sotto la voce di menù System > Software e cercare il pacchetto "luci-i18n-base-it" nella barra di ricerca. Lo stesso va installato cliccando sul pulsante Install (a destra del pacchetto). Di solito è necessario fare il logout e di nuovo il login per applicare le traduzioni all'interfaccia.
Ricordate inoltre che la pagina Software è fondamentale in quanto da questa non solo è possibile aggiungere/rimuovere i pacchetti ma anche procedere all'aggiornamento di quelli installati. Prima di ogni operazione bisogna aggiornare la "lista pacchetti" cliccando su "Update lists", successivamente dalle Tab "Available", "Installed" ed "Updates" potremmo gestire cosa abbiamo installato, cosa va aggiornato e cosa vogliamo aggiungere. Ricordiamo che i nostri device hanno limiti di memoria interna, di solito da 16 a 128MB, di grande aiuto risulta l'indicatore posizionato sotto il titolo Software che ci informa costantemente su quanto spazio abbiamo a disposizione per l'installazione di nuovi pacchetti (Figura 3).
In ogni caso consigliamo esclusivamente agli utenti più smaliziati l'installazione di servizi specifici su un modem/router, ricordando che la configurazione e gestione degli stessi va fatta con attenzione e competenze in quanto potrebbe determinare malfunzionamenti del device e/o comportamenti non lineari.
Infine, potreste trovarvi davanti all'esigenza di cambiare il vostro device acquistandone uno nuovo, magari stimolati dal fatto che quello attualmente in uso non supporta modifiche al firmware oppure per necessità fisiologiche di passare ad hardware di ultima generazione… ebbene anche in questo caso vi viene in aiuto una pagina molto dettagliata curata da OpenWRT finalizzata al supporto di chi vuole garantirsi hardware a prova di customizzazione. Tenete a mente che sul panorama mondiale si stanno affermando sempre più costruttori "aperti" verso le richieste di chi cerca prodotti adatti al modding, di conseguenza non sarà difficile individuare un prodotto a voi adatto a meno di esigenze particolari. Da questo link potrete consultare una vasta lista di hardware supportato su cui potete orientarvi prima dell'acquisto.
A conclusione di questo articolo, è doveroso citare per completezza l'esistenza di progetti alternativi a OpenWRT, sempre finalizzati allo sviluppo e diffusione di firmware liberi o open source. E' il caso, ad esempio, di un altro famoso progetto di derivazione UNIX/LINUX denominato DD-WRT (visionabile qui). Inoltre, una lista completa è consultabile presso questo link.
Ci auguriamo che questo articolo vi sia piaciuto e vi abbia stimolato ad approfondire temi importanti nell'ambito tecnologico quali progetti open source, sicurezza informatica, un po' di DIY (do-it-yourself) applicato ai device di rete oltre alla curiosità nell'apprendere e nell'utilizzare nuove conoscenze. Se apprezzate il nostro lavoro seguite i nostri profili su Facebook e LinkedIn.
Vi ricordiamo che i temi trattati avevano scopo puramente EDUCATIVO e/o DIDATTICO, da maneggiare ed implementare dopo aver acquisto robuste conoscenze nel panorama UNIX/LINUX e nell'informatica in generale (architettura delle reti e protocolli). Ogni responsabilità per eventuali danni a beni o sistemi, sia pubblici che privati, derivanti dall'applicazione delle informazioni presenti in questo articolo è da attribuirsi esclusivamente ai responsabili.
Questo lavoro è offerto tramite licenza Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Risorse e Link:
- • https://openwrt.org
- • https://openwrt.org/toh/start
- • https://openwrt.org/toh/views/toh_available_16128
- • https://www.dd-wrt.org
- • https://en.wikipedia.org/wiki/List_of_router_firmware_projects