Il miracoloso NodeJS

piattaforma Open Source event-driven

NodeJS – una piattaforma Open Source event-driven

Ok, ammetto che fino a non molto tempo fa mi ero quasi scordato di Javascript, nonostante fosse stato uno dei primi linguaggi da me studiati, nel lontano 1997, quando mi approcciai al mondo del web; negli anni successivi pero’, non essendo io uno sviluppatore, le tecnologie di gestione e deploy dei server web che dovevo gestire si erano spostate verso un grande quantitativo di linguaggi, in particolare per la parte back-end , passando cosi dal php, perl, python, java, ruby, lua etc……

Come stavo dicendo, per me javascript era rimasto in sordina come un linguaggio di scripting che intercorreva tra l’hmtl ed il css, nella composizione piu’ o meno dinamica di una pagina web ,prima che i pesi massimi sopra citati entrassero in campo per svolgere il duro lavoro.

Poi, un giorno, a ciel sereno……BOOOOOOOMMMM ! scopro l’esistenza di NodeJS, ed iniziai a chiedermi a cosa si dovesse tutto l’interesse di cui stavo leggendo; scopro quindi che NodeJS e’ una piattaforma Open Source event-driven per l’esecuzione di codice JavaScript Server-side, costruita sul motore V8 di Google Chrome. Mmmmhhhh, ok bene, ma quindi? cosa fa?

Ebbene questa piccola rivoluzione creata da Google consente agli sviluppatori di realizzare web application con JavaScript non più solo lato client, ma anche sfruttandolo come linguaggio di programmazione lato server.

E gli sviluppi sono davvero moltissimi, cosi tanti che mettere un’elenco sarebbe noioso e stancante ma, tanto per farne uno molto odierno, con NodeJS possiamo, ad esempio, realizzare dei ChatBot.

Ma qual’e’ dunque il funzionamento che lo rende cosi appetitoso? Innanzitutto partiamo dal dire che Node funziona con una logica a eventi: quando un evento viene generato, allora viene eseguita un’azione. Grazie a questa tecnica non bisogna attendere che le istruzioni precedenti siano terminate, rendendo cosi il tutto molto veloce.

Nella pratica, non c’e’ bisogno di sapere come funziona il V8 per poter utilizzare NodeJS, basti sapere che e’ l’interprete javascript piu’ veloce al mondo, poiche’ e’ stato altamente ottimizzato utilizzando un tipo di programmazione JIT (Just In Time), che trasforma rapidamente il codice javascript in linguaggio macchina.

Ma la cosa che, almeno a parere personale, mi ha maggiormente colpito, e’ stato quello che possiamo chiamare come “Modello non bloccante” , questo si basa sul concetto degli eventi, ma per meglio chiarire dovremmo spiegare un minimo la differenza tra modello bloccante e NON bloccante.

Immaginiamo di dover creare un programma che ci permetta di scaricare un file da internet e che alla fine dell’esecuzione del download ci mostri un messaggio.

Bene, con il modello classico (bloccante) basato sulla programmazione sincrona potremmo schematizzare il processo nel seguente modo:

  • Scarica il file
  • Mostra il messaggio
  • Fai qualcos’altro

Ci aspetteremmo quindi che le azione vengano eseguite in ordine, leggendo le operazioni da eseguire dall’alto verso il basso.

Nel sistema asincrono di NodeJS invece le operazioni verranno svolte nel seguente modo:

  • Scarica file
  • Fai qualcos’altro
  • Mostra il messaggio

Perche’ questa diversita’ nell’esecuzione rende il tutto piu’ veloce e performante? Beh perche’ mentre il sistema effettua il download del file, il programma non rimane in attesa che il processo venga portato a termine ma anzi nell’attesa il programma esegue altre operazioni.

Il codice in oggetto avra’un aspetto tipo questo:

request(‘http://www.site.com/file.zip’, function (error, response, body) {
console.log(“Download completato!”);
});

console.log(“Mentre aspetto eseguo il resto del codice…”);

Quello appena descritto qui sopra e’ un’esempio di procedura di callback 

