CODE CODING & CYBERSECURITY
Sono i codici il petrolio del futuro, è l'attività di coding che garantisce il nostro futuro professionale e ci agevola in molti settori!
Argomenti trattati: linguaggi di programmazione; pensiero computazionale; secure coding;
Se ti occupi di cybersecurity prima o poi devi "sporcarti le mani con i codici"! Tanto per fare un pò di storytelling, racconto un pezzo della mia storia accademica/professionale.
C’ERA UNA VOLTA IL COBOL - un linguaggio di programmazione che ha fatto il suo debutto nel 1960. Fino agli anni '90 era un linguaggio complicato, fare la programmatrice Cobol ancor più. Sono andata a scuola di programmazione Cobol per due anni, al mattino frequentavo il Liceo e al pomeriggio andavo a scuola di Cobol. Ai tempi esisteva il foglio di programmazione, (quello che appare nella foto sulla destra, solo da desktop, è un foglio originale che ho conservato come ricordo) il flowcharting, la macchina della codifica, se tutto andava per il meglio l’output era un programma logico che non doveva fare una grinza. C’era una volta e c’è ancora, errato pensare che sia caduto in disuso, tutt’altro: lo usano soprattutto le banche come backend (molti bancomat si basano soprattutto sul Cobol), anche se, fortunatamente, le ultime release sono più semplici. Non ho mai lavorato come programmatrice COBOL e così l’ho scordato.
LA SEMPLICITA’ E VERSATILITA’ DI SQL Ai tempi dell’università avevo tra le materie e gli esami di informatica, la gestione dei DB, imparai SQL e le cose furono decisamente più semplici! SQL non è complicato se non fai cose di alto livello e se lo usi per collegare tabelle, campi, per fare estrazioni, anzi devo dire che mi divertiva molto con SELECT…FROM…WHERE…DELETE… ecc. riuscivo a fare cose interessanti. Mai usato nella pratica però. Seguirono altri studi, all’inizio Digysit, la realtà di cui sono titolare, inizialmente nacque per gestire siti web e come si può immaginare ho dovuto imparare i linguaggi di markup: HTML/HTML5 e poi alcuni linguaggi di scripting: PHP (indispensabile per i moderni siti dinamici) ed altri, seguiti da un corso tecnico e completo SEO, corso di WordPress e studio di un intero manuale di Drupal (e qui ci ho guadagnato alcuni capelli bianchi perché Drupal non ha la semplicità di WordPress). Ho creato siti web semplici, solo a livello didattico, il successivo disuso ha fatto si che non sia più in grado di creare siti nemmeno semplici.
LA VERSATILITA’ E POTENZA DEL PYTHON - Ora mi occupo di Cybersecurity e sto facendo i primi approcci al Python, un linguaggio versatile, semplice dinamico ma al contempo molto potente. Lo userò per fare pen-test? Assolutamente no, non scherziamo su certe “faccende” e nemmeno sull’analisi di vulnerabilità in quanto seppur condotta con software, sono attività delicate, richiedono un’interpretazione esatta e una lunga e consolidata esperienza. Per quanto riguarda il Penetration Test: è il professionista che “conduce il gioco” e non software pre-confezionati (personalmente Python mi servirà solamente per meglio comprendere certe tipologie di attacco) è fondamentale affidarsi ad una figura professionale con un consolidato background!
Ma allora a cosa è servito il mio percorso? Ne ho tratto dei giovamenti? : Assolutamente sì. In primis, con questo percorso ho sviluppato il pensiero computazionale senza nemmeno rendermi conto il mio pensiero si era in qualche modo connesso ai sistema informatici, ai linguaggi di programmazione, ai codici e questo mi ha agevolato parecchio nel corso di laurea in organizzazione aziendale specialmente nell'attività di analisi attraverso il flow-charting. Mi sono "sporcata le mani" con i codici di programmazione e questo ha lasciato in me una traccia, un insegnamento prezioso!
Un altro importante giovamento è nell'attività di docenza ai corsi di cybersecurity: anche quando l'insegnamento è teorico è importante capire quello che si insegna, e magari fare qualche piccolo esempio tecnico, per esempio per spiegare gli attacchi SQL injection, una tipologia di attacco ancora attuale che permette agli hacker di fare accesso ai database (ben sappiamo cosa potrebbe ottenere un cyber criminale con questi tipi di attacchi es. SELECT * FROM utente WHERE name = ‘username’ , se nel campo "username" mettono una condizione che è sempre vera, in un contesto dove gli input non sono sanitizzati, il gioco è fatto (sic)! Senza il mio percorso accademico che in apparenza non ha trovato un'immediata applicazione pratica, non sarei stata in grado di capire altre tipologie di attacco per esempio il SEO poisoing, ecc. ma soprattutto non sarei stata in grado di capire quanto l'errore umano conti in fatto di cybersecurity: una stringa di codice errata o in un posto errato può compromettere la sicurezza anche di grandi aziende. Non sarei stata in grado di capire l'importanza di affidarsi a degli sviluppatori professionali con lunga esperienza, a degli esperti tecnici di cybersecurity "che sanno il fatto loro", l'importanza di non scherzare con le applicazioni web, di evitare di far fare siti "al cugino", nemmeno i più semplici. Non sottovalutiamo l'importanza di errori di programmazione, della necessità di introdurre regole di sviluppo sicuro del codice (secure coding) fondamentale per sviluppare soluzioni sicure "by design" e siccome l'errore umano può capitare anche professionisti è sempre meglio optare, ove possibile, per soluzioni open source dove i codici sorgenti sono rilasciati con licenze che ne permettono la supervisione, la modifica e il miglioramento (una soluzione open-source è spesso più sicura).
E' parere di chi scrive che se i professionisti di computer forensics, penetration tester, e sviluppatori sono ben pagati (a volte strapagati) se lo meritano! E' altresì mia convinzione che il coding è materia che andrebbe introdotta nelle scuole a partire delle elementari fino all'università (ovviamente in forma gradatamente più complessa). Viviamo in una società sempre più tecnologicamente complessa in cui forse saremo chiamati a prendere parte attiva nella nostra cyber difesa! Un investimento in cybercultura porta sempre i suoi frutti, è, secondo il mio punto di vista, quanto di meglio si possa fare!