Traduttore automatico - Read this site in another language

domenica 28 aprile 2024

Adversarial SQLi attack. Solo il nome fa paura!

Ho già parlato in diverse occasioni di attacchi del tipo SQL Injection e questo non è che una evoluzione, ma prima di proseguire e per rinfrescarci la memoria potrebbe essere utile andare a rivedere questi articoli: SQL Injection: di che si tratta?, SQL Injection, sempre attuale nonostante l'età e Come ingannare le difese per fare un attacco SQL con JSON.

Dato che gli attacchi SQLi sono sempre in testa alle classifiche, allo scopo di migliorare le tecniche di difesa, i ricercatori di sicurezza hanno approfondito questo tipo di attacco concentrandosi in particolare su alcune tecniche di detection basate su due paradigmi:

- detection tramite signature;

- Machine Learning detection.

Mentre per le tecniche basate su signature è chiaro che un attacco viene individuato se la signature è presente nel database di firme malevole, per quanto riguarda la detection tramite algoritmi ML c'è molto da dire. 

Quest'ultima categoria infatti cerca di individuare gli attacchi SQLi grazie all'addestramento cui è stato sottoposto l'algoritmo di ML. 

Per cercare di evitare di essere individuati dagli algoritmi di Machine Learning detection gli attaccanti hanno inventato una nuova tecnica di attacco chiamata per l'appunto Adversarial SQLi attack.

Cerchiamo ora di capire che cosa sia un Adversarial SQLi Attack, come funziona un attacco di questo tipo e come lo si può contrastare.

Cominciamo come al solito dall'inizio, la definizione di Adversarial SQLi Attack.

Per Adversarial SQLi Attack si intende un attacco di tipo SQL injection costruito appositamente per non essere individuato da modelli di Machine Learning che si occupano di contrastare attacchi SQLi. 

In pratica si tratta di un tipo di attacco che sfrutta le vulnerabilità dell'addestramento del modello ML impiegato da strumenti come i Web Application Firewall (WAF) per individuare gli attacchi di tipo SQL Injection. 