Ok ma se non fosse ancora del tutto chiaro, proviamo ancora a spiegare perche’ le callback sono cosi importanti, procediamo con l’esempio di prima ed aggiungiamo una difficolta’; adesso i file da scaricare sono diventati due, dunque nel sistema sincrono il programma procederebbe nel seguente modo:

  • Scarico primo file
  • Attendo che finisca
  • Scarico secondo file
  • Attendo che finisca
  • Mando messaggio

La grande differenza in questo esempio sarebbe che con NodeJS verrebbero lanciati entrambi i download, nello stesso momento, permettendo gia cosi un piu’ veloce download e, nel frattempo il programma e’ in grado di svolgere eventuali altri compiti. Ma questo come dicevo e’ soltanto un esempio, invece di un download multiplo, potrebbero essere delle query ad un DB, o la richiesta di dati a servizi esterni tramite API (Facebook, Twitter).

Pensiamo quindi ad un sistema come Facebook, che riceve X richieste di Like ogni tot secondi e vengono cosi aperti N operatori che devono attendere il loro turno per fare la modifica (del like) consumando comunque energie anche mentre sono fermi in attesa; invece NodeJS nella stessa situazione di richiesta di “reaction” sul sisto di FB (like o altro) si comporterebbe nel seguente modo:

metterebbe tutte le richieste in ordine di arrivo, prenderebbe la prima e, vedendo che si tratta di una sfilza di input le inserirebbe all’interno del sistema e, una volta capito che si tratta di stesse azioni (ad esempio che aggiungono un Like) che devono contattare un DB, NodeJS contatta il DB e invece di attendere per effettuare ogni singola modifica, aggancia alla richiesta una callback, per ogni richiesta di modifica, tutti uno dietro l’altro. Quando il DB finisce la prima modifica scatta la callback e NodeJS restituisce all’utente l’avvenuta modifica della pagina e cosi via, gestendo quindi con un solo operatore le N richieste di modifica del Like invece di crearne uno per ogni richiesta e parcheggiandoli tutti in attesa della loro singola modifica. Quindi con un server (magari anche un container con Docker) e con poche risorse possiamo gestire un’enorme quantita’ di richieste al secondo.

Inoltre NodeJS usa come sistema di pacchetti e librerie l’NPM, ma di questo fantastico sistema di librerie parleremo in un’altro articolo.

Nel prossimo articolo su NodeJS parleremo anche di 5 nuovi framework ottimi per chi si occupa di sviluppare.

#NodeJS

 

CITRIX databreach – Rubati 6 Terabyte di dati

Citrix databreach 6 Terabyte rubati

CyberWar, questo potrebbe essere il titolo di meta’ delle notizie che hanno a che fare con attacchi informatici di ogni genere, sia che siano diretti ad enti governativi o di Inteligence o che vadano a colpire grandi aziende.
Questo perche’ la CyberSecurity passa prima di tutto dalle aziende responsabili della creazione e dello sviluppo delle piattaforme informatiche/web che sempre piu’ quotidianemente usiamo ed useremo.

Pensando ai danni che potranno accadere con lo sviluppo delle tecnologie IoT, se non verranno ben gestite, il futuro digitale sembra vivere un momento di forte confusione. Ma veniamo alla notizia di qualche giorno fa.

L’attacco questa volte e’ avvenuto ai danni di Citrix, ed e’ di nuovo allarme sicurezza a livello mondiale, poiche’ questa volta la vittima è una di quelle aziende popolari, cosi come Facebook o Amazon, in quanto Citrix  e’ un’ azienda d’importanza e di forte impatto nel mercato delle soluzioni per la virtualizzazione desktop e server.

L’attacco e’ cosi importante, non soltanto per la quantita’ di dati sottratti, ma perche’ molti, o la stragrande maggioranza di essi, sono documenti tecnici di progettazione, che potrebbero quindi essere usati per accedere ai sistemi dei clienti che utilizzano le piattaforme Citrix. Tanto importante, dicevamo, che a gestire le indagini e’ intervenuta direttamente l’FBI, cosi come riportato anche in un’articolo di Forbes:
Why The Citrix Breach Matters And What To Do Next

