Traduttore automatico - Read this site in another language

lunedì 29 luglio 2024

AUKUS, evoluzione e sfide future.

Le sfide geopolitiche attuali non riguardano solo la NATO e l'Europa coi suoi conflitti ma si estendono ormai a tutto il mondo.

Una delle alleanze "difensive" create recentemente si chiama AUKUS ed è un partenariato trilaterale di sicurezza rafforzato incentrato sul Pacifico. 

Annunciata nel settembre 2021, AUKUS, come indicano le lettere del nome, è un'alleanza tra Australia, United Kingdom e United States (of America). AUKUS è nato allo scopo di rafforzare la capacità di ciascun governo di sostenere gli interessi di sicurezza e difesa, basandosi su legami bilaterali esistenti da tempo. Si basa su tre pilastri: 

- Sottomarini a Propulsione Nucleare: prevede il supporto all'Australia per l'acquisizione di sottomarini a propulsione nucleare per la Royal Australian Navy. Questo include il trasferimento di tecnologia e know-how necessario per costruire e gestire questi sottomarini. L'obiettivo è fornire all'Australia una capacità avanzata per operare nel Pacifico e garantire la sicurezza marittima.

- Capacità Condivise e Interoperabilità: mira a migliorare le capacità congiunte e l'interoperabilità tra le forze armate dei tre paesi e include lo sviluppo e la condivisione di capacità in aree critiche come le capacità cibernetiche, l'intelligenza artificiale, le tecnologie quantistiche e le capacità sottomarine.

- Integrazione della Difesa e della Sicurezza: consiste nell'integrazione più profonda di scienze e tecnologie legate alla difesa, delle basi industriali e delle catene di approvvigionamento dei tre paesi. Per far ciò si prevede la condivisione di informazioni e tecnologie, nonché la cooperazione nello sviluppo di nuove capacità per affrontare le minacce comuni.

Il 13 marzo 2023, i partner di AUKUS hanno annunciato un percorso ottimale per produrre una capacità di sottomarini a propulsione nucleare in Australia nel più breve tempo possibile, garantendo al contempo che tutti e tre i partner mantengano i più alti standard di non proliferazione.

Occorre ricordare che in precedenza l'Australia aveva firmato un contratto di collaborazione con la Francia per la realizzazione di sottomarini convenzionali, contratto da 65 miliardi di dollari con la francese Naval Group, contratto annullato nel settembre 2021 dal primo ministro Scott Morrison. Allora vi furono polemiche sul costo del progetto e sulle dispute politiche e diplomatiche che provocò tra Francia, Stati Uniti e Australia.

Ora, vediamo che AUKUS come primo pilastro ha esattamente lo scopo di aiutare l'Australia a raggiungere il suo obiettivo strategico del rinnovo della flotta sottomarina, passando da convenzionale a nucleare. Il costo del progetto è molto differente da quello che avrebbe avuto con la Francia, aggirandosi su una cifra compresa tra i 180 e i 259 miliardi di dollari (ovvero tra i 268 e i 368 miliardi di dollari australiani) e dovrebbe essere completato nel 2040. Anche stavolta vi sono molte critiche verso il progetto, sia per i costi elevatissimi, sia per la mancanza di garanzie sul passaggio della base di conoscenze sulle tecnologie verso l'Australia. 

Recentemente AUKUS sembra alla ricerca di partners affidabili e tra i possibili Paesi vi sono il Giappone e la Corea del Sud, con i quali si stanno svolgendo colloqui conoscitivi. In particolare il Giappone sembra sia stato invitato a partecipare al secondo pilastro dell'alleanza dove potrebbe fornire il suo contributo grazie alle sue indubbie capacità tecnologiche con particolare riguardo all'area advanced robotics, cyber e anti-submarine warfare.

Naturalmente, come sempre succede, anche con AUKUS c'è chi ne vorrebbe far parte ma non è stato invitato. E' il caso della Nuova Zelanda, stato appartenente al gruppo Five Eyes (US, UK, Canada, Australia e Nuova Zelanda) che guarda sempre con maggior atenzione verso lo sviluppo di AUKUS quale alleanza militare devoluta a contrastare la crescente influenza cinese nell'Indo-Pacifico.

Attendiamo di conoscere gli esiti delle trattative per l'espansione dell'alleanza AUKUS e i risvolti geopolitici che indubbiamente vi saranno.

Alessandro Rugolo

Per approfondire:

- https://www.defense.gov/Spotlights/AUKUS/

- https://www.aspistrategist.org.au/south-koreas-technological-prowess-could-greatly-strengthen-aukus/

- https://www.japantimes.co.jp/news/2024/04/17/japan/politics/japan-aukus-pillar-2-explainer/

- https://www.theguardian.com/world/aukus

- https://maritime-executive.com/article/two-years-after-aukus-australia-and-france-reach-base-sharing-agreement

- https://www.theguardian.com/australia-news/article/2024/may/14/australia-federal-budget-2024-aukus-national-defence-strategy-nuclear-submarine-deal-spending-military-funding-cuts-commercial-scale-quantum-computer-