Consiste nel modificare un payload malevolo (codice malevolo usato per l'attacco SQLi) affinchè il modello di ML utilizzato nei WAF non lo classifichi come tale ma come una richiesta legittima. Ma come è possibile aggirere gli algoritmi di Machine Learning?

Occorre sapere che la maggior parte dei WAF open source, ma spesso anche quelli proprietari, si basano su un set di regole chiamato Core Rule Set (CRS), sviluppato da Open Web Application Security Project (OWASP). OWASP ha anche sviluppato un WAF open source, ModSecurity, che è spesso integrato in altri sistemi. In pratica la maggior parte dei sistemi di detection di SQLi si basa sul CRS. Ma siamo sicuri che ciò sia un bene? 

La risposta sembra essere negativa. Secondo le risultanze di alcuni test le regole CRS portano in alcuni casi ad avere un elevato numero di falsi positivi, in pratica richieste legittime vengono scambiate per attacchi di tipo SQLi, provocando disservizio. Inoltre ModSecurity è altamente vulnerabile a attacchi di tipo Adversarial.

Ma come è possibile difendersi da questo tipo di attacco?

Per cercare di risolvere questi problemi sono stati seguiti diversi approcci tra cui quello conosciuto come AdvModSec, che consiste nell'addestrare il modello ML agli attacchi di tipo Adversarial, ovvero a riconoscere le varianti di un attacco SQLi. Il nuovo modello così addestrato sarà capace di riconoscere gli attacchi SQLi e voro varianti e a ridurre il numero di falsi positivi, avendo in definitiva un sistema di detection più efficace.

Alessandro RUGOLO

Per approfondire:

- https://arxiv.org/abs/2308.04964

- https://owasp.org/www-project-modsecurity/

- https://dl.acm.org/doi/10.1109/TIFS.2024.3350911

- https://davideariu.substack.com/p/the-rise-and-fall-of-modsecurity

- https://www.sciencedirect.com/science/article/abs/pii/S0065245815000649

Attacco XXE injection: cos'è e come prevenirlo

Immagine tratta da https://abu-talha.medium.com/xml-external-entity-xxe-attacks-understanding-and-mitigating-the-threat-e000e4ae385c


Quando si parla di XXE injection si fa riferimento ad una vulnerabilità web molto diffusa che permette ad un hacker di impossessarsi dei dati nei nostri server o di procedere con una cosiddetta “escalation” dell’attacco che potrebbe compromettere il server attaccato e altre infrastrutture ad esso collegate.

Prima di tutto vediamo cosa vuol dire XXEi ossia XML external entity injection. Per spiegare come funziona dobbiamo però sapere cos'è l’XML, acronimo di eXtensible Markup Language.

In breve, in informatica l’XML è un linguaggio usato per definire elementi e il loro significato all’interno di un testo. XML è estensibile ossia permette di definire dei tag personalizzati, tag che organizzano e definiscono ciò che si trova nel nostro documento.

All’interno del documento XML un oggetto può essere rappresentato attraverso una “entità” invece di utilizzare l’oggetto in sé.

Nel file DTD (document type definition) vi sono tutte le specifiche che definiscono le tipologie di dati che il nostro documento XML può contenere, i valori che gli possono essere assegnati ed altro ancora.

XML permette la creazione di entities o la possibilità di importarne di esterne, ed eccoci giunti alla definizione di external entities.

Le external entities sono delle entità non definite dal nostro DTD ma completamente esterne ad esso e vengono specificate attraverso un URL dal quale vengono caricate nell’applicazione.

Ora non è difficile capire i rischi che questa procedura potrebbe comportare verso i nostri sistemi.

Gli attacchi più comuni che sfruttano questa vulnerabilità puntano alla sottrazione di dati e password dai nostri database ma lo scenario più grave si presenta quando questa vulnerabilità viene utilizzata per portare un attacco di tipo Server-Side Request Forgery o in breve SSRF.

L’SSRF è un attacco nel quale una applicazione appartenente al server può venire utilizzata dall’hacker per avviare delle richieste verso qualunque indirizzo web e portare ad una compromissione inizialmente del server attaccato e in seguito di ogni infrastruttura ad esso collegata e potenzialmente vulnerabile.

L’XXEi ha come bersaglio principale le applicazioni che svolgono il parsing (ossia una analisi dei componenti) dell’XML che presentano una configurazione debole, applicazioni che accettano XML da fonti non fidate e applicazioni che non disabilitano l’utilizzo delle external entities.

Per scongiurare la maggior parte degli attacchi esistono tutta una serie di best practices tra le quali possiamo menzionare:

- la procedura di whitelisting a livello server, che ha lo scopo di bloccare ogni input che non rispetta i nostri standard di sicurezza;

- eseguire una validazione del dato XML;

- bloccare l’opzione dei parser XML di accettare entità esterne, ovvia ma spesso non utilizzata.

Con questi semplici accorgimenti è possibile prevenire una grande percentuale degli attacchi di tipo XXE.

Per trovare eventuali vulnerabilità di questo tipo possiamo in ogni caso utilizzare uno strumento molto utile e potente, chiamato Burp Suite, un software in grado di mappare le vulnerabilità di una applicazione web ed analizzarne le caratteristiche.

In ogni caso è sempre utile ricordarsi che la maggior parte degli attacchi è dovuta alla presenza di vulnerabilità nel software, riconducibili ad errori dei programmatori che non sempre sono adeguatamente preparati per lo sviluppo sicuro ecco perchè sempre più spesso si sente parlare di formazione per DevOps e DevSecOps, concetti strettamente legati allo sviluppo software e alla sicurezza.

Francesco RUGOLO

 

Sitografia:

https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

https://portswigger.net/burp/documentation

https://www.redhat.com/it/topics/devops

- https://www.pluribus-one.it/it/servizi/formazione/offerta-formativa-2

- https://owasp.org/www-project-devsecops-guideline

- https://abu-talha.medium.com/xml-external-entity-xxe-attacks-understanding-and-mitigating-the-threat-e000e4ae385c

lunedì 15 aprile 2024

Cross-Site Request Forgery (CSRF), Explained with Real-World ExampleS

This is an official writeup for the TryHackMe room: Cross-Site Request Forgery. 

In the world of cybersecurity, there's a malicious technique that blends technical prowess with psychological manipulation: it's known as Cross-Site Request Forgery, or CSRF for short.

Let's delve into understanding how this attack operates. Essentially, CSRF involves tricking a user of a website or web service into executing unintended actions on the site where they're already authenticated.

Picture this scenario: a user, perhaps browsing their online banking portal, gets lured into clicking a seemingly innocuous link shared by an attacker. Unbeknownst to them, this click triggers a request to transfer funds from their account to the attacker's. The user, who was authenticated on the banking site, unwittingly becomes an accomplice to the cybercrime.

This type of attack preys on the implicit trust that a website places in actions performed by an authenticated user, utilizing session cookies for authentication without verifying the user's identity for each action. And while this might seem like a remote threat, the consequences can be dire, ranging from financial losses to reputational damage for both users and organizations.

To mitigate this risk, developers employ various techniques:

  • Implementing CSRF Tokens: These are unique session tokens appended to each HTTP request, enabling the server to authenticate the user for every action. Without possessing the token, attackers are thwarted from executing CSRF attacks.
  • Leveraging SameSite Attributes: By configuring cookies with the "Strict" attribute, browsers refrain from including them in requests originating from other sites, bolstering security.
  • Utilizing Nonces: A nonce, or number used once, is a random and unique value generated by the server for specific operations. Users include the received nonce with their requests, which the server verifies for authenticity. If the nonce is invalid or has been previously used, the server rejects the request, safeguarding against CSRF attacks.

While these measures provide a layer of defense, it's crucial for developers not to rely solely on one method. Employing multiple techniques can fortify applications against sophisticated attacks that may circumvent individual safeguards.

Real-world examples of CSRF attacks underscore the importance of understanding and safeguarding against this threat. From compromised banking accounts to unauthorized transactions, the implications are far-reaching and necessitate proactive security measures.

In conclusion, if you're intrigued by the intricacies of CSRF and wish to fortify your applications against such threats, resources like OWASP offer comprehensive guides on understanding, testing, and preventing CSRF attacks. By staying informed and implementing robust security protocols, we can collectively mitigate the risks posed by CSRF and safeguard the integrity of online systems.

Alessandro Rugolo
 
https://www.redhotcyber.com/post/cross-site-request-forgery-spiegato-per-tutti/
 

lunedì 8 aprile 2024

Biden istituisce la figura del Chief Artificial Intelligence Officer

Do you need a Chief AI Officer? 

Cosa è successo.

Lo scorso 28 marzo è stato emanato il memorandum M-24-10 il cui oggetto è: "Advancing Governance, Innovation, and Risk Management for Agency Use of Artificial Intelligence". 

Il Memorandum si concentra su tre macro obiettivi:

- Strengthening AI Governance;

- Advancing Responsible AI Innovation;

- Managing Risks from the Use of AI.

Mi soffermo un attimo sul primo obiettivo, tralasciando gli altri, che seppure altrettanto importanti non rappresentano una grossa novità.

Il rafforzamento della Governance dell'AI è basato sull'Executive Order del 30 ottobre 2023 sul "Safe, Secure, and Trustworthy Development and Use of Artificial Intelligence. Il Memorandum recentemente pubblicato riprende le disposizioni presidenziali e detta i tempi di attuazione e le regole da rispettare per la nomina del Chief Artificial Intelligence Officer delle Agenzie federali.

Il memorandum sentenzia che la nomina del CAIO dovrà avvenire entro i sessanta giorni, ovvero entro la fine del mese di maggio.

Il CAIO dovrà avere eseperienza, preparazione e autorità per sovrintendere alle attività dell'Agenzia in cui siano impiegate tecnologie dell'Intelligenza Artificiale.

Le sue principali responsabilità sono: 

- coordinare l'uso dell'AI nella propria agenzia;

- promuovere l'innovazione legata all'AI;

- gestire i rischi derivanti dall'uso dell'AI.

Ma perchè l'introduzione della figura del CAIO è importante? Cosa cambia dalla gestione attuale?

L'importanza di questa nuova figura professionale è direttamente legata alle capacità rivoluzionarie dell'Intelligenza Artificiale, in quanto "disruptive technology"!

L'introduzione di questa nuova figura all'interno delle Agenzie Federali avrà delle ripercussioni nel mondo del lavoro. Le Agenzie federali negli Stati Uniti sono diverse centinaia e la nomina di una figura a livello di Senior Executive o di Senior Leader porterà alla nascita di numerosi uffici che assorbiranno parte del personale dotato di conoscenze nel campo ad oggi impiegato dall'industria. I tempi dettati dal memorandum sono brevi e questo potrebbe creare problemi nell'individuazione del personale. 

Di contro, la creazione di strutture operative dedicate all'impiego dell'AI nelle Agenzie farà nascere nuovi casi d'uso e anche nuove esigenze, stimolando di conseguenza la ricerca applicativa.

Naturalmente il tutto dovrà essere sostenuto da una iniezione di fondi nel settore e questo in effetti sta accadendo. Se leggete bene il Memorandum, contrariamente a quanto accade normalmente da noi, le esigenze di trasformazione organizzativa e di personale non sono "a costo zero".

E in Italia?

In Italia le iniziative sull'Intelligenza Artificiale si moltiplicano ma non sembra che la nuova figura abbia ancora preso piede. 

E' difficile pensare che vi possa essere qualche cambiamento a breve in quanto gli investimenti in AI da parte dello Stato negli anni passati sono stati abbastanza modesti anche se nello scorso mese di marzo vi sono state delle dichiarazioni del sottogretario all’Innovazione Alessio Butti che ha delineato la Strategia Nazionale sull'AI e che dovrebbe essere finanziato con un miliardo di euro. Ma al momento sono solo propositi, vedremo quale sarà la realtà.

Ipotizzare l'introduzione di una figura importante come il CAIO nelle strutture organizzative statali è troppo lontano dalla realtà, e se mai sarà fatto probabilmente si darà un "doppio incarico" a chi già è oberato di lavoro, perdonate la sfiducia! 

In ogni caso come sempre, osserviamo che succede e proviamo a dire la nostra per migliorare le cose, sperando di  non arrivare, come spesso accade, troppo tardi.

Alessandro Rugolo

Per approfondire:

- https://www.whitehouse.gov/wp-content/uploads/2024/03/M-24-10-Advancing-Governance-Innovation-and-Risk-Management-for-Agency-Use-of-Artificial-Intelligence.pdf

- https://www.whitehouse.gov/briefing-room/presidential-actions/2023/10/30/executive-order-on-the-safe-secure-and-trustworthy-development-and-use-of-artificial-intelligence/

- https://www.whitehouse.gov/briefing-room/speeches-remarks/2024/03/28/press-call-by-vice-president-harris-on-artificial-intelligence/

- https://www.cbsnews.com/news/white-house-chief-ai-officers-federal-agencies-artificial-intelligence/

- https://federalnewsnetwork.com/artificial-intelligence/2024/04/intelligence-community-gets-a-chief-ai-officer/

- https://cio.economictimes.indiatimes.com/news/artificial-intelligence/is-it-too-early-to-have-a-chief-artificial-intelligence-officer-caio/108932199 

- https://www.agendadigitale.eu/industry-4-0/ia-in-azienda-quando-e-perche-assumere-un-chief-artificial-intelligence-officer/

- https://www.corrierecomunicazioni.it/digital-economy/ai-si-delinea-la-strategia-nazionale-golden-power-e-autorita-di-vigilanza/

lunedì 1 aprile 2024

Cosa sta accadendo nella community Linux: xz backdoor, attacco alla fiducia

XZ Utils 

Appena tre giorni fa, il 29 marzo 2024, un nuovo attacco è stato scoperto.

Un attacco che ha interessato un software open source che fa parte dei principali pacchetti di Linux, si tratta di XZ / liblzma library, un tool di compressione molto noto.

Il ricercatore e sviluppatore Andres Freund ha scoperto infatti che nelle ultime due versioni del github xz project (5.6.0 di febbraio 2024 e 5.6.1 di marzo) è stata introdotta una vulnerabilità valutata con il livello 10 di criticità che consente ad un hacker di collegarsi da remoto, in pratica una backdoor.

Tante sono le distribuzioni Linux impattate, tra queste vi è Kali Linux, Fedora 40, Gentoo e Debian Sid ed altre.

Tante le considerazioni da fare su questo tipo di attacco.

Per cominciare occorre dire che la backdoor è stata inserita da uno di coloro che dovrebbero garantire il mantenimento del software su github, in teoria dunque qualcuno di cui ci si dovrebbe poter fidare. Questo è un punto importante perchè mina la fiducia nei software open source, in teoria più sicuri perchè ispezionabili da chiunque lo voglia (e ne sia in grado), in pratica spesso gestiti con personale che presta la sua opera solo saltuariamente e non sempre di provata affidabilità.

La seconda considerazione riguarda proprio una delle distribuzioni colpite, Kali Linux. Per chi non lo sapesse Kali Linux è considerato il sistema operativo specializzato per la cyber security in quanto dotato di innumerevoli strumenti. Un colpo alla fiducia verso Kali Linux!

La terza considerazione riguarda il fatto che la libreria liblzma è utilizzata da numerosi altri tool, tra cui OpenSSH. OpenSSH è un altro software opensource che consente ad un utente di collegarsi ad un computer da remoto se provvisto delle corrette credenziali. La backdoor introdotta sembra agisca proprio sul processo di autenticazione, effettuando una verifica preventiva sulla chiave inserita dall'hacker e autorizzando la sua connessione in caso di risposta positiva. Ciò vuol dire avere accesso illimitato al sistema attaccato. Ancora una volta tutto ciò va a detrimento della fiducia che si dovrebbe avere  nei confronti dei software di sicurezza.

Credo che per ora ci sia poco altro da dire se non che l'incidente è attualmente sotto investigazione e può darsi che vi saranno novità interessanti a breve. 

Vediamo che succede.


Alessandro Rugolo

 

 

Per approfondire:

- https://www.openwall.com/lists/oss-security/2024/03/29/4

- https://jfrog.com/blog/xz-backdoor-attack-cve-2024-3094-all-you-need-to-know/

- https://thehackernews.com/2024/03/urgent-secret-backdoor-found-in-xz.html

- https://news.ycombinator.com/item?id=39880874

- https://www.suse.com/c/suse-addresses-supply-chain-attack-against-xz-compression-library/

- https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27


mercoledì 27 marzo 2024

Cross-Site Request Forgery (CSRF), spiegato per tutti!

Tra le tecniche utilizzate per compiere attacchi cyber ve n'è una che combina aspetti tecnici e di social engineering: si tratta dell'attacco conosciuto come Cross-Site Request Forgery, da ora CSRF.

Cerchiamo di capire assieme come funziona questo attacco. 

L'attacco consiste nel convincere un utente di un sito o servizio web ad eseguire delle azioni non volute sul sito nel quale è al momento già autenticato. 

Si tratta in pratica di trarre in inganno l'utente. Se la vittima dell'attacco è un utente normale senza particolari privilegi sull'applicazione questo può essere indotto a compiere azioni indesiderate, ma se l'utente è un amministratore del sistema, e perciò dotato di privilegi particolari, le cose si complicano per l'intera applicazione.

Proviamo a fare un esempio.

In primo luogo l'hacker crea un sito simile a quello di un servizio web, magari realizzando una copia di un sito di una banca on line. Niente di più semplice, è sufficiente clonare un sito attraverso l'uso di strumenti automatici come per esempio HTTrack o SiteSucker e poi apportare le modifiche che occorrono per il proprio scopo. 

A questo punto l'hacker diffonde il link al sito malevolo cercando di invogliare i possibili utenti.

Un utente poco attento, precedentemente autenticatosi sul sito o servizio web legittimo, clicca sul link malevolo creato dall'hacker. In questo istante le credenziali dell'utente, salvate nei cookies del browser, vengono rubate ed utilizzate dall'hacker per fare una richiesta al sito web, richiesta che potrebbe essere per esempio un bonifico sul conto dell'hacker.

L'utente purtroppo non può rendersi conto di  cosa sta accadendo. Si accorgerà solo, quando verificherà il suo conto, di aver meno soldi di quanto previsto.

Questo tipo di attacco, come abbiamo visto, presuppone che l'utente sia già connesso al sito o servizio reale, il che limita le possibilità dell'hacker. 

L'attacco si basa sul fatto che un sito si fidi delle operazioni compiute da parte di un utente già autenticato, utilizzando i cookies di sessione per l'autenticazione, senza verificare di volta in volta che sia effettivamente l'utente a svolgere l'operazione.

Esistono diversi metodi per mitigare questa vulnerabilità. Vediamone alcuni.

- E' possibile aggiungere ad ogni richiesta HTTP un token unico di sessione, chiamato di CSRF Token, che il server utilizzerà per autenticare l'utente ad ogni richiesta. In questo modo l'hacker non conoscendo il token non può compiere l'attacco;

- E' possibile impostare un particolare attributo dei cookies, chiamato SameSite attribute. Questo attributo può assume due valori, "Strict" e "Lax". Con l'attributo "strict" il browser non includerà i cookie nelle richieste provenienti da altri siti.  

- Si può utilizzare il "nonce" (number used once), cioè un valore casuale e univoco, generato dal server per un'operazione specifica e utilizzato solo una volta. Quando l'utente effettua una richiesta include il "nonce" ricevuto, il server lo verifica per confermare l'autenticità della richiesta stessa, se il valore nonce è assente, non valido o già stato utilizzato in precedenza, il server rifiuterà la richiesta e potrebbe invalidare la sessione.

Naturalmente l'utente generico medio non può verificare di volta in volta l'applicazione di uno dei meccanismi di mitigazione, ne andarsi a leggere l'header del cookie, queste sono attività che devono essere svolte in modo automatico da appositi strumenti di sicurezza come per esempio i Web Application Firewalls che attraverso la costruzione di apposite regole in fase di configurazione si occupano di questo aspetto di sicurezza.

Ultima raccomandazione, se state progettando un software e volete che resista a attacchi CSRF non vi affidate ad un solo metodo per mitigare il rischio, usate almeno due tecniche diverse in quanto alcuni attacchi sono capaci di bypassare le comuni tecniche di mitigazione viste sopra.

Per concludere, se vi ho incuriosito, date un'occhiata al sito di OWASP. Vi potrete trovare nel dettaglio e estensivamente una chiara descrizione di come funziona l'attacco, di come testare un sito o servizio web per evitare questo tipo di attacco, delle modalità di revisione del codice e delle possibili misure di prevenzione.

Alessandro Rugolo

 

Per approfondire:

- https://learn.snyk.io/lesson/csrf-attack/

- https://owasp.org/www-community/attacks/csrf

- https://www.synopsys.com/glossary/what-is-csrf.html

- https://my.f5.com/manage/s/article/K80291425

- https://www.quora.com/What-is-a-CSRF-What-is-it-used-for-How-does-one-go-about-finding-and-exploiting-these-vulnerabilities-How-can-one-prevent-them-in-their-code

- https://portswigger.net/daily-swig/chromium-bug-allowed-samesite-cookie-bypass-on-android-devices


venerdì 22 marzo 2024

Quali competenze di programmazione occorrono per lavorare nella AI e cyber?


 

E' una domanda che non ha una risposta semplice.


In effetti unire i due mondi, AI e Cyber, complica notevolmente le cose.

Ma cerchiamo di dare comunque qualche indicazione per quei giovani che ancora sono in tempo per scegliere una professione emergente.

Iniziamo con cercare risposta ad alcune domande che ci guideranno lungo il percorso formativo. Ecco gli argomenti che, seppur brevemente, tratteremo in questo articolo:

Perchè la programmazione?

E' spesso indispensabile studiare uno o più linguaggi di programmazione, ciò è particolarmente vero se se si vuole lavorare nel campo dell'informatica o delle nuove tecnologie.

Ogni linguaggio di programmazione ha le sue peculiarità e le sue aree di forza. Imparare più linguaggi di programmazione ti rende più adattabile e in grado di affrontare una varietà di compiti e problemi.

Alcuni linguaggi sono più adatti per determinati compiti o settori. Ad esempio, Python è spesso utilizzato nell'analisi dei dati e nell'intelligenza artificiale, mentre JavaScript è comunemente usato nello sviluppo web. Imparare più linguaggi ti consente di lavorare con successo in diversi domini di applicazione.

Imparare più linguaggi ti permette di approfondire la comprensione di concetti quali le variabili, i cicli, le funzioni, l'orientamento agli oggetti, inoltre può essere una sfida stimolante e gratificante. Espandere il tuo repertorio linguistico nel campo della programmazione dà la possibilità di continuare a crescere e migliorare come programmatore. Se poi ci pensiamo un attimo, consideriamo i benefici dell'apprendimento di nuove lingue e paragoniamoli a quelli della programmazione. Si dice che imparare nuove lingue tenga il cervello attivo e favorisca il suo ringiovanimento. L'apprendimento di nuovi linguaggi di programmazione può avere benefici simili sulla salute mentale e cognitiva.

Infine, ma non meno importante, le opportunità di lavoro nel campo dell'informatica spesso richiedono la conoscenza di più linguaggi di programmazione. Essere competenti in più linguaggi può aumentare le possibilità di trovare lavoro e ti permette di scegliere tra un più ampio ventaglio di opportunità.



Quali linguaggi studiare?

Python: È uno dei linguaggi più popolari nel campo dell'IA grazie alla sua semplicità, flessibilità e alla vasta gamma di librerie specializzate come TensorFlow, PyTorch e scikit-learn. Python è un linguaggio di programmazione ad alto livello, interpretato e multi-paradigma. È noto per la sua sintassi chiara e leggibile, che lo rende molto adatto sia ai principianti che agli sviluppatori esperti. Creato da Guido van Rossum e rilasciato per la prima volta nel 1991, Python ha guadagnato una notevole popolarità nel corso degli anni grazie alla sua semplicità, versatilità e alla vasta gamma di librerie e framework disponibili.


R: È ampiamente utilizzato nell'analisi statistica e nell'apprendimento automatico, con una forte comunità di sviluppatori che supporta librerie come caret e e1071.


Java: È utilizzato per lo sviluppo di applicazioni enterprise e ha una presenza significativa nei sistemi di sicurezza informatica, specialmente per lo sviluppo di software robusti e sicuri.


C++: È ampiamente utilizzato nel campo della sicurezza informatica per lo sviluppo di software ad alte prestazioni e applicazioni che richiedono un controllo preciso sulla memoria e sulle risorse del sistema.


JavaScript: È cruciale per lo sviluppo di applicazioni web e mobile, e il suo utilizzo nell'IA è in crescita grazie alle librerie come TensorFlow.js per l'esecuzione di modelli di machine learning direttamente nel browser.


Scala: È un linguaggio funzionale che esegue sulla JVM (Java Virtual Machine) ed è utilizzato per lo sviluppo di sistemi di elaborazione distribuita e scalabili, che possono essere importanti nell'analisi dei dati e nell'IA.


Go: È apprezzato per le sue prestazioni, la semplicità di sviluppo e la concorrenza incorporata. Viene utilizzato in progetti di sicurezza informatica, come lo sviluppo di strumenti per il monitoraggio e l'analisi dei dati.


Lisp: È un linguaggio di programmazione funzionale storico che ha ancora una certa rilevanza nell'IA, specialmente in settori come l'elaborazione del linguaggio naturale e la ricerca simbolica.


SQL: Anche se non è un linguaggio di programmazione nel senso tradizionale, è fondamentale per l'estrazione e la manipolazione dei dati, che sono essenziali sia per l'IA che per la sicurezza informatica.


Swift: È il linguaggio di programmazione principale per lo sviluppo di app iOS e macOS, e il suo utilizzo nell'IA sta crescendo grazie alla disponibilità di librerie e framework come Core ML.

Naturalmente è difficile immaginare di studiare tutti questi linguaggi assieme, ma se avete già chiaro cosa volete fare, potete considerare anche delle alternative a Python.

Perchè Python?


Python è un linguaggio interpretato, cioè il codice sorgente viene eseguito direttamente da un interprete senza la necessità di essere compilato in un linguaggio a basso livello. Questo lo rende molto flessibile e portabile su diverse piattaforme. È un linguaggio estremamente ricco e potente che può essere utilizzato in una vasta gamma di applicazioni, dall'automazione di compiti semplici all'implementazione di complessi algoritmi di intelligenza artificiale.


Per un neofita, Python è spesso considerato il linguaggio più semplice da imparare e utilizzare, in primo luogo perché possiede una sintassi chiara e leggibile. L'indentazione significativa aiuta a mantenere il codice ben organizzato e facilmente comprensibile. Inoltre esiste un'ampia documentazione e risorse online per imparare Python, rendendo più facile per i principianti ottenere supporto e risolvere i propri problemi di programmazione.

Python ha una comunità di sviluppatori molto attiva e accogliente, pronta ad aiutare i principianti e condividere conoscenze ed esperienze.Python per le sue caratteristiche è spesso raccomandato come il primo linguaggio di programmazione per i principianti che vogliono imparare a programmare.

Come studiare Python?

Si inizia, come per tutte le cose nuove, con il comprendere i concetti fondamentali, come le variabili, i tipi di dati, gli operatori, le strutture di controllo (if, for, while...), le funzioni e le liste. Una volta familiarizzato con questi concetti sarà relativamente semplice fare il salto di qualità che conduce verso la comprensione e l'impiego degli oggetti e delle librerie.

La pratica è essenziale come e forse più dello studio. Scrivere codice regolarmente, provare a risolvere esercizi e progetti pratici presi dalla vita di tutti i giorni, magari anche dalla scuola, consente di applicare ciò si è imparato nella teoria.

Esistono molti tutorial, corsi e risorse online, disponibili gratuitamente, per imparare Python.Sfruttale!

Studia il codice scritto da altri programmatori e prova a capire cosa hanno fatto.Prova a modificare delle parti di codice e cerca di capire se è comprensibile e come migliorare la conprensibilità.


Unisciti a forum online, gruppi di studio o comunità di sviluppatori locali. Interagire con altri programmatori ti offre l'opportunità di condividere conoscenze, porre domande e ricevere feedback sui tuoi progetti.

La documentazione ufficiale di Python è una risorsa preziosa che fornisce informazioni dettagliate su tutte le funzionalità del linguaggio. Prenditi del tempo per leggerla e tieni a portata i link utili per consultarla quando necessario.

Soprattutto, occorre essere costanti e pazienti e non avere paura di fare errori. Sbagliando si impara! 


Alessandro Rugolo