Citrix ha immediatamente dichiarato di essere al lavoro per far rientrare l’allarme, ed ha aperto un’indagine interna, di tipo forense, per poter capire cosa e come sia successo.

Di per se a noi che non siamo direttamente coinvolti poco importa il COME, anche se lascia comunque basiti del fatto che, in pratica, non esiste alcune azienda che non sia attaccabile, sembra soltanto che sia piu’ una questione di tempo, di QUANDO questo succedera’.

In questo specifico caso, sembra che gli attaccanti avrebbero usato una tattica chiamata “password spraying”, in cui vengono sfruttate le password deboli per ottenere accesso al sistema, anche se limitato, per poi, successivamente, trovare il modo per aggirare i sistemi di sicurezza e fare escalation sul sistema vittima.

Quello che vorrei evidenziare, piu’ dell’attacco in se e piu’ ancora dell’azienda che e’ stata vittima, e’ che oggi giorno dovremmo tutti capire che Internet ( ossia il luogo in cui tutti noi ci scambiamo informazioni lavorative e/o personali ) e’ visto dagli altri “competitor” come un vero e proprio campo di battaglia, questo perche’ “la Rete” si e’ trasformata nel “Quinto Dominio Militare”, infatti il Cyberspazio è oramai da considerarsi la nuova frontiera della Guerra tra stati, un dominio in carenza di regolamentazione, dove i danni collaterali (le vittime ignare) siamo noi.

Consiglio a tutti la visione e l’ascolto di questo ottimo video che s’intitola per l’appunto GUERRA DIGITALE
con Matteo Flora & Stefano Mele.

Tecniche OSINT per ricavare informazioni dai Social

OSINT Facebook

Partiamo con un esempio, chi non ha mai visto un Film od una serie TV poliziesca in cui durante l’arresto, l’agente di turno elenca i “diritti” tra i quali c’e’ l’immancabile “tutto ciò che dirai potrà essere usato contro di te“; ecco oggi le informazioni che tutti noi riversiamo “volutamente” sui social hanno lo stesso effetto/valore.

Infatti, gia da un po’ di tempo, i Recruiter sono ormai soliti fare non poche indagini sui candidati, non soltanto verificando le competenze indicate sui profili Linkedin ma incrociando i “comportamenti” delle persone in base a cio che postano, le foto che condividono, i commenti che lasciano, i gruppi a cui sono iscritti e molto molto altro.

Le tecniche OSINT permettono di ricavare informazioni da fonti pubbliche come:

  • Mezzi di comunicazione – riviste, televisione, giornali, radio e siti web
  • Dati pubblici – dati demografici, rapporti dei governi, piani finanziari, conferenze stampa etc…..
  • Motori di ricerca e community

Molti sapranno gia dell’esistenza di tools come Maltego, Netglub, Lampyre ed altri, che permettono di effettuare ricerche di vario genere, incrociandole tramite parole chiave su piu’ motori/social diversi.
Molti di questi sono a pagamento e quindi fuori dalla portata di molti, ma anche sulle piattaforme Social è possibile ricavare informazioni, in modo diretto, senza per forza far riferimento a software del settore come Maltego e relativi Transform.

Tra le piattaforme Social di libero accesso a tutti, che meglio si prestano all’uso di queste tecniche per la raccolta d’informazioni, c’e’ proprio Facebook.

Chiariamo quindi subito che nell’esempio che faremo adesso, verranno evidenziate alcune informazioni, prese da profili “PUBBLICI”, le cui INFO a cui avremo accesso, sono state lasciate “di libero accesso” nella configurazione delle Impostazioni/Privacy di Facebook.
Questo articolo serve solo ad evidenziare quanto sia importante essere sempre a conoscenza delle regole di condivisione delle nostre informazioni che “regaliamo” volontariamente ai social media.

“In questo articolo verrà quindi illustrato un procedimento che potrà poi essere, eventualmente, automatizzato in completa autonomia, scrivendo qualche riga di codice o semplicemente creandosi un form in HTML, o altro”.

La procedura che da qui in avanti chiameremo come “Facebook OSINT” si avvale quindi di due grosse macro-categorie:

  • Google Dork
  • Manipolazione delle URL