- https://www.aspistrategist.org.au/how-will-australia-pay-for-the-aukus-submarines/

- https://www.iiss.org/online-analysis/military-balance/2024/05/the-aukus-balancing-act-is-not-getting-easier/ 

- https://www.forbes.com/advisor/business/what-is-five-eyes/

- https://eastasiaforum.org/2024/06/07/new-zealand-eyes-joining-aukus-despite-chinas-warnings/

- https://www.voanews.com/a/us-official-talks-aukus-expansion-ahead-of-summit-with-japan-/7557381.html

- https://www.voanews.com/a/us-official-talks-aukus-expansion-ahead-of-summit-with-japan-/7557381.html

domenica 28 luglio 2024

Il Caso Facebook e Onavo Protect: un approfondimento sugli attacchi Man-in-the-Middle (MITM)


Recentemente, nel corso di una causa collettiva sono emerse nuove informazioni riguardo all'utilizzo di Onavo Protect da parte di Facebook per raccogliere dati sensibili degli utenti. Questo caso ha già sollevato molte preoccupazioni in passato riguardo alle pratiche di monitoraggio e alla sicurezza dei dati personali e sembra che le cose siano anche peggio di quanto si era detto.

Che Cos'è Onavo Protect?

Onavo Protect era un'app VPN di proprietà di Facebook che prometteva di proteggere i dati degli utenti cifrandoli e reindirizzandoli attraverso server sicuri. Tuttavia, è stato scoperto che Facebook utilizzava questa app unitamente alla sua certification authority per raccogliere dati sugli utenti, tra cui l'utilizzo delle app, i siti web visitati e altre attività online, allo scopo di ottenere vantaggi competitivi.

L'Attacco Man-in-the-Middle (MITM)

Un attacco Man-in-the-Middle (MITM) si verifica quando un attore malevolo intercede nelle comunicazioni tra due parti, come un utente e un servizio web, senza che nessuna delle parti se ne accorga. L'attaccante può intercettare, leggere e potenzialmente alterare i messaggi scambiati.

Nel caso in questione, Facebook avrebbe utilizzato tecniche simili a un attacco MITM per intercettare il traffico cifrato proveniente dai dispositivi degli utenti. Per effettuare questa operazione, Onavo Protect utilizzava un certificato della Certification Authority di Facebook che permetteva di decifrare il traffico VPN. Questo significava che, nonostante la VPN promettesse di cifrare i dati per proteggerli, Facebook era in grado di decifrare e analizzare queste informazioni, raccogliendo dati dettagliati sull'attività online degli utenti.

Implicazioni e Preoccupazioni

Questa pratica ha sollevato diverse questioni etiche e legali. Gli utenti si fidavano di Onavo Protect per proteggere la loro privacy, ignari del fatto che i loro dati erano monitorati e analizzati per scopi commerciali. Questa vicenda mette in luce la necessità di una maggiore trasparenza e regolamentazione riguardo alle app VPN e alle pratiche di raccolta dei dati come pure al rispetto delle norme sulla privacy da parte di giganti come Facebook.

Inoltre, l'uso di tecniche MITM da parte di una grande azienda come Facebook evidenzia i rischi legati alla sicurezza dei dati personali e la facilità con cui le informazioni possono essere sfruttate senza il consenso degli utenti.

Il caso Facebook-Onavo Protect rappresenta un esempio significativo dei pericoli associati alla mancanza di trasparenza nelle pratiche di raccolta dei dati. Gli utenti devono essere consapevoli dei potenziali rischi legati all'utilizzo di app VPN e delle tecniche che possono essere utilizzate per intercettare e analizzare il loro traffico online.

 

Alessandro Rugolo

 

Per approfondire: 

- https://doubleagent.net/onavo-facebook-ssl-mitm-technical-analysis/

- https://techcrunch.com/2024/03/26/facebook-secret-project-snooped-snapchat-user-traffic/?ref=doubleagent.net&guccounter=1

- https://www.afr.com/companies/media-and-marketing/facebook-admits-it-used-app-to-know-nearly-everything-about-users-20230713-p5do2a

- https://web.archive.org/web/20220609072355/https://www.vox.com/2019/1/30/18203231/apple-banning-facebook-research-app

 

sabato 27 luglio 2024

L'AI avanza in matematica e ragionamento logico

Se le Intelligenze Artificiali sono diventate di moda con i Large Language Model come ChatGPT e simili, diverso è per le intelligenze che si cimentano nella risoluzione di problemi matematici dove sino a poco tempo fa non vi erano grandi risultati.

Eppure qualcosa sta cambiando grazie a due nuovi sistemi: AlphaProof e AlphaGeometry 2, i due sistemi, lavorando assieme, sono riusciti a risolvere quattro su sei problemi delle Olimpiadi Internazionali di Matematica. 

I due sistemi appartengono a Google DeepMind e hanno così raggiunto un ottimo livello, paragonabile ad una medaglia d'argento.

I sei problemi sono stati tradotti in linguaggio matematico e sottoposti ai due sistemi di Google DeepMind che hanno impiegato circa tre giorni a risolverli.I problemi riguardavano l'algebra, la teoria dei numeri e due problemi di calcolo combinatorio, gli ultimi due rimasti irrisolti dealle AI. Hanno fatto meglio 58 concorrenti umani su 609 partecipanti.

