Reverse Engineering per dispositivi IoT — Video e slide

Come già saprete, il 27 ottobre si è tenuto in tutta Italia il Linux Day 2018 e su YouTube potete trovare tutti i talk dell’edizione di Vicenza. Il mio intervento è stato relativo al reverse engineering di dispositivi IoT, che è risultato un argomento abbastanza apprezzato dai numerosi studenti dell’ITIS presenti tra il pubblico.

Di seguito trovate il video, così come disponibile su YouTube. Purtroppo ci sono stati dei problemi di acustica dovuti alla forma piuttosto bizzarra dell’edificio: un unico locale che doveva contenere tutto l’evento. Quindi l’audio non è ottimale, però almeno le parole si capiscono bene… portate pazienza. 🙂

Le slide sono disponibili su Slideshare e le potete scaricare in PDF cliccando qui.

Vi ricordo infine che posso lavorare all’analisi di altri dispositivi e applicazioni IoT (e non solo). Per discutere eventuali progetti o collaborazioni potete utilizzare la mia pagina contatti.

Annunci

“Reverse Engineering per dispositivi IoT” al Linux Day 2018 — Sabato 27/10/2018, Vicenza

Ottobre è il mese che vede protagonista il Linux Day, la principale iniziativa italiana per conoscere ed approfondire Linux ed il software libero. Dal 2001 in tutta Italia si possono trovare vari eventi locali con talk, workshop, spazi per l’assistenza tecnica e dimostrazioni pratiche di software e hardware libero.

L’argomento di quest’anno è World Wild Web. Come socio del Gruppo Utenti GNU/Linux di Vicenza parteciperò proponendo un talk riguardante i dispositivi IoT (Internet of Things) perché in effetti non dobbiamo tenere d’occhio solo il Web, ma anche Internet e tutti gli aggeggi che vengono messi in rete. 😉

Il talk sarà di argomento lievemente tecnico:

Reverse Engineering per dispositivi IoT

Le nostre case sono sempre più popolate da una moltitudine di dispositivi connessi alla rete, che comunicano in vari modi e possono essere comandati tramite smartphone. Ma cosa si può fare se si vuole capirne il funzionamento e integrarli nel proprio software? Come caso di studio prenderemo in considerazione una relay board con un breve guida e una misteriosa app per Android, entrambe in cinese. Analizzeremo il tutto per svelare il protocollo di comunicazione e riuscire comandare i relay.

Ovviamente ci saranno anche molti altri contenuti interessanti: un talk su Odoo, uno sulle criptovalute, un workshop sull’open hardware e la sala maker sempre aperta.

Per tutti i dettagli vi rimando alla pagina del Linux Day 2018 sul sito del LUG Vicenza. L’ingresso è libero e gratuito, perciò non mancate!

Gli articoli premium de Il Foglio si potevano leggere senza pagare

Questo argomento ormai sta diventando una vera e propria saga. 😀 Dopo aver parlato di Repubblica e La Stampa, ecco l’ennesimo quotidiano il cui paywall (ovvero il blocco alle sezioni per abbonati) permetteva a chiunque di leggere gli articoli a pagamento, senza nemmeno effettuare un login.

Nel mio precedente articolo ho scritto:

una mancanza del genere solitamente è l’eccezione, non la regola.

Be’, temo che stia diventando la regola, anche se stavolta il finale è diverso. In questo caso ho scoperto il problema dopo che un amico aveva linkato una notizia premium de Il Foglio su Facebook. Avendo cliccato, ho riscontrato il paywall e, dati i precedenti, mi è venuto spontaneo chiedermi se fosse un paywall vero o l’ennesimo messaggio di facciata.

Ho guardato il codice sorgente della pagina, in altre parole il contenuto (testi, immagini, script) che poi il browser rappresenta in modo grafico per farci vedere l’articolo con tutta la sua grafica. Riscontrando questo pezzo di codice Javascript, ho visto qualcosa di estremamente interessante:

