Il mio 2020 in review

Il 2020 è stato un anno strano. Per tutti. La pandemia ha sconquassato le nostre vite in modi che non avremmo mai pensato.

Per quanto mi riguarda, tra le varie rivoluzioni portate dalla COVID-19, quella che mi ha impattato di più è stata probabilmente lo sdoganamento dello smart-working.
Se da una parte mi sono reso conto che non è assolutamente richiesta la presenza in ufficio tutti i giorni, dall’altra parte il non vedere i colleghi per lunghi periodi mi ha fatto sentire un po’ più solo e ha reso il luogo di lavoro un po’ più asettico riducendo le interazioni con i colleghi a poche righe su una chat.
Credo che solo recentemente abbia raggiunto un giusto compromesso andando 2 giorni alla settimana in ufficio.

In ogni caso il tempo risparmiato sugli spostamenti da e verso l’ufficio mi ha permesso di dedicarmi maggiormente alle mie passioni e di approfondire maggiormente lo studio del tema della sicurezza informatica (di cui ho anche scritto su queste pagine: qui e qui).

Visto che ormai l’anno volge al termine approfitto di questo post per fare il punto della situazione guardandomi indietro in modo da tirare le somme.

SPOILER: pensavo che quest’anno fosse andato molto peggio, scrivere questo post mi ha fatto pensare che tutto sommato non è andato troppo male.

Blog

Il blog quest’anno è stato fonte di molte soddisfazioni. Ho pubblicato 24 articoli in 12 mesi riuscendo a mantenere la media di almeno un articolo a mese che mi ero prefisso.

Ci tengo a ringraziare uno per uno i 21mila lettori che hanno consultato ben 28mila pagine di questo blog. Siete stati fantastici!

Vorrei anche dare un abbraccio (Covid permettendo) ai circa 60 di voi che hanno speso un minuto per lasciare un commento.

Infine vorrei poter offrire un caffè ai 16 eroi che seguono il mio canale telegram!

Grazie. Davvero.

YouTube

Quest’anno ho provato anche a pubblicare un video tutorial su YouTube. Non avevo particolari aspettative visto l’enorme imbarazzo che ho provato nel registrarlo eppure vedo che nel momento in cui scrivo sta per raggiungere le 300 visualizzazioni. Risultato del tutto inaspettato ma assai apprezzato!

Open source

Anche quest’anno ho dedicato un po’ del mio tempo libero a fare qualche piccolo contributo al mondo open source. In particolare ho fatto un piccolo contributo a Symfony, qualche miglioramento al portale developers.italia.it e all’estensione per Firefox Share Backported. Non è molto ma mi consola sapere che è meglio di niente.

Musica

Per me la musica è tutto. La ascolto ogni mattina mentre mi preparo, la ascolto mentre vado al lavoro e la ascolto persino mentre lavoro. Di frequente mi sveglio anche canticchiando qualche motivetto nella testa. E il mio fidato compagno di ascolti è Spotify che quest’anno segna ben 75600 minuti di ascolto!

Il mio 2020 su Spotify

Libri

Nel corso dell’anno ho comprato ben 17 libri ma sono riuscito a leggerne solo 11. L’anno era partito alla grande per cui “grazie” al primo lockdown ho dedicato veramente molto tempo a leggere e poi mi sono perso. E quindi anche quest’anno mi confermo come malato di “tsundoku” (parola giapponese che indica l’accumulo di libri non letti).

Tra i libri che mi sono piaciuti di più quest’anno annoverano sicuramente Factfulness e Advanced Web Application Architecture.

Factfulness è un libro sui bias cognitivi che affliggono ognuno di noi. Il libro si apre con 13 domande di cultura generale per il lettore. Tirando puramente a caso se ne dovrebbero indovinare circa 4. Io invece ne ho indovinate appena 2. Come mai? Perché il nostro cervello è nato come strumento per evitare pericoli immediati e quindi tende a tirare conclusioni frettolose e quindi semplicistiche.