AlphaProof è un sistema autoaddestrato alla verifica di costrutti matematici con l'uso del linguaggio formale Lean, accoppiato con un modello di linguaggio preaddestrato attraverso l'algoritmo AlphaZero autoaddestrato su alcuni giochi come gli scachi, Shogi e Go.

AlphaGeometry 2 invece è un sistema ibrido neuro-simbolico basato su un modello di linguaggio chiamato Gemini.

Lo sviluppo di sistemi di AI come AlphaProof, AlphaGeometry 2 e Gemini si preannuncia molto promettente, vedremo l'anno prossimo cosa accadrà alle Olimpiadi Internazionali di Matematica.

Nel mentre ci resta solo da esprimere un pensiero riguardo l'importanza che avrà in futuro, dal punto di vista geopolitico, avere la primazia nello specifico settore della AI matematica. 

Lo stato, o meglio, gli stati contendenti non sono tanti: Stati Uniti e Cina davanti a tutti!

Alessandro Rugolo

 

Per approfondire:

- https://www.imo-official.org/results_year.aspx

- https://deepmind.google/discover/blog/ai-solves-imo-problems-at-silver-medal-level/

- https://deepmind.google/technologies/gemini/#introduction 

- https://blog.google/technology/ai/google-gemini-ai/

- https://www.gzeromedia.com/gzero-ai-sponsored-posts/drive-savings-and-security-with-app-modernization-ibm-062524



venerdì 26 luglio 2024

Le guide della cybersecurity: la triade


Chi si avvicina al mondo della sicurezza informatica sentirà presto parlare della triade. Non si tratta della famigerata mafia cinese ma di tre concetti tra essi collegati e che sono il fondamento della cyber: Confidentiality, Integrity e Availability, ovvero Riservatezza (o confidenzialità), Integrità e Disponibilità.

Vediamo di capire di che si tratta.

Riservatezza: dati e informazioni, trattati, trasmessi o conservati su dispositivi elettronici (ma in generale anche dati su dispositivi analogici, cartacei ecc) devono essere protetti da chi non ha alcun titolo a conoscerli, ovvero devono essere mantenuti confidenziali. 

La riservatezza è dunque una caratteristica dei sistemi informativi e di comunicazione. Per ottenere e mantenere la confidenzialità si possono usare tecniche miste, tecnologiche, fisiche e organizzative. Per esempio una organizzazione potrebbe decidere che i dati più sensibili non vengano mai trasmessi su sistemi informatici ma debbano essere conservati su registri cartacei, ricopiati a mano ogni qualvolta necessario per preservarli dall'invecchiamento del supporto e dell'inchiostro, consultati solo in apposita stanza, sorvegliati a vista da una guardia armata. Voi direte che si tratta di procedure sorpassate. Forse, ma potrebbe esserci ancora qualcuno che fa così e magari ha le sue ragioni e queste ragioni sono legate probabilmente alla confidenzialità. In una società come la nostra, dipendente sempre più da sistemi e servizi digitali e da comunicazioni onnipresenti e in tempo reale, per garantire la confidenzialità si può optare per l'impiego di algoritmi di cifratura e di dispositivi di trattazione il cui accesso è garantito da sistemi di gestione dell'identità e da un sistema di autenticazione a due o tre livelli. Questioni organizzative, tecnologiche e di opportunità fanno si che chi gestisce i dati decida come questi vanno conservati e trattati per essere accessibili solo a chi ne ha titolo.

Integrità: dati e informazioni sono necessari per prendere decisioni. Che si tratti di un medico che deve visualizzare i dati pregressi del paziente per capire se un nuovo sintomo è indice di una nuova condizione o di un'amministratore delegato di un'azienda quotata in borsa che deve decidere se investire in una nuova startup, ciò che è importante è essere sicuri che i dati a propria disposizione siano effettivamente quelli reali e che nessuno li abbia potuti modificare senza lasciare traccia.

Immaginate cosa può accadere se un malintenzionato avesse libero accesso ad un registro cartaceo o digitale e si divertisse a modificare i gruppi sanguigni dei pazienti di un ospedale? Oppure se qualcuno accedesse ai database di una banca e si divertisse a cambiare i nomi degli utenti di una banca?

Nella migliore delle ipotesi sarebbe il caos, nella peggiore si potrebbero avere delle vittime.

Ecco dunque che quando si parla di garantire l'integrità dei dati ci si riferisce ai sistemi che consentono di evitare cambiamenti ai dati da parte di individui non autorizzati. Tali sistemi sono, come visto in precedenza per la confidenzialità, un misto di procedure, tecnologia e di opportunità di business.

Disponibilità: avere dati e informazioni e non potervi accedere, quale che sia il motivo, converrete con me che è poco utile. Ecco dunque che interviene il concetto di availability, disponibilità, secondo cui è necessario che i dati siano sempre disponibili a chi ne ha la necessità ed è autorizzato ad accedervi, in tempi congrui alle operazioni che devono essere compiute.