function read_paywall(){
    var replace=[];
    replace['paywall_canRead']='true';
    location.href = setUrlParameter(replace);
}
$.ajax({
    url: 'https://www.ilfoglio.it/webservices/canRead.jsp',
    [...]
    success: function(response){
        if(response.canRead){
            if(response.canRead)  {
                // può leggere
                // reload con parametri
                read_paywall();
                return;

Ricapitoliamo:

  • La pagina inizialmente contiene un pezzettino di articolo
  • Al caricamento, il sito invia una richiesta al server e verifica se l’utente è autorizzato a leggere le notizie integralmente
  • In caso positivo, richiama la funziona read_paywall la quale aggiunge ?paywall_canRead=true alla fine dell’URL e ricarica la pagina

Questo è un caso di controllo di sicurezza lato client, che in tale contesto non ha assolutamente senso. Ma in altri casi potrebbe pure averlo (per questioni di usabilità), a patto che poi tale verifica venga riconfermata nuovamente lato server, quando una persona cerca di caricare una pagina con il parametro ?paywall_canRead=true.

Ciò non veniva fatto da Il Foglio, perciò gli articoli erano leggibili assolutamente da chiunque.

Tutto questo veniva rilevato pochi giorni fa, come dimostra lo screenshot di una pagina caricata collegandosi all’URL https://www.ilfoglio.it/societa/2018/08/27/news/asia-argento-molestie-metoo-garantista-211179/?paywall_canRead=true. L’articolo è del 27 agosto 2018 ma è difficile stabilire per quanto tempo il sito de Il Foglio abbia avuto questo problema.

Apertura di un articolo premium in formato integrale, senza aver effettuato l’accesso

Non vi ho ancora raccontato la parte migliore. Dopo una prima visita a una notizia qualsiasi col parametro “aggiuntivo”, tutte le altre pagine venivano sbloccate in automatico perché l’autorizzazione veniva salvata nel cookie di sessione dell’utente. Insomma, era anche piuttosto pratico. 😉 La prima operazione poteva anche essere automatizzata con un semplicissimo script, esattamente una riga di codice:

if(window.hasOwnProperty("read_paywall")) window.read_paywall();

Avendo in programma di pubblicare prima il post relativo a La Stampa, ho rimandato la trattazione di questo sito a dopo il termine di ESC 2018. In questi giorni evidentemente qualcuno ha rilevato il problema e vi ha posto rimedio, al contrario delle altre testate precedentemente menzionate le quali hanno ancora dei paywall “scolapasta”.

A mio parere questa vicenda è una dimostrazione di quanto sia importante effettuare dei monitoraggi costanti su chi accede alle risorse riservate, nonché compiere delle periodiche verifiche di sicurezza per riscontrare eventuali bug. In altre parole è la buona cultura della sicurezza che cerco di diffondere a tutte le aziende con cui lavoro.

Gli articoli premium de La Stampa li può leggere chiunque, senza pagare

Precedentemente vi avevo già parlato di come gli articoli premium di Repubblica siano in realtà a pagamento solo per finta. I testi completi degli articoli infatti sono ottenibili in modo abbastanza banale perché il sito li mette a disposizione di chiunque.

Il caso era abbastanza eclatante, perché il testo di ogni articolo veniva semplicemente reso invisibile all’utente, ma effettivamente era presente. La maggior parte dei siti di notizie, invece, effettuano un vero e proprio “taglio” del contenuto. Al browser dell’utente viene mandato il primo paragrafo del testo e poi si vede un banner che invita ad abbonarsi.

Recentemente una persona mi ha chiesto se fosse un fenomeno presente anche su un altro quotidiano, ovvero LaStampa TopNews. Però penso risulti chiaro: una mancanza del genere solitamente è l’eccezione, non la regola. Stavo quindi preparandomi istintivamente a scrivere una risposta negativa.

Poi mi sono detto “vabbè dai, sono in ferie… 5 minuti li spreco, ma non uno di più”. Ho aperto uno degli articoli marcati come TopNews sul sito, in particolare questo:

http://www.lastampa.it/2018/08/22/cultura/investimenti-un-patto-per-ripartire-4Irf6mm0cDpDXY7JvmjtHI/premium.html

Ho osservato l’indirizzo e mi sono chiesto se questo avesse anche una versione di stampa. La prima cosa che mi è venuta in mente di fare, in modo del tutto istintivo, è stata di rimpiazzare il nome premium.html con print.html. Certo, un tentativo un po’ sciocco, ma costava poco provare. Quindi ho tentato di visitare questo URL:

http://www.lastampa.it/2018/08/22/cultura/investimenti-un-patto-per-ripartire-4Irf6mm0cDpDXY7JvmjtHI/print.html

Con mia sorpresa, qualcosa si è aperto. 🙂 La figura mostra le due pagine in questione:

Il testo di un articolo, prima e dopo il cambio dell’URL

Lo so, state pensando che è una cosa veramente assurda e bizzarra. L’ho pensato anch’io. 😀 Il fatto che le versioni complete degli articoli siano disponibili online a chiunque, senza login, vanifica completamente il senso del paywall. Considerando poi che i testi degli articoli sono il prodotto offerto da un quotidiano, il business ne risente sicuramente.

La cosa buffa è che nessuna delle due pagine è una “versione stampabile”, se provate a generare delle anteprime in PDF vedrete che vengono entrambe molto male.

Anche in questo caso ho creato un microscopico user-script a scopo dimostrativo, il quale funziona con le estensioni Greasemonkey e Tampermonkey. Se vi trovate su una pagina di TopNews, carica in background il testo integrale dalla versione “intera” e lo mette al posto dell’anteprima. Lo potete installare da qui:

La Stampa TopNews Full Text Articles

Come sempre, lo script è solo un proof-of-concept e il sito può venire sistemato in qualsiasi momento.

Quando vedo errori del genere rimango piuttosto basito, perché per qualsiasi sviluppatore software si tratta di sbagli alquanto grossolani e gravi. Durante la progettazione di un sito web, specialmente se a pagamento, è importante operare in modo preciso e professionale e occuparsi anche di fare le relative valutazioni di sicurezza.

Il mio talk su CAINE a ESC 2018 — Venerdì 31 agosto ore 15:30, Venezia

Proprio come nel 2016 e nel 2017, anche quest’anno sono stato invitato a partecupare ad ESC in qualità di relatore e non ho potuto dire di no, dato che l’evento ha un ottimo spirito ed è ricco di contenuti interessanti. ESC si ripete dal 2005 ed è un incontro non-profit di persone interessate al Software e Hardware Libero, all’Hacking e al DIY. La cosa più bella è che il contenuto viene creato dai suoi partecipanti, perciò è in continua evoluzione.

L’evento è organizzato dall’associazione Endsummercamp APS come “incontro informale della durata di più giorni con possibilità di campeggio, occasione di crescita personale e professionale, condivisione e scambio di conoscenze e di esperienze, gioco e networking tra i partecipanti, e inoltre come conferenza con talk e seminari tecnici su diversi argomenti e livelli” conformemente a quanto previsto dalle linee guida.

Abel, il sistema di build della nuova CAINE

CAINE è una delle distribuzioni Linux per l’informatica forense più usate al mondo. Analogamente ad altri progetti simili, l’attuale metodo di sviluppo comporta numerosi step non automatizzati. Molte delle personalizzazioni presenti nella distribuzione sono realizzate a mano, rendendo difficile tenerne traccia e valutare eventuali correzioni di bug o miglioramenti nella procedura. Abel (Automated Build Environment Lab) è un progetto che mira a produrre le nuove versioni di CAINE in modo totalmente automatizzato, tracciabile e peer-reviewed, con un ambiente di build omogeneo basato su Vagrant e numerosi script che applicano tutte le modifiche necessarie.

Come sempre l’evento si terrà a Venezia, precisamente presso Forte Bazzera e ci sono una marea di talk interessanti in programma, perciò vi consiglio calorosamente di venire! Vi ricordo che per partecipare è necessario registrarsi qui.

Ci vediamo all’ESC! 😀