Consiglio a chiunque di leggere questo libro per avere una visione del mondo basata sui fatti e non sulle percezioni (sbagliate).

Il secondo libro, Advanced Web Application Architecture, è un manuale tecnico sulla progettazione e sull’implementazioni di applicazioni web. Se il tuo obiettivo è scrivere codice pulito, riusabile e indipendente dal framework utilizzato questo libro è una lettura obbligata.

Videogames

Per la prima volta da anni il backlog si accorcia. Nel corso dell’anno ho acquistato 9 nuovi giochi ma sono riuscito a finirne ben 11!

Parte del merito è sicuramente del tempo risparmiato sulle trasferte casa-lavoro. Inoltre anche l’abbonamento all’xbox game pass mi ha permesso di giocare di più acquistando di meno.

Se dovessi scegliere il miglior gioco dell’anno tra quelli che ho giocato penso che darei l’ambitissimo premio a… Quantum Break!

Quantum Break è un gioco fantascientifico dove si mischiano alle sezioni di gioco vere e proprie delle parti girate da attori in carne ed ossa come se fosse una serie TV.
Tutta la trama gira attorno ad un evento per cui “si rompe” il normale scorrere del tempo e a cui il protagonista dovrà porre rimedio. La cosa favolosa è che gli sviluppatori si sono affidati ad un ex scienziato del CERN per rendere gli eventi del gioco coerenti con le più moderne teorie di fisica quantistica.

Se avete una quindicina di ore da dedicare ad un gioco ve lo consiglio veramente! (Ed è pure incluso nel game pass :D)

PS: Spero che venga rilasciato al più presto un sequel in grado di chiarire alcune domande lasciate in sospeso dal titolo.

E per il 2021?

Per il nuovo anno l’idea è quella di mantenere la direzione intrapresa nel 2020 ma non voglio stare a definire piani che poi non riuscirò mai a mantenere (mi conosco troppo bene). L’unica cosa che mi sento di dire con certezza è che manterrò la pubblicazione di almeno un post al mese su questo blog e che continuerò a pubblicare ogni martedì una riflessione sul mondo tecnologico sul mio canale telegram.

Visto il buon risultato raggiunto quest’anno vorrei buttarmi maggiormente su YouTube ma l’imbarazzo di parlare di fronte ad una videocamera non è facile da superare. Ma mai dire mai.

Se hai letto fino a questo punto non mi rimane altro che ringraziarti per la pazienza e augurarti un grandioso nuovo anno!


Com’è andato il tuo 2020? Se ti va di scambiare due chiacchiere lascia pure un commento qui sotto oppure scrivimi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Immagine di copertina by @giusugar

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!

Responsible disclosure: SQL Injection su portale sanitario

Hero image: ho trovato una sql injection in un portale sanitario

I dati sanitari delle persone dovrebbero essere tra i segreti meglio custoditi al mondo visto che la loro divulgazione senza esplicito consenso risulterebbe in una gravissima violazione della privacy dei pazienti. Non a caso ogni singolo dato sanitario ottenuto può valere fino a 250$ nel mercato nero .

Proprio per questo motivo mi aspetto che gli applicativi software che trattano questi dati siano protetti seguendo i più alti standard di sicurezza informatica esistenti.

Immaginate il mio stupore quando mi sono accorto che uno dei portali web utilizzati dai medici per il controllo dei proprio assistiti era vulnerabile a quello che OWASP mette al primo posto come fattore di rischio per le web app: la SQL Injection.

Per chi non sapesse di che cosa parlo, tramite un attacco di tipo SQL Injection un attaccante è in grado di eseguire dei comandi in linguaggio SQL con i quali può leggere, alterare ed eliminare qualsiasi dato presente all’interno di un database.

Non oso nemmeno immaginare le conseguenze disastrose che avrebbe potuto avere l’accesso e la divulgazione non consentita dei dati anagrafici e dei percorsi sanitari di migliaia e migliaia di pazienti.