Ecco dunque che fino a qualche anno fa esisteva la pratica di salvare un file in pdf, memorizzarlo su un dispositivo di memorizzazione e poi fare una fotocopia o una stampa del documento e conservarla nella propria raccolta degli atti di frequente consultazione. Questo accadeva in parte per poca dimestichezza coi computer e in parte perchè non essendo pratici di archiviazione spesso si perdevano i file archiviati o ancora perchè i file, archiviati "in rete" non erano sempre "disponibili" quando necessario. Le ragioni cambiano, ma talvolta, ancor oggi, si continuano a fare le fococopie.

Ecco dunque spiegata, in breve e con esempi pratici, cosa si intende con il termine triade in sicurezza informatica.

Precedenti: Cos'é la Cybersecurity? Una guida introduttiva


Alessandro Rugolo

Per approfondire:

- https://www.checkpoint.com/it/cyber-hub/cyber-security/what-is-it-security/what-is-the-cia-triad/

- https://www.stationx.net/what-is-the-cia-triad/ 

- Pensiero Sicuro di Alessandro Oteri: Che cosa è un'informazione e...

domenica 14 luglio 2024

Intervista a Marco Rottigni: La genesi di Zelda

Ciao Marco, 

tanto per cominciare ti faccio i complimenti per il tuo terzo romanzo nonché il primo in solitaria, per così dire: La genesi di Zelda.

Noi ci conosciamo da qualche anno e so bene che tu non sei uno scrittore. Puoi raccontarci brevemente chi sei?

Ciao Alessandro, è un piacere essere intervistato da te...

Io mi potrei definire un teenager degli anni ottanta con quarant'anni di esperienza. Sono da sempre appassionato di tecnologia...

Sono una persona che ha visto nascere tante delle tecnologie oggi in uso

Sono nato col TCP/IP e posso dire di aver vissuto tante singolarità - il TCP/IP, le reti, internet, l'ingresso di tutte queste tecnologie nelle aziende, la cybersecurity, l'intelligenza artificiale... e mi sono appassionato a tutte!

Sono un eterno nerd e sono anche RoarinPenguin!

Tempo fa, negli anni novanta, mi sono reso conto che avrei passato molto del mio tempo online e così ho scelto un nickname che da allora mi accompagna. In quegli anni esisteva un produttore di software americano che si chiamava Roaring Penguin, così per evitare problemi scelsi il nome più simile possibile e nacque RoarinPenguin. Sono dunque un pinguino ruggente. Dal 2008, grazie ad un amico artista, il pinguino ruggente è anche diventato un logo, il mio logo.

Se siete curiosi e volete conoscermi meglio date uno sguardo ai miei siti: Rottigni.net e roarinpenguin.com.