N.B. : Le dork sono definite come testi di ricerca, preparati in modo limitato per lo scopo, composte da diverse keywords, che vengono immesse in un motore di ricerca per avere dei risultati specifici. Le dorks vengono dunque utilizzate principalmente per affinare i risultati di ricerca, al fine di avere link più specifici.

Dato che stiamo parlando di Facebook OSINT, quale miglior esempio che vederne il funzionamento cercando proprio maggiori informazioni sul profilo di Mark Zuckerberg.

Il primo passo è quello di cercare il codice numerico (ID) dell’utente Facebook da noi prescelto, in modo da poterlo utilizzare nell’URL di ricerca; per poter fare cio’ bisognera’ collegarci al nostro account FB e lasciarlo aperto, successivamente ci sposteremo su questo sito
[ https://findmyfbid.com/ ] a cui risponde il servizio “Find your Facebook ID” ed inseriamo nel campo Ricerca il link preso da FB, inerente l’utente su cui vogliamo fare ricerche, nel seguente modo: https://www.facebook.com/zuck

Premendo “Find numeric ID” ci verra’ ritornato un numero, come questo

che adesso potremo utilizzare in diverse forme, come le seguenti, ecco un piccolo elenco di ricerche da effettuare:

  • Luoghi visitati
    [https://facebook.com/search/User ID/places-visited]
  • “Mi Piace” alle pagine
    [https://facebook.com/search/User ID/pages-liked]
  • Commenti ai post
    [https://facebook.com/search/User ID/stories-commented]
  • Post dell’utente
    [https://facebook.com/search/User ID/stories-by]
  • Video dell’utente
    [https://facebook.com/search/User ID/videos-of]
  • Commenti alle foto
    [https://facebook.com/search/User ID/photos-commented]

….etc, la lista delle ricerche possibili e’ molto lunga, basta fare una ricerca e troverete tutte le altre possibilita’.

Per concludere, non sottovalutate mai cio che state pubblicando, siatene sempre consci, poiche’ “una volta su Internet….una vita sul Web”, tenete sempre sott’occhio le vostre impostazioni sulle Privacy ed ogni nuova modifica del social network che state usando.

Good Luck !

Google Titan Security Key

Google Titan Security Key

SICUREZZA SICUREZZA SICUREZZA…….

La parola piu’ utilizzata e letta su ogni articolo, anche non a carattere tecnico, che si intenda la sicurezza nelle citta’, oppure quella sui social media, ma ancor di piu’ il peso di questa parola lo si nota attorno a tutto cio che gravita’ sui nostri device, sia quelli personali, sia quelli che utilizziamo quotidianamente in ufficio.

Questo perche’ oggi la SICUREZZA colpisce/interessa tutti in ogni istante della nostra vita. Ogni giorno usiamo , centinaia di volte al giorno, device tecnologici di ogni tipo (SmartTV, SmartPhone, IoT, Router, AccessPoint….) e per ognuno di questi, teoricamente, dovremmo poter essere in grado di sapere cosa e come fare per proteggere i nostri dati e la nostra identita’ tecnologica, che sempre di piu’ rappresentera’ noi stessi, chi siamo, cosa facciamo, come lo facciamo…….

Ma nella realta’ chi di noi ha veramente le conoscenze ed il desiderio di doversi occupare quotidianamente della propria sicurezza; la maggior parte di noi stenta a ricordarsi di cambiare la password dell’account di posta oppure dell’utenza per l’home banking etc……, tutto questo perche’ preferiamo pensare che non saremo certo noi a diventare vittime di un qualsiasi hacker che sicuramente ha altri interessi piu’ importanti. Purtroppo non e’ cosi, oggi giorno siamo tutti collegati e la singola persona, il dipendente “qualunque”, potrebbe essere l’anello debole della catena che permette all’hacker di entrare nell’infrastruttura che vuole colpire e da li, piano piano scalare fino ad avere cio che gli serve…..

Il discorso e’ troppo lungo, ed e’ gia stato trattato in altri articoli, nella sezione (manco a dirlo) 😉 “sicurezza” di questo blog ed altri arriveranno. Fatto sta che per poter aumentare (garantire e’ una parola che non esiste, nulla e’ sicuro al 100%) il nostro livello di sicurezza possiamo per lo meno attivare, li dove ci e’ possibile, quelle funzioni denominate accesso a due fattori, sui nostri account di posta, sul nostro profilo FB …etc….

L’accesso a due fattori (2FA) esiste gia da un po’ di tempo ed è considerato uno dei metodi più sicuri per proteggere i propri dati online da eventuali malintenzionati. Tuttavia, neanche questo sistema può considerarsi impenetrabile ed anch’esso si evolve, da una prima modalita’ tramite invio di codice SMS, sino alla sua versione migliore tramite l’uso di Security Key, tra le piu’ usate ad esempio la Yubico

Anche questa tecnologia deve comunque tenersi sempre aggiornata, ed e’ notizia di questi ultimi giorni che anche Big G ha creato una Security Key dal nome “Titan Security Key“, in pratica e’ stata annunciata come una chiavetta per autenticarsi con la massima sicurezza ed a prova di phishing (ad oggi una delle vulnerabilita’ peggiori sul web).

In soldoni, la Titan Security Key, che inizialmente era disponibile solo per i clienti Cloud americani, oggi e’ in vendita sul Google Store per chiunque la volesse acquistare.
E’ un dispositivo di sicurezza utilizzato per gli account che sfruttano il doppio fattore di autenticazione, che permette di autenticare gli accessi tramite Bluetooth o USB.

Il dispositivo funziona con i browser più diffusi (incluso chiaramente Chrome) e può essere sfruttato all’interno di un crescente ecosistema di servizi che supportano lo standard FIDO, uno standard di autenticazione compatibile con numerose app e browser (gli account Google supportano le chiavi di sicurezza e altri accessi FIDO gia dal 2014), di conseguenza, il dispositivo può essere utilizzato anche per accedere a servizi diversi da Google (Facebook, Twitter, Dropbox, Gmail….. e molti altri ), anche se questi potrebbero non essere in grado, in questo momento, di usufruire appieno del firmware speciale sviluppato da Google ed inserito nelle Titan Security Key.

Come accennato prima, esistono due versioni della Titan Security Key di Google: una è USB mentre l’altra e’ dotata di connettività Bluetooth.
In entrambi i casi la chiavetta andra’ accoppiata con i propri account seguendo le indicazioni fornite da Google all’interno della confezione.

La versione USB, dunque la chiavetta fisica in se, è di piccole dimensioni, mentre la seconda versione, altrettanto piccola, essendo basata su tecnologia Bluetooth, a differenza della precedente non richiede l’inserimento fisico nel dispositivo (PC/Mac), ma è sufficiente la pressione del pulsante, presente su una delle facce, ed un accoppiamento via/Bluetooth per poter inviare i token di accesso/login nel momento desiderato.
La funzionalità del Token di sicurezza è la medesima della versione USB e, nella confezione è fornito un cavetto USB utile per la configurazione iniziale.

Ad oggi, dalle stime di Google soltanto il 10% degli account Google hanno attivato il sistema di autenticazione a due fattori sui relativi device. Una percentuale davvero bassa e sicuramente molte persone non gradiranno dover pagare un’oggetto per aumentare la loro sicurezza, poiche’ ci si aspetta che essa debba essere garantita e gratuita.

Molti ancora non vorranno doversi portare (seppur davvero piccolo e leggero) dietro l’ennesimo device/oggetto; ma al momento e’ un piccolo prezzo da pagare nella fase di adeguamento che subira’ Internet come lo conosciamo oggi, poiche’ quando nacque alla fine degli anni 60 (parlando di ARPANET) i protocolli creati all’inizio e che ancora sostengono il core dell’infrastruttura che chiamiamo Internet non erano pensati per i livelli di sicurezza richiesti oggi.

Concludo aggiungendo che per coloro che usano molti dei servizi offerti da Google per il proprio lavoro professionale, i token di sicurezza Titan sono compatibili con il Programma di protezione avanzata, il più potente strumento per la sicurezza offerto da Google per preservare gli Account Google (come giornalisti, attivisti, dirigenti aziendali e team di campagne elettorali) dal rischio di attacchi mirati.

AUSTRALIA VIETA LA SICUREZZA INFORMATICA

Australian Assistance and Access Act

In un periodo in cui leggiamo quotidianamente di attacchi informatici di ogni genere, rivolti ad aziende, cosi come a privati , diventa “normale” pensare che lo standard dovrebbe essere far diventare tutti piu’ attenti e preparati nell’uso delle tecnologie, per evitare di diventare vittime.

Fa dunque ancor piu’ strano leggere una notizia che sembra voler far fare un salto indietro al processo d’informatizzazione e di gestione della privacy.
La notizia e’ quella che arriva dalla lontana Australia, infatti il parlamento Australiano ha spiazzato tutti votando una norma che, nello specifico renderebbe “obbligatorie backdoor e crittografia illegale“.

Nella pratica questa e’ a tutti gli effetti una legge che “vieta la sicurezza”; la nuova normativa impone alle società, come Facebook (che possiede anche WhatsApp), Apple o altre a cedere dati alle autorità e alle Forze di Polizia, tutto cio anche senza l’ausilio del mandato di un giudice, e nel caso in cui i dati richiesti dovessero essere crittografati, questi ultimi (le aziende) dovranno anche fornire le chiavi di decodifica.

Se gia questo non fosse abbastanza per indignarsi e gridare allo scandalo ed alla fine della “privacy” la norma aggiunge anche che dovranno essere “imposte backdoor ad uso delle autorita’ “, affinché possano accedere alle comunicazioni dei cittadini ogni qual volta lo ritengano necessario.

Ok, qualcuno potrebbe pensare “va bene ma tanto io ho il mio amico di fiducia che lavora nell’IT, lui potra’ disabilitare tutto…” , purtroppo NO, poiche’ per la nuova legge australiana è illegale per i tecnici rifiutarsi di creare queste backdoor, e lo è anche fare da consulenti o opporsi a un ordine di questo tipo.

Nel concreto, queste leggi impongono a società come Apple e tutte le altre di aggiungere le backdoor ad insaputa dell’utente, direttamente all’interno dei dispositivi e dei software che verranno autorizzati dal governo, cosi che successivamente potranno essere usati dagli investigatori per monitorare le conversazioni.

Si pongono subito due grandi questioni da affrontare :

  • problema ETICO
  • problema TECNICO

in questo articolo non verra’ analizzato il primo problema poiche’ e’ troppo personale dato che ci sono sicuramente persone che pensano nella modalita’ ” io non ho nulla da nascondere , preferisco sentirmi protetto…” lascio dunque piena liberta’ ad ognuno di riflettere soltanto sulla notizia senza fare una sterile polemica .

Quello su cui mi sento di parlare e’ l’aspetto tecnico della legge in quanto ormai sappiamo che ad oggi ogni software che utilizziamo e’ molto spesso fallace, vengono riscontrati quoitidianamente dai whitehat o da pen tester Bugs di ogni tipologia, piu’ o meno gravi (zero-days), e le aziende passano spesso molto piu’ tempo a correggere bugs che ad implementare nuove funzioni.
Visto che tutti questi bugs permettono gia cosi di poter accedere ai nostri dati personali su qualunque device in nostro possesso (smartphone, router-wifi, spazio cloud…), la presenza di backdoor preinstallate renderebbe di fatto ogni device gia pronto ad essere violato non soltanto dalla polizia, fosse anche per motivi “leciti”, ma da chiunque che tecnicamente sia in grado di scoprirle ed utilizzarle, ritrovandosi cosi una specie di autostrada verso le informazioni private di ogni cittadino.

Dovremo forse tornare a scrivere le cose sulle agendine di carta ? anche perche’ a questo punto non ha più senso scambiarsi messaggi crittografati, come per esempio sulle chat di Telegram o WhatsApp, se poi esiste il modo di bypassare la sicurezza data dalla crittografia.

La storia recente ha gia insegnato che molti tools creati dalla NSA per motivi simili, alla fine sono finiti nel mercato nero del web e venduti al miglior offerente per spinaggio industriale o per stalking etc…….

Per finire vi segnalo due ottime serie Netflix che trattano quest’argomento:

#CeDaPreoccuparsi