Ma prima di procedere con i dettagli della SQL Injection mi presento: sono Lorenzo Millucci e sono un ingegnere del software che ama lavorare con Symfony e a cui piace condividere in questo blog le cose che impara. Iscriviti anche al mio canale Telegram in cui ogni martedì parliamo di piccole curiosità legate al mondo della tecnologia!

Cos’è una SQL Injection

Un attacco di tipo SQL Injection è un attacco che sfrutta la mancata validazione degli input digitati dall’utente per fare in modo che questi vengano interpretati come comandi per il database al fine di introdursi in un sistema informatico.

SQL infatti è un linguaggio di programmazione utilizzato per creare, modificare ed interrogare un database relazionale.

Normalmente quando un utente prova ad inserire un’istruzione SQL all’interno di un campo di input (come potrebbe esserlo il campo username di una pagina di login) il sistema si occupa di validare i dati inseriti accertandosi che non ci siano caratteri illeciti e/o facendone la traslitterazione verso una versione non dannosa (ad esempio il carattere < di solito viene convertito in &lt;).

Se questo processo di validazione dei dati immessi dall’utente non avviene potrebbe essere possibile sferrare un attacco di tra quelli appartenenti alla famiglia delle injection (a cui la SQL Injection appartiene).

Il tipico esempio di SQL Injection riportato in tutti i libri di testo è quello di una schermata di login in cui, per verificare che username e password siano corretti, viene usata la seguente query:

SELECT * FROM users WHERE username = "Foo" AND password = "bar" 

Un attaccante potrebbe aggirare questa schermata di login digitando come username Foo e come password " OR "" = ". In questo modo la query con i dati inseriti dall’utente diventerebbe:

SELECT * FROM users WHERE username = "Foo" AND password = "" OR "" = "" 

E poiché l’uguaglianza tra stringhe vuote "" = "" risulta essere sempre verificata l’attaccante si vedrebbe garantito l’accesso al sistema come un regolare utente senza che sia stato necessario conoscerne la password.

La SQL Injection sul portale

Esattamente come nell’esempio descritto poco sopra, nel portale in questione era possibile aggirare la pagina di login confezionando una stringa SQL ad-hoc e usandola come nome utente.

Per verificare l’esistenza del problema mi è bastato inserire il carattere ' nel campo username della pagina di login ottenendo come risposta la query SQL che il server ha provato ad eseguire per verificare la correttezza delle credenziali inserite.

Il messaggio d’errore restituito inserendo il carattere ‘ come username

Una volta accertata l’esistenza del problema mi sono immediatamente preoccupato di contattare chi di dovere affinché approntasse un fix per la vulnerabilità.

Timeline

20/10/2020 Mi accorgo del problema sul portale

20/10/2020 Invio email all’indirizzo di supporto generico (mai risposta)

26/10/2020 Invio email al dirigente del reparto IT che mi mette in contatto con il tecnico incaricato del portale

28/10/2020 Riporto la vulnerabilità al tecnico responsabile

11/11/2020 Mi segnalano che la vulnerabilità è stata sistemata

Conclusioni

Il problema sembra essere stato corretto e ora quando si prova ad inserire il carattere ' all’interno dei campi di login non viene più visualizzata la query SQL eseguita ma viene mostrata una semplice pagina bianca. Tutto bene quel che finisce bene.

O no?

Sinceramente ho l’impressione che il problema sia stato “risolto” semplicemente nascondendo il messaggio d’errore e lasciando la vulnerabilità esattamente dove si trova ma siccome non sono in grado di dimostrare questa mia ipotesi confido nella bontà della correzione. Avrei dormito sogni tranquilli vedendo un messaggio d’errore generico del tipo “nome utente non valido” piuttosto che una pagina bianca.

In ogni caso, vista la natura estremamente sensibile dei dati sanitari, mi auguro che le istituzioni incaricate al controllo e alla gestione di questi dati si impegnino maggiormente a garantire i più alti standard di sicurezza possibili.


Se questo post ti è stato utile puoi farmelo sapere lasciando un commento qui sotto oppure scrivendomi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!