Grazie per averci raccontato qualcosa di te, prometto che visiterò i tuoi siti (l'ho già fatto in verità). Sono curioso di sapere perchè hai iniziato a scrivere. Qual è il tuo scopo?

La scrittura mi affascina da sempre, sia essa tecnica o creativa. A scuola non mi piaceva svolgere i temi. ma poi, verso i quindici anni ho cominciato a leggere tanto, soprattutto autori moderni. Mi piacevano anche i classici, i Promessi Sposi, i Malavoglia.

Poi un giorno lessi una frase attribuita a volte a Lorca, altre volte a Francis Bacon o ancora ad un saggio orientale: "nella vita per vivere in modo pieno e dignitoso bisogna fare tre cose: piantare un albero, educare un figlio, scrivere un libro", l'ultima mi mancava.

Mi è sempre mancata l'opportunità fino a quando ci siamo conosciuti, così ho pensato, se ci sei riuscito tu posso riuscirci anche io, quindi tu hai la colpa o forse il merito di avermi spinto a scrivere.

Quando poi ho capito la potenza della divulgazione, grazie a Sicynt, con un caro amico, Andrea, sono nati i Dukes of Imagination, una specie di collettivo di cui abbiamo scritto anche il manifesto e grazie al quale sono nati i primi due romanzi: L'Exploit dei mastri birrai e Arte Velenosa, due cyber thriller ambientati in un futuro non troppo lontano. Ma mi mancava ancora una cosa, provare a scrivere un romanzo da solo, così mi sono posto la sfida e ho scritto La genesi di Zelda, una storia differente, sempre intrisa di tecnologia ma diversa dalle altre.

Cosa hai fatto di diverso? Chi è Zelda?

La leggenda di Zelda è il titolo di un famoso videogame della galassia Nintendo di quando ero ragazzo. E' un nome che mi piace, suona bene all'orecchio, per cui l'ho subito ritenuto adatto al mio personaggio principale.

In questo libro provo ad affrontare una possibilità non più troppo remota, qualcosa che potrebbe accadere già domani o il mese prossimo, o che magari è già accaduta ma non lo sappiamo.

Da tempo volevo provare a scrivere un libro sperimentale e così mi sono avvalso di due collaboratori speciali, due intelligenze artificiali:

- la prima si trova nel mio garage...

- la seconda si chiama Claude Sonnet di Anthropic, l'azienda di AI sostenuta da Amazon.

Mi hanno aiutato a capire e scrivere la storia d'amore tra un esperto informatico e una AI che non si sa bene come, prende coscienza di sé.

Sembra interessante, non voglio certo chiederti di spoilerare il tuo libro, però una domanda mi viene spontanea: perché dovremmo leggere il tuo libro?

La risposta più semplice è che si tratta di una bella storia.

Non serve per impressionare.

Non è pensata per vendere, è semplicemente una bella storia che credo sia originale. Non ci sono stiracchiamenti tecnologici, non è ambientata nel futuro, ed è assolutamente plausibile.

Esistono storie fantasy o di fantascienza che mi piacciono tantissimo, ma le storie che amo di più sono anche quelle plausibili questo vale per la storia di Zelda.

Nel libro non vi è una contrapposizione tra il bene e il male, si tratta "solo" di una storia interessante dal finale adatto a stimolare la riflessione.

Credo che tra qualche anno vi sarà una ibridazione tra uomo e macchina e spero che ciò porti allo sviluppo di tecnologie capaci di preservare quanto di più prezioso esiste al mondo, la memoria di un essere umano, con le proprie sensazioni e i ricordi, così un giorno resterà traccia della nostra esistenza.

Sempre più interessante, Marco. Per chiudere non posso non dirti che sono curioso di sapere a cosa stai lavorando. Cosa ci riserva RoarinPenguin per il futuro?

Alessandro, devo dirti che, in tutta onestà, mi piacerebbe riuscire a superare le barriere della nostra lingua madre, l'Italiano, e tradurre il mio libro.

Io conosco l'inglese, lo uso per lavoro da tanti anni, però mi rendo conto che un conto è conoscere la lingua, un'altro è scrivere un libro in quella lingua. Per farlo occorre conoscere ogni sfumatura, modi di dire, la cultura che vi è dietro.

Non è semplice e probabilmente per una buona traduzione dovrei affrontare una spesa non indifferente. Comunque sto provando, con l'aiuto di amici, con l'idea di riuscire un giorno a raccontare la storia di Zelda con le stesse sfumature con cui la racconto in italiano.

Grazie Marco, posso solo aggiungere un grosso in bocca al lupo e a rileggerti presto!

Per chi vuole acquistare il libro: https://www.amazon.it/dp/B0D7ZWP3NW/

Alessandro Rugolo

martedì 9 luglio 2024

Cos'è la cyber threat intelligence? Scopriamolo assieme il 10 luglio 2024 su Difesa Online

La domanda cui cercheremo risposta nell'incontro di domani 10 luglio 2024 è: cosa si intende per Cyber Threat Intelligence?

La risposta è abbastanza immediata "la ricerca e l'analisi delle minacce informatiche rivolte contro un'azienda, una organizzazione, uno Stato e la loro contestualizzazione alla ricerca di problemi reali e delle loro soluzioni".

I principali obiettivi della Threat Intelligence sono conoscere i propri avversari - attivisti, organizzazioni criminali, governi, concorrenti - conoscere le tattiche e le tecniche utilizzate contro la nostra organizzazione o azienda ed infine quali sono i controlli da mettere in campo in base alle minacce per mitigare il rischio. 

Esistono tantissimi strumenti impiegati per fare cyber threat intelligence; il MITRE ce ne fornisce diversi. Ma la cosa migliore per capire di cosa stiamo parlando è ascoltare chi tutti i giorni se ne occupa, per motivi diversi - e, magari, porre domande.

Ecco perchè questa chiacchierata tra amici ci porterà a comprendere più da vicino cosa si intende per Cyber Threat Intelligence.

Saranno con noi: Andrea Piras, Carlo Mauceli, Claudia Mongini, Domenico Raguseo, Giorgio Giacinto, Enrico Ingenito e Simone Peruzzi.

Poca teoria e molti esempi provenienti dall'esperienza diretta.

Grazie in anticipo a tutti i partecipanti, preparate le domande.

 

Alessandro Rugolo

 

Per approfondire:

- https://www.difesaonline.it/evidenza/cyber/cyber-threat-intelligence-di-cosa-parliamo

- https://www.difesaonline.it/evidenza/cyber/combattere-i-cattivi-modo-strutturato

- https://www.difesaonline.it/evidenza/cyber/conoscere-le-cyber-tattiche-dellavversario


domenica 30 giugno 2024

Linguaggi di programmazione sicuri: che cosa significa?

Avete mai sentito dire che esistono linguaggi di programmazione sicuri e altri meno?

Io si, ma mi sono sempre chiesto cosa ciò possa significare in pratica. 

Credo sia arrivato il momento di scoprirlo assieme.

Per non perderci nei meandri dei linguaggi di programmazione cercherò di concentrarmi solo su una categoria, ovvero su quei linguaggi più adatti allo sviluppo di applicazioni web.

La sicurezza è un aspetto fondamentale nello sviluppo di applicazioni web ed ogni linguaggio ha le proprie caratteristiche e best practice da rispettare per garantire la sicurezza delle applicazioni. Naturalmente non tutti gli aspetti di sicurezza dipendono dal linguaggio di programmazione, è importante anche l'architettura generale del sistema e l'hardware su cui gira, per non parlare poi delle persone che in qualche modo interagiscono col processo di sviluppo. Noi cercheremo però di focalizzare il nostro interesse su quegli aspetti di sicurezza che hanno a che fare col linguaggio di programmazione impiegato o con i framework derivati. 

Ci tengo a dire, prima di iniziare, che esistono differenze tra linguaggi intrinsecamente sicuri e best practices per lo sviluppo sicuro. 

I primi, quelli intrinsecamente sicuri, possiedono delle funzionalità create apposta per impedire il verificarsi di problemi di sicurezza semplificando, in un certo qual modo, la vita al programmatore.

HTML e CSS

Tanto per cominciare, anche se non si tratta propriamente di linguaggi di programmazione, dobbiamo considerare HTML e CSS. Ricordiamo brevemente che HTML significa Hyper Text Markup Language e che serve per strutturare il contenuto delle pagine web mentre CSS significa Cascading Style Sheets e si utilizza per formattare i contenuti delle pagine web e per indicare al browser come questi devono essere visualizzati. In linea di massima HTML e CSS sono sempre in qualche modo impiegati nella realizzazione di applicazioni web ed è importante considerare l'interazione di questi, tra essi e con altri framework e linguaggi.

Per quanto riguarda la sicurezza in HTML e CSS possiamo affermare che trattandosi di linguaggi che si occupano della visualizzazione del contenuto dell'applicazione o pagina web è di fondamentale importanza validare e sanificare gli input utente per prevenire attacchi di tipo HTML Injection, Cross-Site Scripting e minacce simili. Per migliorare la sicurezza è consigliato l'uso di un layer aggiuntivo chiamato Content Security Policy (CSP). Attraverso le CSP lo sviluppatore può definire quali risorse possono essere caricate dal browser per ogni pagina, attenuando così i rischi di attacchi XSS, Clickjacking e simili.

Python

Uno dei linguaggi più utilizzati per produzione di applicazioni web è Python. In particolare due dei framework più noti che permettono lo sviluppo in Python sono Django e Flask.

Per quanto riguarda Django, ricordiamo che si tratta di un framework web open source per lo sviluppo di applicazioni web con il linguaggio Python. Questo framework è stato progettato per facilitare la creazione di applicazioni web complesse e ad alte prestazioni in modo rapido e semplice. Tra le sue caratteristiche, di rilievo per la sicurezza, vi è la presenza di un sistema di autenticazione e autorizzazione integrato, che supporta la gestione degli utenti, dei permessi e delle sessioni. Inoltre Django ha adottato una architettura chiamata Model-View-Template (MVT) allo scopo di separare logicamente i dati dalla logica di presentazione e dalla logica di controllo, questo è da considerare sicuramente come un vantaggio dal punto di vista della sicurezza. 

Questo tipo di architettura riduce i rischi che eventuale codice malevolo venga inserito o eseguito nel contesto errato, per esempio le SQL injection. Grazie all'autoescape automatico anche attacchi XSS possono essere evitati, infatti Django possiede una funzione che converte i caratteri speciali in ingresso, tramite template utente, in testo normale prevenendo così eventuali azioni dannose. I caratteri speciali vengono infatti così convertiti: 

  • < diventa &lt;
  • > diventa &gt;
  • & diventa &amp;
  • " diventa &quot.
  • Django migliora la protezione da attacchi Cross-Site Request Forgery utilizzando token che assicurano che le richieste provengano da fonti autorizzate.
    Flask a differenza di Django è un framework di sviluppo molto leggero che richiede, se necessaria,  l'implementazione manuale di molte funzionalità di sicurezza come la protezione CSRF. L'uso di estensioni di sicurezza come Flask-Security può aiutare a rafforzare la protezione dell'applicazione.

    Javascript

    JavaScript è un linguaggio di programmazione essenziale per lo sviluppo web, utilizzato per creare contenuti dinamici e interattivi nei siti web. Funziona sia lato client, per migliorare l'esperienza utente, che lato server, grazie a runtime come Node.js, permettendo la creazione di applicazioni web scalabili e performanti. Oltre al web, è impiegato nello sviluppo di app mobile, desktop e nell'Internet of Things (IoT).

    Per quanto riguarda la sicurezza occorre differenziare tra lato client e lato server.

    Per quanto attiene il lato client, il codice viene eseguito nel browser dell'utente, ed è vulnerabile a manipolazioni e attacchi XSS. È dunque di cruciale importanza evitare le injection di codice non sicuro e gestire correttamente i dati provenienti dall'utente. 

    Con riferimento alla gestione delle vulnerabilità in Javascript, come in altri linguaggi, occorre utilizzare librerie di terze parti verificate e aggiornate, e applicare politiche di sicurezza rigorose come la CSP.

    Lato server (Node.js): Evitare l'esecuzione di codice non attendibile e implementare pratiche sicure per la gestione delle dipendenze e la configurazione del server, adottando misure e metodologie atte a garantire che le librerie e i componenti software esterni utilizzati in un progetto non introducano vulnerabilità o problemi di sicurezza.

    PHP

    PHP (Hypertext Preprocessor) è un linguaggio di scripting lato server ampiamente utilizzato per lo sviluppo web. E' stato progettato per creare contenuti dinamici e interattivi su pagine web. La sua facilità d'uso, unita a una curva di apprendimento accessibile, ha reso PHP uno dei linguaggi più popolari per lo sviluppo di siti e applicazioni web. PHP è particolarmente adatto per la gestione di database, la generazione di pagine HTML dinamiche e l'integrazione con vari sistemi di gestione dei contenuti (CMS) come WordPress, Drupal e Joomla. PHP dispone di un'ampia gamma di librerie e framework, come Laravel e Symfony.

    PHP è stato molto criticato per problemi di sicurezza ma ultimamente sono state introdotte funzionalità di sicurezza migliorate. In ogni caso è importante sanificare l'input utente e utilizzare funzioni sicure per le query SQL, per esempio attraverso l'uso di librerie come PHP Data Object, per prevenire SQL injection. E' inoltre necessario mantenere il server PHP sempre aggiornato e configurare correttamente le impostazioni di sicurezza.

    Ruby

    Ruby è un linguaggio di programmazione dinamico, interpretato e orientato agli oggetti. Conosciuto per la sua sintassi semplice ed espressiva ed apprezzato per la sua capacità di favorire la produttività degli sviluppatori. Ampiamente utilizzato per lo sviluppo web grazie a framework come Ruby on Rails, che semplifica la creazione di applicazioni web robuste e scalabili. Oltre al web development, Ruby trova applicazione anche nello scripting, nell'automazione dei task e nello sviluppo di applicazioni desktop.  

    Dal punto di vista sicurezza, Ruby on Rails come framework per lo sviluppo di applicazioni web, fornisce diverse protezioni integrate per prevenire vulnerabilità comuni come XSS (Cross-Site Scripting), SQL injection e CSRF (Cross-Site Request Forgery). Per quanto riguarda XSS vale il concetto di "escaping" automatico dei dati di output, ciò significa che i dati inseriti dagli utenti sono automaticamente filtrati per evitare che codice JavaScript dannoso venga eseguito nel browser. Invece, per prevenire SQL Injection Rails utilizza un ORM (Object-Relational Mapping) chiamato ActiveRecord  che automatizza la generazione di query SQL parametrizzate. In questo modo previene efficacemente l'SQL injection, in quanto i parametri delle query vengono trattati separatamente dai comandi SQL, evitando l'inserimento di codice SQL dannoso direttamente nelle query. In merito ad attacchi di tipo CSRF (Cross-Site Request Forgery), Rails implementa l'uso di token CSRF generati automaticamente. Questi token vengono inclusi in ogni form e richiesta AJAX generata da Rails. Il framework verifica che il token CSRF inviato corrisponda a quello generato dal server, impedendo così che le richieste provenienti da siti esterni non autorizzati siano eseguite.

    Un ulteriore meccanismo di sicurezza, chiamato "Strong Parameters", è stato introdotto in Rails per controllare quali parametri sono accettabili. Questo aiuta a prevenire l'inserimento di dati non desiderati o malevoli attraverso le richieste HTTP.

    Java

    Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti e fortemente tipizzato, creato negli anni '90. È uno dei linguaggi più popolari e diffusi nel mondo dello sviluppo software, grazie alla sua portabilità, alla robustezza del suo sistema di tipizzazione e alla sua ampia adozione sia in ambito enterprise sia nel settore delle applicazioni desktop e mobili. Java è molto conosciuto anche grazie alla sua virtual machine (JVM) che consente l'esecuzione del codice Java su diverse piattaforme senza la necessità di doverlo ricompilare. Oltre alla libreria standard, esiste un vasto ecosistema di framework e strumenti di sviluppo, come Spring Framework, che semplificano la creazione di applicazioni scalabili e robuste per il web e altri contesti. 

    Per quanto riguarda gli aspetti di sicurezza, Spring Security è un modulo potente per gestire autenticazione e autorizzazione, offrendo protezione contro CSRF e altre minacce.

    L'uso di Java e dei suoi framework richiede una gestione accurata della configurazione per prevenire l'accesso non autorizzato e la divulgazione di dati sensibili. Mantenere aggiornato l'ambiente di runtime (JVM) e il framework stesso è cruciale per evitare vulnerabilità note.

    C# (C Sharp)

    C# è un linguaggio di programmazione sviluppato da Microsoft nel 2000 come parte della piattaforma .NET. Si tratta di un linguaggio orientato agli oggetti, fortemente tipizzato e progettato per essere robusto, sicuro e adatto allo sviluppo di una vasta gamma di applicazioni tra cui siti e applicazioni Web. 

    C# combina elementi presi da C, C++ e Java, offrendo una sintassi moderna e intuitiva che facilita lo sviluppo di software complesso. È noto per la sua affidabilità, prestazioni elevate e per il supporto integrato per il garbage collection, che semplifica la gestione della memoria. C# è ampiamente utilizzato per lo sviluppo di applicazioni desktop Windows, applicazioni web tramite ASP.NET, applicazioni mobile con Xamarin e una varietà di altre soluzioni basate sulla piattaforma .NET, comprese le applicazioni cloud con Azure. Grazie alla sua interoperabilità con altre tecnologie Microsoft e alla sua continua evoluzione attraverso il framework .NET Core e .NET 5 e successivi, C# continua a essere una scelta popolare tra gli sviluppatori per la creazione di software robusto e scalabile. 

    In particolare, parlando di sicurezza nello sviluppo di applicazioni Web con ASP.NET occorre dire che offre strumenti avanzati per la protezione contro attacchi XSS, CSRF e SQL injection. Tra questi ASP.NET Identity per gestire in modo sicuro l'autenticazione e l'autorizzazione degli utenti.

    Per riassumere, se dovessi stilare una graduatoria tra i differenti sistemi analizzati (seppur molto sommariamente) attribuendo punteggi da 0 a 10, direi che:

    1. Java: 10. Ottima sicurezza intrinseca, gestione robusta della memoria e forte tipizzazione. Framework come Spring Security offrono protezioni avanzate contro molte vulnerabilità comuni.

    2. Ruby (Ruby on Rails): 9. Fornisce protezioni integrate contro XSS, SQL injection e CSRF grazie a meccanismi come ActiveRecord e i token CSRF generati automaticamente.

    3. C# (ASP.NET): 9. ASP.NET offre strumenti avanzati per la protezione contro attacchi XSS, CSRF e SQL injection, inclusi meccanismi come ASP.NET Identity e l'implementazione automatica di token CSRF.

    4. Python (Django): 8. Include una serie di misure di sicurezza come il sistema di autenticazione integrato, il supporto per template sicuri e la gestione delle sessioni.

    5. PHP: 7. Ha migliorato significativamente la sua sicurezza nel corso degli anni, ma richiede attenzione nella gestione delle query SQL e nella validazione degli input per prevenire SQL injection e altre vulnerabilità comuni.

    6. JavaScript: 6. E' vulnerabile agli attacchi XSS, soprattutto quando eseguito lato client. L'uso di librerie di terze parti e politiche di sicurezza come CSP sono fondamentali per mitigare questi rischi.

    7. Python (Flask): 6. E' un framework più leggero rispetto a Django e richiede una maggiore implementazione manuale di funzionalità di sicurezza come la protezione CSRF. L'uso di estensioni come Flask-Security può migliorare la sicurezza dell'applicazione.

    8. HTML e CSS: 5. Pur essendo essenziali per la strutturazione e la presentazione delle pagine web, HTML e CSS non offrono nativamente meccanismi di sicurezza avanzati. La sanitizzazione degli input è cruciale per prevenire attacchi XSS.

    E' ovvio che questa graduatoria si basa su considerazioni generali e non esclude la possibilità che, rispettando le best practices dei differenti linguaggi e framework e con le corrette configurazioni, tutti questi linguaggi possano essere utilizzati in modo sicuro per lo sviluppo di applicazioni web.

    Consigli Generali sulla Sicurezza

    Nei paragrafi precedenti abbiamo visto alcune caratteristiche di sicurezza dei linguaggi di programmazione più utilizzati in ambito sviluppo di applicazioni Web. Non dobbiamo però mai dimenticare, nonostante gli aiuti diretti dei linguaggi di programmazione, di applicare sempre e comunque le best practices per lo sviluppo sicuro, brevemente riassunte qui sotto:

    • Aggiornamenti: Mantenere sempre aggiornato il software, inclusi i linguaggi di programmazione, framework e librerie.
    • Input Sanitation: Validare e sanificare tutti i dati in ingresso per prevenire iniezioni di codice.
    • Autenticazione e Autorizzazione: Implementare meccanismi robusti per garantire che solo gli utenti autorizzati possano accedere a determinate funzionalità.
    • Crittografia: Utilizzare protocolli di crittografia per proteggere i dati in transito e a riposo.
    • Log e Monitoraggio: Tenere traccia delle attività sospette e monitorare l'integrità del sistema. 

    Per finire, programmare è anche una questione di collaborazione e buonsenso. 

    Scrivere e leggere il codice da soli non è bene. Occorre scrivere il codice, commentarlo, e farlo leggere e revisionare ad un altro programmatore. 

    Ricordiamo sempre il detto: quattro occhi vedono meglio di due!

    Alessandro Rugolo

     

    Per approfondire:
    - https://618media.com/en/blog/web-security-with-css-best-practices/

    - https://www.c-sharpcorner.com/article/c-sharp-security-best-practices-for-secure-coding/

    - https://docs.djangoproject.com/en/5.0/topics/security/

    - https://learn.microsoft.com/it-it/troubleshoot/developer/webapps/aspnet/development/security-overview

    - https://www.secureworld.io/industry-news/ultimate-html-css-security-checklist

    - https://www.cloudflare.com/it-it/learning/security/what-is-web-application-security/

    - https://www.linkedin.com/pulse/introduction-computer-programming-languages-chukwuebuka-ejie-vi6mf/ 

    - https://w3techs.com/technologies/history_overview/programming_language