Acquisizione forense: principi, metodologie e strumenti per la gestione degli incidenti informatici

Nel contesto della sicurezza nazionale, l’acquisizione forense delle evidenze digitali riveste un ruolo cruciale nella gestione degli incidenti informatici. Un CSIRT/SOC (Computer Security Incident Response Team/Security Operations Center) deve assicurare che ogni fase – dalla profilazione del sistema e triage iniziale, fino alla copia forense dei dati – sia condotta in modo rigoroso e conforme agli standard. Tali pratiche garantiscono sia la continuità operativa degli enti coinvolti che la valorizzazione probatoria delle informazioni raccolte, permettendo eventuali azioni legali. In questo articolo esamineremo le principali metodologie di acquisizione forense, distinguendo tra scenari live e post-mortem, le tecniche di copia bitstream di dischi e dump di RAM, gli artefatti tipici dei sistemi Windows e Linux, nonché gli strumenti hardware/software disponibili. Faremo riferimento ai principali standard internazionali (ad es. ISO/IEC 27037, NIST SP 800-86, RFC 3227) e con esempi concreti in contesto italiano.

La fase di triage forense consiste nel valutare rapidamente uno scenario compromesso e dare priorità alle evidenze digitali in base alla loro rilevanza e urgenza. In pratica, significa eseguire una profilazione del sistema coinvolto nell’incidente: identificare il tipo di host (es. server, workstation), il sistema operativo e versione, i servizi attivi, gli utenti connessi e altri elementi chiave, ancor prima di procedere all’acquisizione completa. Lo scopo del triage è individuare subito i dati più critici – ad esempio processi sospetti in esecuzione, connessioni di rete attive verso IP anomali, file di log che mostrano segni di manomissione – che richiedono azione immediata o conservazione urgente. Questa rapida valutazione permette al responsabile di decidere i passi successivi: ad esempio, se isolare il sistema dalla rete per contenere una minaccia in corso, oppure se mantenere la macchina accesa per acquisire dati volatili (RAM, processi, ecc.) prima che vadano persi.

Durante il triage, è fondamentale rispettare il principio dell’ordine di volatilità indicato dall’RFC 3227: occorre procedere raccogliendo prima i dati più volatili e soggetti a cambiamento, per poi passare a quelli meno volatili. Ciò significa, ad esempio, che su un sistema attivo si dovrebbero salvare immediatamente informazioni come il contenuto della memoria RAM, la tabella dei processi e le connessioni di rete, prima di acquisire i dati persistenti su disco. Allo stesso tempo, bisogna evitare manovre che possano alterare o distruggere le evidenze: non spegnere il sistema prematuramente (l’attaccante potrebbe aver impostato script di wipe all’arresto), e utilizzare strumenti “puliti” (da supporti esterni) invece di quelli presenti sul sistema compromesso, che potrebbero essere stati modificati dall’attaccante. Il responsabile forense deve istruire i primi soccorritori digitali (first responder) a seguire procedure codificate – spesso definite in playbook di incidente – per effettuare un triage metodico. Ad esempio, può essere prevista una checklist: identificare e fotografare la schermata attiva, annotare o esportare rapidamente la lista dei processi e delle connessioni (usando tool come netstat o PowerShell in modalità forense), verificare la presenza di dispositivi USB collegati, e controllare il clock di sistema (per future correlazioni temporali). Queste attività di profilazione iniziale forniscono un quadro dello stato del sistema utile per orientare l’indagine e decidere quali evidenze raccogliere con priorità. In sintesi, system profiling e triage rappresentano la prima linea di azione di un responsabile CSIRT nella fase di Preparation/Identification di un incidente, gettando le basi per un’acquisizione forense mirata ed efficace.

Una volta completato il triage, si passa al processo di acquisizione delle evidenze digitali vero e proprio, che può avvenire in due modalità principali: live (a sistema acceso) o post-mortem (a sistema spento). La scelta dipende dalla situazione: in molti casi di risposta a incidenti, è necessario operare live forensics per catturare dati volatili critici; altre volte, soprattutto in scenari di analisi forense tradizionale (es. sequestro di un computer in un’indagine giudiziaria), si opta per spegnere il sistema e lavorare su copie a freddo per minimizzare modifiche.

Acquisizione live

In questa modalità si raccolgono evidenze a sistema funzionante. I vantaggi sono evidenti: si possono preservare informazioni che altrimenti andrebbero perse con lo spegnimento – ad esempio il contenuto della RAM, le chiavi di cifratura in uso, processi e connessioni attive, ecc. Tuttavia, l’acquisizione live comporta inevitabilmente qualche alterazione dello stato del sistema (ogni comando eseguito può modificare dati, come i timestamp di ultimo accesso) e va quindi condotta con strumenti e metodologie che riducano al minimo tale impatto. Best practice in questo ambito (formalizzate in ISO 27037 e RFC 3227) includono: usare tool forensi dedicati eseguendoli da supporti in sola lettura (per non introdurre nuovi file sul disco target) e documentare ogni operazione compiuta. Un esempio tipico di acquisizione live è il dump della memoria RAM (vedi sezione dedicata) oppure l’estrazione di informazioni volatili tramite script di risposta all’incidente. In situazioni dove si sospetta la presenza di malware avanzati o tecniche anti-forensi (come il timestomping o la cancellazione dei log di evento), l’analisi live può rivelare indizi (processi anomali in esecuzione, moduli kernel caricati in memoria) che un’analisi post-mortem potrebbe non evidenziare. È importante anche valutare i rischi: ad esempio, scollegare la rete di una macchina compromessa può essere opportuno per isolarla, ma va fatto in modo controllato (un malware potrebbe monitorare la connettività e reagire cancellando tracce se “perde” la rete ). Il responsabile deve quindi decidere, caso per caso, quali step eseguire live e in che sequenza, bilanciando la conservazione massima delle prove con la stabilizzazione dell’incidente (es. evitare che l’attacco prosegua).

Acquisizione post-mortem

Consiste nell’acquisire le evidenze a sistema spento, tipicamente tramite la rimozione dei supporti di memoria (hard disk, SSD) e la successiva copia forense bitstream in laboratorio. Questo approccio ha il vantaggio di assicurare che il supporto originale non venga modificato ulteriormente dal momento del sequestro in poi. Nel momento in cui si spegne un computer, però, si perde tutto il contenuto volatile: memoria RAM, stato dei processi, informazioni non salvate su disco, ecc. Pertanto, la decisione di spegnere dovrebbe essere ponderata: ad esempio, se si ritiene che le informazioni critiche risiedano su disco (non volatile) e non vi sia particolare interesse per lo stato attuale della RAM, può essere preferibile rimuovere l’alimentazione immediatamente per congelare la situazione. Al contrario, se si sospetta che informazioni vitali (come chiavi di cifratura, malware in RAM o volumi cifrati aperti) siano presenti in memoria, è fondamentale lasciare il sistema acceso finché non si sia effettuato un dump della memoria e di eventuali dati volatili. L’ISO/IEC 27037 fornisce linee guida proprio per decidere queste priorità: “se dati volatili di rilievo sono presenti, raccoglierli prima di rimuovere l’alimentazione; se invece il focus è sui dati non volatili su disco, si può procedere allo spegnimento in sicurezza”. In modalità post-mortem, l’operatore può impiegare tecniche come il “pull the plug” (scollegare brutalmente l’alimentazione anziché seguire la normale procedura di shutdown, per evitare che eventuali routine di spegnimento dell’attaccante distruggano dati). Naturalmente ciò potrebbe generare qualche inconsistenza nei file (es. journal non “puliti”), ma si preferisce questo rischio piuttosto che perdere prove volatili preziose. Una volta spento e messo in sicurezza il sistema, si passa all’imaging forense dei supporti (illustrato nella sezione successiva). L’acquisizione post-mortem è tipica nelle operazioni di polizia giudiziaria (sequestri) e nelle analisi che non richiedono intervento immediato sul campo. Un responsabile CSIRT deve saper indicare quando è appropriato seguire l’una o l’altra modalità, spesso anche combinandole (es.: acquisizione ibrida, dove prima si esegue un dump di RAM live e poi si spegne per copiare il disco). In ogni caso, che l’acquisizione sia live o a freddo, vanno seguiti i protocolli di documentazione e catena di custodia per garantire integrità e autenticità delle evidenze raccolte.

La copia forense bitstream di un supporto di memoria di massa (dischi fissi, SSD, memorie esterne) è un processo centrale nell’informatica forense. A differenza di una normale copia file-per-file, l’imaging bitstream duplica bit a bit l’intero contenuto del supporto – includendo settori non allocati, spazio slack, aree nascoste – in modo da ottenere un clone esatto dell’originale               . Questo è fondamentale perché file cancellati o metadata residuali, non visibili al file system attivo, possono contenere informazioni cruciali in un’indagine.

Procedura di imaging: il processo standard prevede di collegare il supporto originale a una workstation forense (o a un dispositivo duplicatore) in modalità read-only e creare un file immagine o una copia clonata su un supporto di destinazione pulito. Una misura imprescindibile è l’uso di un write-blocker, un dispositivo hardware (o software) che si interpone tra il drive di origine e il sistema di acquisizione, e impedisce qualsiasi comando di scrittura verso il dispositivo sorgente. In questo modo, si può leggere ogni settore del disco senza rischiare modifiche accidentali (ad esempio aggiornamenti di timestamp di accesso, incrementi di contatori SMART, ecc.). I write-blocker hardware sono tipicamente connessi via USB/SATA o tramite dock, e devono essere verificati prima dell’uso; molti modelli forniscono indicatori che confermano lo stato di sola lettura. È importante che il personale ricontrolli che il blocco in scrittura sia attivo per tutti i dispositivi connessi e che i blocker siano periodicamente testati (come raccomandato anche dai laboratori NIST). In alternativa o in aggiunta, su sistemi nix si può montare il supporto in modo da non scrivere journal (opzione ro,noload* per NTFS, ad es.), ma il dispositivo hardware è preferibile perché più affidabile.

Durante l’imaging, si genera di solito un hash crittografico (tipicamente MD5 e/o SHA-1/SHA-256) sia del contenuto originale che della copia, per poter verificare in ogni momento la corrispondenza (integrità) tra i due. Un responsabile deve esigere che al termine dell’acquisizione questi hash combacino e che vengano registrati nei verbali. Come sottolineato da NIST, se si prevede un possibile uso probatorio, è opportuno conservare l’originale intatto come evidenza (ad esempio sigillando il disco originale) ed effettuare tutte le analisi successive sulla copia. L’ISO 27037 e le best practice internazionali insistono molto su questo punto: l’originale diventa evidence master conservato a fini legali, mentre la copia forense (opportunamente verificata) è quella su cui gli analisti lavorano, eventualmente potendone fare ulteriori copie di lavoro. Ogni passo eseguito deve essere documentato dettagliatamente: oltre ai comandi o software utilizzati per l’imaging, vanno annotati ad esempio il modello e seriale del disco originale, la capacità, il nome e versione dello strumento impiegato (software o duplicatore hardware), l’ora di inizio e fine copia, il nome del tecnico operatore e qualsiasi anomalia riscontrata. Queste informazioni supportano la catena di custodia e servono a dimostrare che la procedura è stata eseguita correttamente e senza contaminare le prove.

Formati di output: l’acquisizione bitstream può produrre sia copie fisiche (disk-to-disk, clonazione diretta su un altro drive) che immagini logiche in un file (disk-to-image). La scelta dipende dalle esigenze e dalle risorse: una copia disk-to-disk permette, ad esempio, di montare immediatamente il clone su un’altra macchina per un’analisi rapida, ma richiede un secondo dispositivo di capacità uguale o maggiore. La copia in un file immagine (spesso con estensione .dd se raw o .E01 se  compressa con formato EnCase) è più flessibile: il file può essere trasferito, copiato e montato tramite software appositi; di contro, per accedervi occorre utilizzare applicativi forensi o montarlo in un ambiente che supporti tale formato. Molti strumenti consentono anche di comprimere al volo l’immagine, salvando spazio, e di segmentarla in più file (utile per gestire file system che non supportano file di grandi dimensioni). In contesti operativi, il responsabile deve definire uno schema di nomenclatura per le immagini e un sistema di storage sicuro: ad esempio, archiviare le immagini su NAS forense isolato, con controlli di integrità periodici (ricalcolo hash) e accesso ristretto.

In conclusione, l’acquisizione bitstream è un processo dispendioso in termini di tempo e risorse (copiare centinaia di GB può richiedere ore), ma è indispensabile per garantire un’analisi completa e la validità delle prove in tribunale. Organizzazioni ben preparate adottano linee guida interne per quando e come eseguire imaging completo (ad esempio, può non essere realistico fermare immediatamente un server critico per copiarlo; vanno stabiliti criteri di impatto). Il responsabile CSIRT bilancia quindi anche l’esigenza di continuità operativa con quella probatoria, pianificando acquisizioni a freddo in orari e modi che riducano il danno, ma senza compromettere la raccolta delle prove necessarie.

Le informazioni contenute nella memoria volatile (RAM) di un sistema spesso non hanno equivalenti sul disco e possono rivelare dettagli cruciali di un attacco informatico. La RAM ospita infatti lo stato vivo del sistema: processi in esecuzione, moduli di kernel e driver caricati, connessioni di rete aperte, file aperti (che magari non sono mai stati salvati su disco), chiavi di cifratura in uso, password in chiaro temporaneamente in memoria, e molto altro. Tutto questo viene perso definitivamente non appena il sistema viene spento, data la natura volatile della RAM. Per tale ragione, acquisire un dump di memoria è una fase fondamentale nella risposta agli incidenti live: consente di “congelare” lo stato runtime del sistema al momento dell’incidente per analizzarlo successivamente in laboratorio.

Dal punto di vista pratico, un dump di RAM si ottiene tramite appositi strumenti che copiano byte per byte tutto il  contenuto della memoria in un file (spesso chiamato memory.dmp con estensione .raw/.bin). Su sistemi Windows, esistono utilità consolidate come Magnet RAM Capture (fornito da Magnet Forensics) o Belkasoft Live RAM Capturer, nonché tool open-source come WinPmem (facente parte del progetto Rekall) e DumpIt. Questi programmi, tipicamente eseguiti dal tecnico sul sistema target (idealmente da una chiavetta USB, per ridurre scritture su disco), producono un file immagine della RAM che può poi essere scaricato per l’analisi. Su Linux, l’operazione richiede spesso il caricamento di un modulo kernel dedicato come LiME (Linux Memory Extractor) o l’utilizzo di interfacce /dev/mem (se abilitate) e utility dd. L’immagine di memoria così ottenuta viene poi analizzata con framework di memory forensics quali Volatility o Rekall, che permettono di estrarre dalle strutture binarie informazioni intelligibili: ad esempio la lista dei processi e dei relativi segmenti di memoria, le connessioni di rete attive, le DLL/caricate nei processi, eventuale codice iniettato, e persino di ricostruire contenuti testuali (come chat, email, cronologia web) presenti in memoria. Un’analisi approfondita della RAM può rivelare malware fileless (cioè che risiedono solo in memoria), evidenze di attacchi “pass the hash” o credenziali rubate in cleartext, e tante altre informazioni essenziali per capire come è avvenuta la compromissione e cosa sta facendo l’attaccante.

Vale la pena evidenziare due aspetti: temporalità e integrità. La RAM è estremamente dinamica: anche in pochi secondi lo stato può cambiare (processi che terminano, nuovi che si avviano, allocazioni che si spostano). Pertanto, l’operatore deve eseguire il dump il prima possibile durante il triage, minimizzando ritardi. Inoltre, va considerato che il processo di dumping stesso consuma un po’ di RAM e altera alcuni contenuti (ad esempio, parte della RAM viene occupata dal buffer di copia); questo è inevitabile, ma accettabile se si utilizzano strumenti progettati per minimizzare l’impatto. Si documenta in ogni caso quale tool è stato usato e in che orario. Sul fronte integrità, benché non sia possibile calcolare un hash prima (dato che la RAM è mutevole), si calcola almeno l’hash del file di dump generato e lo si conserva per verifiche future, trattandolo poi con la stessa cura di un’immagine disco.

Un altro motivo critico per effettuare il dump di RAM è la presenza di chiavi di cifratura o altri segreti volatili. Se un sistema impiega dischi cifrati (es. BitLocker su Windows, LUKS su Linux) o connessioni VPN cifrate attive, spesso la chiave di decrittazione risiede in RAM mentre il volume è montato o la sessione attiva. Estrarre la RAM può consentire di recuperare tali chiavi – tramite specifici plugin di Volatility – e quindi di accedere a dati altrimenti indecifrabili. ISO 27037 infatti avverte di considerare l’acquisizione di dati volatili prima dello shutdown proprio perché “chiavi di cifratura e altri dati cruciali potrebbero risiedere in memoria attiva”. Un caso concreto è quello dei ransomware: alcuni memorizzano la chiave di cifratura in RAM; se si interviene rapidamente e si cattura la memoria, si potrebbe estrarre la key e decriptare i file senza pagare riscatti.

In sintesi, l’acquisizione della memoria volatile è un tassello irrinunciabile nelle indagini su incidenti moderni. Un responsabile SOC deve prevedere nel piano di risposta la raccolta di dump di RAM per ogni server o endpoint compromesso (quando fattibile in sicurezza) e garantire che il personale sia addestrato all’uso degli strumenti di memory dump. Solamente catturando questa dimensione “effimera” dell’attacco si ottiene una visione completa dell’accaduto, che combini stato dinamico e dati statici.

I sistemi Windows conservano una vasta gamma di artefatti forensi – file di log, voci di registro, cache di sistema – che possono fornire preziose evidenze sulle attività avvenute prima, durante e dopo un incidente informatico. Un responsabile forense deve conoscere questi artefatti e includerne la raccolta nel processo di acquisizione. Ecco i principali artefatti Windows da considerare e il loro significato:

  • Event Logs (registri eventi): Windows registra eventi di sistema, sicurezza e applicazione nei file di log (.evtx) situati in C:\Windows\System32\winevt\Logs\. Questi log, consultabili tramite Event Viewer, sono fondamentali per ricostruire la sequenza di eventi di un sistema. Ad esempio, il Security Log documenta tentativi di accesso (Event ID 4625 per login falliti, 4624 per login riusciti) e cambi di privilegi, permettendo di identificare eventuali accessi non autorizzati o escalation di privilegi avvenute. Il log System registra informazioni su avvii/arresti di sistema, crash, o errori di driver; il log Application contiene eventi dalle applicazioni (es. errori applicativi, servizi custom). Durante un’incidente, copiare e mettere in sicurezza questi file di log è prioritario, in quanto potrebbero venire cancellati dall’attaccante per nascondere le tracce. Un esempio concreto: grazie ai Security Log si può scoprire l’ora esatta in cui un account amministrativo sospetto ha effettuato login, o se vi sono stati tentativi massivi di password guessing.
  • Registry (registro di configurazione): Il registro di Windows è una banca dati centralizzata che memorizza configurazioni di sistema, applicazioni, informazioni sugli utenti, dispositivi hardware e molto altro. È suddiviso in hive principali (SAM, SYSTEM, SOFTWARE, SECURITY, oltre ai NTUSER.DAT per ogni utente) che risiedono sul disco. Dal punto di vista forense, il registry è una miniera di informazioni: ad esempio, consente di identificare periferiche USB collegate in passato (chiavi di registro USBSTOR che elencano device ID, date e serial number dei dispositivi – utile per investigare esfiltrazioni tramite chiavette); permette di vedere programmi impostati per l’esecuzione automatica (Run keys) – spesso usati da malware per persistere; contiene gli MRU (Most Recently Used), liste di file o percorsi recentemente aperti da ciascun utente, che aiutano a capire quali documenti sono stati acceduti; tracce di installazione software, configurazioni di rete, e così via. Due artefatti peculiari meritano menzione: ShimCache e AmCache. Lo ShimCache (Application Compatibility Cache) è una cache mantenuta da Windows per compatibilità applicativa, che registra ogni eseguibile avviato sul sistema con timestamp (talora anche se l’eseguibile non esiste più); fornisce quindi una storia delle esecuzioni utile a rintracciare malware eseguiti e poi cancellati. L’AmCache è un file (Amcache.hve) introdotto dalle versioni moderne di Windows, che conserva dettagli sugli eseguibili lanciati, come nome, path, hash e primo timestamp di esecuzione. Analizzando AmCache si può determinare ad esempio la prima volta in cui un malware è stato eseguito, anche se non ci sono log di altro tipo. Durante l’acquisizione forense, è buona pratica estrarre copie dei file di registro ( C:\Windows\System32\Config\* e C:\Users\{utente}\NTUSER.DAT per ogni profilo) per analizzarli con strumenti forensi (Registry viewers, RegRipper, etc.).
  • Prefetch files: Windows utilizza la funzionalità Prefetch per velocizzare il caricamento dei programmi usati di frequente. Ogni volta che un eseguibile viene lanciato, il sistema crea/ aggiorna un file prefetch (estensione .pf) in C:\Windows\Prefetch\ contenente il nome del programma, un hash del percorso e riferimenti ai file caricati. Dal punto di vista forense, i prefetch file tracciano l’esecuzione dei programmi e ne registrano il timestamp di ultimo avvio . Ciò è prezioso per stabilire una timeline di esecuzione: ad esempio, se un malware è stato eseguito alle 3:00 AM e poi cancellato, rimarrà comunque un file .pf (es. MALWARE.EXE-3AD3B2.pf) con ultimo esecuzione a quell’ora. I prefetch indicano anche il numero di volte di esecuzione e quali librerie o file ha caricato il processo, dando indizi su cosa abbia fatto. È importante notare che il Prefetch è abilitato di default su desktop Windows, ma su Windows Server potrebbe essere disabilitato per impostazione predefinita. Nelle analisi di incidenti su client, i prefetch sono spesso tra le prime cose da controllare per vedere quali programmi anomali sono stati eseguiti di recente. Vanno quindi raccolti durante l’acquisizione (copiando l’intera cartella Prefetch). Un caso d’uso tipico: rilevare un tool di hacking (es. mimikatz.exe) dal prefetch, anche se l’eseguibile non è più presente – evidenza che qualcuno lo ha lanciato sul sistema.
  • LNK (Link) files: i file di collegamento .lnk sono scorciatoie Windows che si creano quando un utente accede a file o cartelle (ad es. i collegamenti nei “Recent Items”). Ogni LNK conserva metadati dettagliati sull’elemento target: percorso completo del file/cartella, dispositivo di origine (incluso il numero di serie di volume – utile per identificare unità USB), timestamp dell’ultimo accesso, dimensione del file target, e a volte coordinate della finestra o icona. In un’indagine, analizzare i LNK consente di scoprire attività utente come aperture di documenti o esecuzione di strumenti, anche se tali file non esistono più. Ad esempio, se un dipendente ha aperto un file riservato e copiato su USB, potrebbe restare un link in %APPDATA%\Microsoft\Windows\Recent\ che svela nome e percorso di quel file, nonché identifica la pennetta USB usata (dal seriale riportato nel LNK). I LNK possono anche indicare programmi lanciati da percorsi insoliti (es. C:\Temp\hacker_tool.exe), dando tracce di esecuzioni sospette. È quindi prassi acquisire la cartella Recent di ciascun profilo utente e altri percorsi dove possono annidarsi LNK (es. collegamenti sul desktop, nel menu Start, etc.).
  • Altri artefatti rilevanti: ce ne sono numerosi; tra i principali citiamo: i Jump Lists (liste dei file aperti di recente per applicazioni “pinned” sulla taskbar, memorizzate in %APPDATA\Microsoft\Windows\Recent\AutomaticDestinations\), utili  per vedere cronologia di utilizzo di specifici programmi; i file di paging e ibernazione (C:\pagefile.sys e C:\hiberfil.sys), che contengono porzioni di RAM e stato del sistema scritti su disco – analizzandoli si possono estrarre password o frammenti di documenti presenti in memoria; i dump di crash (MEMORY.DMP generati da Blue Screen) che talvolta sopravvivono e contengono un’istantanea della RAM al momento del crash; il MFT (Master File Table) nei volumi NTFS, che elenca tutti i file con i loro timestamp e può essere  estratto per analisi timeline; i log di sistema quali Firewall di Windows (p.e. pfirewall.log se attivato) e Windows Defender (eventi antimalware) che potrebbero rivelare tentativi di connessione o malware rilevati; infine, i file di configurazione e cache applicative (ad esempio i log di navigazione web, la cache DNS, i file di Outlook PST/OST per le email, etc.) da acquisire se pertinenti al caso.

In fase di risposta a un incidente, il responsabile CSIRT deve stilare un elenco di questi artefatti Windows e assicurarsi che la squadra li raccolga sistematicamente. Spesso si utilizzano strumenti di live response (come KAPE – Kroll Artifact Parser and Extractor, di Eric Zimmerman) che automaticamente collezionano copie di molti di questi artefatti chiave per una rapida analisi. La ricchezza di informazioni fornite dagli artefatti Windows consente, una volta in laboratorio, di ricostruire la linea temporale degli eventi (tramite analisi timeline correlando log, MFT e timestamp vari) e di attribuire azioni ad account utente specifici, distinguendo attività lecite da quelle malevole. Ad esempio, combinando i dati di registro (es. chiave USBSTOR) con i LNK file, si può provare che un certo file è stato copiato su una chiavetta a una certa ora da un determinato utente. Per garantire ciò, la fase di acquisizione deve aver preservato intatti tali artefatti.

Anche in ambienti Linux/Unix esistono artefatti forensi fondamentali per un’analisi post-incident. Sebbene Linux non abbia un Registro unificato come Windows, mantiene moltissime informazioni in file di log testuali e file di configurazione, che se raccolti e analizzati correttamente permettono di ricostruire intrusioni e attività anomale. Ecco alcuni elementi chiave che un responsabile dovrebbe includere nel piano di acquisizione da sistemi Linux compromessi:

  • Log di sistema e di sicurezza: la gran parte delle distribuzioni Linux registra gli eventi in /var/log/. In  particolare, il syslog o log generale di sistema (tipicamente /var/log/syslog su Debian/Ubuntu o /var/log/messages su Red Hat/CentOS) contiene messaggi su una vasta gamma di attività: avvio di servizi, messaggi del kernel, connessioni di rete, errori generici. Esaminare il syslog consente di individuare quando sono stati avviati o fermati servizi (utile per vedere ad esempio se un servizio critico è andato in crash in concomitanza con l’attacco) e messaggi anomali del kernel che potrebbero indicare exploit (es. oops o segfault sospetti). Ancora più importanti spesso sono i log di autenticazione, come /var/log/auth.log (su sistemi Debian-like) o /var/log/secure (Red Hat-like), dove vengono tracciati tutti i tentativi di login, sia locali che remoti, con indicazione di utente, origine e successo/fallimento. In questi file si trovano anche i log di uso del comando sudo (elevazione di privilegi), gli accessi via SSH, eventuali cambi di password, ecc. Durante un’incidente, analizzare auth.log può rivelare ad esempio un attacco brute-force in atto (molti tentativi di login falliti in sequenza) o se un utente in particolare ha ottenuto accesso root via sudo in orari non autorizzati. Altri log utili sono quelli di servizi specifici: ad esempio, log di Apache/Nginx in /var/log/apache2/ o /var/log/nginx/ (per investigare compromissioni di web server), log di database (MySQL, PostgreSQL) se si sospetta un SQL injection, log di firewall/iptables, ecc. Il responsabile deve stilare una lista dei percorsi di log da prelevare in base ai servizi in esecuzione sul sistema bersaglio. È buona pratica includere sempre i log lastlog, wtmp, btmp: sono file binari (tipicamente in /var/log/ che registrano rispettivamente l’ultimo login di ogni utente, la cronologia di tutti i login  (wtmp) e quella dei login falliti (btmp). Questi file, analizzabili con comandi come last e lastb, possono integrare le informazioni di auth.log riguardo gli accessi utente nel tempo.
  • Cronologia dei comandi e configurazioni utente: su Linux, ogni utente shell tipicamente ha un file di history (es. ~/.bash_history per Bash) in cui vengono salvati i comandi digitati in passato. Questa cronologia, se non cancellata dall’attaccante, è un artefatto estremamente prezioso: consente di vedere quali comandi sono stati eseguiti – ad esempio, un aggressore che abbia ottenuto accesso shell potrebbe aver lanciato comandi per creare nuovi utenti, modificare configurazioni o estrarre dati, e spesso tali comandi rimangono nella bash_history. Va notato che la history di solito si salva solo alla chiusura della sessione; se l’attaccante non ha terminato la sessione o ha disabilitato la logging della history, il file potrebbe non contenere tutto. In ogni caso, acquisire i file di history di tutti gli utenti (bash, zsh, etc.) è doveroso. Oltre ai comandi, le configurazioni utente come ~/.ssh/authorized_keys devono essere raccolte: questo file indica eventuali chiavi pubbliche autorizzate per login SSH senza password – spesso gli attaccanti ne  aggiungono una per garantirsi l’accesso persistente. Anche i file ~/.ssh/known_hosts possono dare indizi su da quali macchine ci si è collegati. Il filesystem home degli utenti, in generale, può contenere script di persistenza (es. aggiunte in ~/.bashrc o ~/.profile che eseguono malware all’avvio della shell). Durante l’acquisizione forense, se non si effettua un’immagine completa del disco, almeno le home directory rilevanti dovrebbero essere copiate integralmente per preservare questi artefatti.
  • Configurazioni di sistema e job pianificati: un vettore comune di persistenza su Linux è l’uso di cron job maligni. I cron job si trovano in /etc/crontab,
    /etc/cron.hourly/cron.daily/... o nelle crontab per utente (/var/spool/cron/crontabs/). Analizzandoli, si potrebbe scoprire, ad esempio, che è stato inserito un job che esegue periodicamente un certo script (magari per ricollegarsi a una botnet o mantenere l’accesso). Durante l’incidente, si estraggono quindi tutte le configurazioni di cron. Un altro punto chiave sono le configurazioni di SSH in /etc/ssh/sshd_config : se un attaccante ha abilitato opzioni deboli o cambiato la porta del servizio potrebbe aver modificato questo file. Inoltre, i log di SSH (che in realtà confluiscono in auth.log) dovrebbero essere già considerati, ma è bene filtrarli per evidenziare, ad esempio, da quali IP sono avvenuti accessi SSH riusciti. Anche la configurazione di altri servizi (VPN, servizi cloud, Docker containers in /var/lib/docker/ etc.) può essere rilevante se l’incidente li coinvolge – la regola generale è collezionare tutto ciò che potrebbe aver registrato attività dell’attaccante.
  • Log di pacchetti e sistema: un aspetto peculiare di Linux è la presenza dei package management logs. Su Debian/Ubuntu c’è /var/log/dpkg.log che tiene traccia di ogni installazione/aggiornamento/rimozione di pacchetti, con timestamp. Su RedHat/CentOS analoghi sono i log di yum o dnf. Questi log sono utilissimi per vedere se durante l’intrusione l’attaccante ha installato nuovi software (es. un server web, uno strumento di hacking) oppure se il sistema ha aggiornato qualcosa di critico di recente. Ad esempio, se dpkg.log mostra l’installazione di netcat o nmap, è un red flag di attività sospetta. Altri log degni di nota: /var/log/lastlog (ultimi accessi utenti), /var/log/faillog (errori di login), /var/log/mail.log (attività del server mail, se presente, per vedere possibili esfiltrazioni via email) e i log di eventuali IDS/IPS installati. Se il sistema utilizza systemd, molti log tradizionali potrebbero essere nel journal binario (/var/log/journal/) accessibile con journalctl : in tal caso, è opportuno esportare l’intero journal (usando journalctl --since con un range temporale, oppure copiando i file journal) per l’analisi.

In fase di acquisizione, spesso la via più semplice è eseguire un package di raccolta (ad esempio uno script che copia tutto /var/log e alcune directory chiave di /etc e home utenti). Tuttavia, un responsabile attento specificherà quali sono gli “essential artifacts” Linux da non tralasciare. Magnet Forensics elenca 7 artefatti essenziali: history bash, syslog, auth.log, sudo logs, cron, SSH, package logs tutti punti che abbiamo toccato. Raccogliendo questi, un analista potrà: ricostruire la timeline di un attacco (dall’intrusione iniziale visibile in auth.log, alle azioni compiute visibili nella history e nei log di sistema, fino alla persistenza via cron), attribuire azioni a utenti/ip (log di autenticazione), e scoprire eventuali manomissioni (servizi disabilitati, configurazioni cambiate). Un esempio: tramite auth.log si individua che l’attaccante ha ottenuto accesso con l’utente “webadmin” via SSH; guardando nella bash_history di webadmin si vede che ha eseguito un certo script e aperto una connessione reverse shell; controllando crontab si trova un job aggiunto da webadmin che ogni ora tentava di riconnettersi ad un certo host (persistenza). Inoltre dpkg.log rivela che l’attaccante ha installato un pacchetto socat per facilitare le proxy. Tutto ciò costruisce una narrazione completa dell’incidente. È compito del responsabile assicurare che tali tasselli informativi non vadano perduti: ad esempio, evitando la rotazione o cancellazione dei log (in casi estremi, potrebbe decidere di spegnere subito un server Linux se teme che l’attaccante possa “ripulire” i log tramite rootkit, e acquisire a freddo).

In conclusione, gli artefatti Linux, sebbene sparsi in file diversi, coprono molti aspetti dell’attività di sistema e, se acquisiti integralmente, forniscono un quadro molto dettagliato agli investigatori. La sfida è sapere dove guardare: per questo esistono anche cheat-sheet e liste preparate (ad esempio Seven Linux Artefacts to Collect di SANS) che guidano i primi responder su cosa prendere. Un responsabile dovrebbe prevedere tali linee guida e aggiornarsi continuamente, dato che i percorsi e formati dei log possono variare con le versioni (es. il passaggio a systemd-journald). Garantire la raccolta coerente e completa di questi artefatti in ogni incidente significa accelerare l’analisi forense e migliorare l’efficacia della risposta.

Per eseguire le operazioni sopra descritte, il responsabile deve assicurarsi che il team disponga dei giusti strumenti hardware e software di acquisizione forense, nonché delle competenze per usarli correttamente. Vediamo i principali.

Strumenti hardware

  • Write-blocker: come già menzionato, sono dispositivi (talora in forma di piccoli box USB/SATA o bay da laboratorio) che assicurano l’accesso in sola lettura ai supporti di memoria originali . Sono uno standard de-facto in qualsiasi acquisizione di dischi: marchi noti includono Tableau (ad es. Tableau T8u USB 3.0 Forensic Bridge), Logicube, Digital Intelligence UltraBlock, ecc. Esistono write-blocker per diverse interfacce: SATA/PATA, USB, NVMe, SCSI, ecc. Il loro impiego consente di collegare un hard disk sequestrato alla macchina forense senza rischio di contaminare i dati – condizione essenziale per mantenere l’integrità probatoria. Alcuni modelli hanno funzionalità avanzate come il logging interno delle operazioni o la possibilità di attivare/disattivare il blocco (ma in forense deve restare attivo!). Il NIST CFTT (Computer Forensic Tool Testing) conduce test periodici sui write-blocker per certificarne l’affidabilità; un responsabile può consultare tali risultati per scegliere dispositivi adeguati.
  • Duplicatori e unità di imaging hardware: si tratta di apparecchi dedicati che possono copiare un disco di origine verso uno o più dischi di destinazione senza bisogno di un computer intermedio. Spesso sono dispositivi portatili, alimentati a parte, con schermo integrato, usati sul campo dalle forze dell’ordine. Esempi: Tableau Forensic Duplicator, Logicube Falcon, Atola Insight. Questi strumenti eseguono copie bitstream con verifica hash incorporata e spesso supportano il cloning multi-target (una sorgente verso due copie identiche contemporaneamente). Il vantaggio è la velocità e il fatto che sono costruiti per non alterare l’originale (incorporano essi stessi funzioni di write-block). Inoltre, supportano formati di output multipli (raw, E01, ecc.) e generano report dettagliati. Secondo NIST SP 800-86, i tool hardware di imaging forniscono in genere log di audit trail e funzioni per garantire consistenza e ripetibilità dei risultati. L’uso di duplicatori è frequente nelle acquisizioni di numerosi supporti in poco tempo (es. per copiare velocemente decine di hard disk durante un sequestro contemporaneo).
  • Altri tool hardware: include adattatori e accessori, ad esempio: kit di cavi e adattatori per collegare dischi di laptop, telefoni o dispositivi proprietari; dispositivi per estrarre chip di memoria (nell’ambito mobile forensics, eMMC reader); strumenti per acquisire SIM card o smart card, ecc. Nel contesto specifico di incidenti informatici in enti, alcuni di questi sono meno rilevanti, ma un responsabile dovrebbe avere pronte soluzioni per connettere qualsiasi supporto si trovi (dai vecchi dischi IDE agli ultimi M.2 NVMe). Da citare anche i blocchi di rete (sebbene non hardware in senso stretto): quando si prende un computer acceso come evidenza, un’opzione è inserirlo in una “faraday bag” o scollegarlo da rete e Wi-Fi per isolarlo – questo più per preservare da modifiche remote che per acquisizione, ma fa parte dell’equipaggiamento di scena.

Strumenti software

  • Utility di imaging forense: sul lato software, un arsenale classico comprende tool come dd (il tool Unix per copie bitstream), con varianti forensi quali dcfldd o Guymager (GUI Linux) che aggiungono funzioni di hashing e log. Questi consentono di creare immagini raw bit-a-bit. In ambiente Windows, il popolare FTK Imager permette di acquisire dischi, cartelle o anche singoli file di memoria e di rete, generando immagini in diversi formati (incluso il compresso E01) e calcolando hash in automatico. Software commerciali come EnCase e X-Ways integrano funzioni di imaging: ad esempio EnCase permette di creare direttamente un case con immagini E01 e verifica integrità. Molti di questi software supportano sia l’acquisizione fisica (del disco intero) che logica (ad es. solo una partizione o solo certi file). La scelta dello strumento dipende dallo scenario: dd e affini sono ottimi per ambienti Linux e situazioni scriptabili; FTK Imager è spesso usato su postazioni Windows per copie “ad hoc” (ad esempio di pendrive o di piccoli volumi) grazie alla sua semplicità d’uso grafica. È importante che i tecnici verifichino i checksum generati e alleghino i log prodotti dallo strumento (ad es. FTK Imager produce un file di output con tutti i dettagli dell’operazione). Da ricordare: prima dell’imaging, il disco di destinazione va azzerato o comunque pulito, per evitare contaminazione (principio del “forensically clean media”).
  • Strumenti per acquisizione live e triage: in contesti di incidente, esistono suite pensate per automatizzare la raccolta di evidenze volatili e semi-volatili. Ad esempio, KAPE (Kroll Artifact Parser and Extractor) consente di definire “target” (artefatti noti di Windows) e raccoglierli rapidamente da un sistema live in un output centralizzato. Volatility (framework di memory forensics) ha moduli per dumping live memory su Windows (WinPmem) e ora anche su Linux. Belkasoft Evidence Center e Magnet AXIOM dispongono di agent da deployare su macchine live per estrarre dati chiave (RAM, registro eventi, ecc.) con un minimo impatto. Un altro strumento pratico è CyLR (Cyber Logos Rapid Response) – un leggero collector open source – o lo script Livessp (SANS SIFT). Questi tool aiutano il first responder a non dimenticare elementi importanti durante la concitazione di un incidente. Per il triage rapido di supporti spenti (es. decine di PC da controllare), esistono anche soluzioni come Paladin (distro live basata su Ubuntu con toolkit forense) o CAINE (Computer Aided Investigative Environment), che permettono di bootare la macchina da USB/DVD in un ambiente forense e copiare selettivamente evidenze (con write-block software attivo sul disco originale).
  • Tool per acquisizione della memoria: già evidenziati in parte, meritano un focus. Oltre a DumpIt e Magnet RAM Capture citati, c’è Microsoft LiveKd (Sysinternals) che consente di ottenere dump di memoria di macchine Windows partendo da un kernel debug; LiME su Linux è ormai standard per memdump su Android e server headless; AVML (Acquire Volatile Memory for Linux) è uno strumento più recente di Microsoft per estrarre RAM da VM Linux (utile in cloud). Qualunque strumento si usi, deve essere testato e validato prima in laboratorio. Ad esempio, si può verificare che il dump prodotto sia apribile in Volatility e che corrisponda (nel caso Windows) alla versione OS corretta. Il responsabile dovrebbe predisporre procedure e ambienti di prova per garantire la familiarità del team con tali strumenti: un errore nell’uso (es. dimenticare di eseguire come Administrator un RAM capture tool) potrebbe rendere nullo il dump.

In generale, la dotazione strumentale di un responsabile SOC/CSIRT deve essere allineata alle best practice internazionali. Gli standard NIST elencano dozzine di tool sia commerciali che open source, e raccomandano di avere politiche per l’uso corretto degli strumenti (ad esempio, mantenere una copia di ciascun software usato, con versioni, hash, in modo da poter dimostrare in tribunale esattamente cosa è stato usato e che non contiene backdoor). È inoltre importante monitorare il panorama: strumenti nuovi emergono (ad es. per acquisire dati da cloud, o dall’IoT), e un responsabile deve valutarne l’adozione. Nel kit non dovrebbero mancare anche strumenti di verifica: ad esempio, software per calcolare hash (md5deep, sha256sum), per confrontare file, per estrarre metadata. Anche se non direttamente di “acquisizione”, essi supportano la fase di accertamento dell’integrità dei dati acquisiti.

In conclusione, strumenti hardware e software ben selezionati sono il braccio armato dell’analista forense. La loro efficacia dipende dalla competenza d’uso e da procedure appropriate. Un responsabile deve assicurare formazione continua e magari predisporre ambienti di simulazione dove testare periodicamente l’intera catena (ad esempio, simulare un attacco e far eseguire ai tecnici l’acquisizione con i loro tool, verificando poi che tutto – hash, log, tempi – sia conforme). Questa preparazione fa la differenza tra un’acquisizione improvvisata e una condotta professionalmente, come richiesto in un contesto di sicurezza nazionale.

Nel campo della digital forensics applicata agli incidenti informatici esistono standard e linee guida internazionali che definiscono principi, terminologie e procedure riconosciute. Un candidato al ruolo di responsabile CSIRT deve non solo conoscerli, ma saperli mettere in pratica e farvi aderire le operazioni del team. Di seguito, i riferimenti principali.

  • ISO/IEC 27037:2012 – “Information technology – Security techniques – Guidelines for identification, collection, acquisition and preservation of digital evidence”. È lo standard ISO specifico per la prima fase della gestione delle evidenze digitali. Esso stabilisce le linee guida per l’identificazione delle potenziali fonti di prova, la raccolta (intesa come acquisizione sul campo dei dispositivi/ evidenze), l’acquisizione forense vera e propria (creazione di copie bitstream) e la preservazione delle stesse. Vengono definiti i principi generali (ad es. minimizzare la contaminazione, assicurare la documentazione completa, mantenere la chain of custody) e identificati i ruoli chiave, in particolare il Digital Evidence First Responder (DEFR), ossia l’operatore iniziale che interviene sulla scena. L’ISO 27037 fornisce indicazioni su come valutare la volatilità delle evidenze e come dare priorità in base ad essa (ad esempio, suggerendo di acquisire per prima i dati che “scomparirebbero” se il dispositivo fosse spento). Inoltre, dedica sezioni alla corretta custodia, etichettatura e trasporto delle evidenze digitali, sottolineando l’uso di contenitori appropriati (es. buste antistatiche, custodie sigillabili) e precauzioni contro fattori ambientali che possano danneggiare i dispositivi raccolti. Questo standard – pur non essendo una procedura operativa dettagliata – costituisce un framework di riferimento ampiamente adottato da forze di polizia e team di risposta in tutto il mondo per garantire che fin dai primi istanti le evidenze siano trattate “as ISO compliant as possible”. In Italia, i principi di ISO 27037 sono stati recepiti in molte linee guida interne di Forze dell’Ordine e CERT aziendali.
  • NIST Special Publication 800-86 – “Guide to Integrating Forensic Techniques into Incident Response”. Pubblicata dal National Institute of Standards and Technology (USA), questa guida colma il gap tra digital forensics tradizionale e incident response. Il suo scopo è fornire un processo strutturato per utilizzare tecniche forensi durante la risposta a incidenti di sicurezza . NIST 800-86 descrive un modello di processo forense composto da quattro fasi: Collection (raccolta) – dove si acquisiscono i dati rilevanti dall’ambiente target (dischi, memorie, log di rete, ecc); Examination (esame) – che implica il filtro e l’estrazione preliminare di informazioni dai dati grezzi (ad es. parsing di log, carving di file dalla memoria); Analysis (analisi) – la fase interpretativa in cui gli analisti traggono conclusioni su cosa è successo, correlando le evidenze; Reporting (reportistica) – documentare i risultati e magari fornire raccomandazioni. Questa struttura viene integrata nel ciclo di vita di incident response (Preparation, Detection & Analysis, Containment, Eradication & Recovery, Lessons Learned) delineato da un altro noto documento NIST (SP 800-61). La SP 800-86 fornisce anche practical tips: ad esempio suggerisce fonti di evidenze per vari tipi di incidenti, tecniche di collezione specifiche (come fare imaging, come raccogliere dati di rete), considerazioni legali da tenere presenti (negli USA, aspetti di privacy, Fourth Amendment, ecc.), e importanza di policy e procedure interne per la forensics. In sostanza, questo documento aiuta un responsabile a capire come inserire le attività forensi in un piano di risposta senza improvvisarle. Ad esempio, se c’è un sospetto worm in rete, la guida consiglia di raccogliere non solo i sistemi infetti ma anche traffico di rete, memory dump per analizzare il malware, e di farlo in tempi rapidi dati i dati volatili. Fornisce quindi un utile complemento operativo agli standard ISO.
  • RFC 3227 – “Guidelines for Evidence Collection and Archiving” (IETF). Questo RFC (Request for Comments) del 2002, pur datato, è ancora citatissimo per il concetto di order of volatility che introduce. In poche pagine, fornisce una serie di raccomandazioni pratiche per chi raccoglie evidenze digitali in ambiente live. Oltre a ribadire l’importanza di partire dai dati più volatili (CPU, cache, RAM, processi) per poi passare a quelli meno volatili come dischi e infine backup e media esterni, include una lista di cose da non fare: ad esempio non spegnere il sistema prematuramente, pena perdita di dati importanti; non fidarsi dei tool presenti sul sistema compromesso, ma usare software di raccolta su supporti protetti; non usare comandi che possano alterare massivamente i file (come tool che cambiano tutti gli ultimi accessi); attenzione a “trappole” di rete (disconnecting la rete può attivare meccanismi distruttivi se il malware li prevede). Il documento tratta anche aspetti di privacy (invita a rispettare le policy aziendali e leggi durante la raccolta, minimizzando dati non necessari) e considerazioni legali generali sulla validità delle prove (ad esempio, ricorda che le prove devono essere autentiche, affidabili, complete e ottenute in modo lecito per essere ammissibili). Un altro punto fondamentale è la definizione di Chain of Custody (catena di custodia): RFC 3227 specifica che bisogna poter descrivere chiaramente quando, dove, da chi ogni evidenza è stata scoperta, raccolta, maneggiata, trasferita. Suggerisce di documentare tutti i passaggi, includendo date, nomi e persino numeri di tracking delle spedizioni se un supporto viene trasferito. Questo è pienamente in linea con le prassi forensi e in Italia corrisponde all’obbligo di verbale di sequestro e custodia delle copie forensi. In sintesi, l’RFC 3227 è una lettura obbligata per i first responder e rimane attuale: i suoi consigli vengono spesso citati nei corsi forensi e implementati nei manuali operativi.
  • Altri standard e guide rilevanti: oltre ai sopra citati, possiamo menzionare il NIST SP 800-101 (Guide to Mobile Forensics) per la parte di dispositivi mobili – utile se l’incidente coinvolge smartphone aziendali; lo standard ISO/IEC 27035 per la gestione degli incidenti di sicurezza, che include la fase di Incident Response e accenna alla preservazione delle evidenze come parte del processo di mitigazione; la serie ISO/IEC 27041, 27042, 27043 che forniscono rispettivamente guide sulla gestione delle attività forensi (assicurazione di processo), sull’analisi di evidenze digitali e sugli step per investigazioni digitali – evoluzioni post-27037 che entrano più nel dettaglio delle fasi successive all’acquisizione. In ambito law enforcement europeo, il Manuale di Valencia (European cybercrime training manual) e le linee guida dell’ENFSI (European Network of Forensic Science Institutes) replicano concetti simili per armonizzare le pratiche. Nel Regno Unito, la famosa ACPO Good Practice Guide for Digital Evidence enuncia 4 principi, tra cui il principio 1: non alterare i dati su un dispositivo a meno che non sia inevitabile; principio 2: chiunque acceda a dati digitali deve essere competente e tenere traccia di tutto; principio 3: va tenuta documentazione completa di tutti i processi; principio 4: la persona responsabile dell’indagine ha la responsabilità generale di assicurare conformità legale. Questi rispecchiano molto quanto detto in ISO 27037 e RFC 3227, enfatizzando integrità e documentazione. Infine, val la pena ricordare che in Italia anche la giurisprudenza ha affrontato il tema: la Corte di Cassazione (Sez. VI, sentenza n. 26887/2019) ha delineato un vero e proprio vademecum su come devono essere eseguiti i sequestri di dati informatici, richiamando la necessità di adottare cautele tecniche per garantire che la copia forense sia fedele e che gli originali siano conservati senza alterazioni, pena l’inutilizzabilità degli elementi raccolti. Ciò rafforza l’importanza per un responsabile di seguire standard riconosciuti, così che l’operato del team sia non solo efficace tecnicamente ma anche solido a livello legale.

In sintesi, standard e linee guida forniscono il quadro teorico e pratico entro cui muoversi: adottarli garantisce consistenza delle operazioni forensi e facilita la cooperazione con altri team (nazionali e internazionali) parlando lo stesso “linguaggio” procedurale. Un responsabile informato farà riferimento a questi documenti nella stesura delle procedure interne, nell’addestramento del personale e nella giustificazione delle scelte operative durante un incidente.

Per contestualizzare quanto esposto, consideriamo alcuni scenari nel panorama italiano dove le pratiche di acquisizione forense sono state – o potrebbero essere – determinanti. L’obiettivo è mostrare come un responsabile CSIRT/SOC applica tali conoscenze in situazioni reali, spesso in collaborazione con enti pubblici e forze dell’ordine.

1. Attacco ransomware a un ente pubblico (Regione Lazio, 2021): un caso emblematico è l’attacco ransomware che ha colpito la Regione Lazio nell’agosto 2021, paralizzando il portale vaccinale COVID-19 e numerosi servizi online per giorni. In un evento del genere, il responsabile della risposta (in sinergia con l’ACN/CERT nazionale e i tecnici regionali) ha dovuto immediatamente predisporre un triage su decine di server e sistemi: identificare quali erano criptati e fuori uso, isolare la rete per prevenire ulteriore propagazione, ma anche acquisire copie forensi dei sistemi colpiti per analizzare il malware e verificarne l’impatto. Nel caso Lazio, ad esempio, è stata effettuata l’acquisizione bitstream dei server critici, inclusi i controller di dominio e i server di gestione del portale sanitario, al fine di consegnare tali immagini agli esperti (anche stranieri) per l’analisi del ransomware e la ricerca di eventuali decryptor. Parallelamente, è probabile sia stato eseguito il dump della memoria su almeno uno dei server infetti ancora in esecuzione, per catturare la chiave di cifratura o tracce dell’attaccante in RAM. Questo incidente ha evidenziato l’importanza di avere procedure pronte: nonostante la gravità, il team forense doveva agire tempestivamente senza compromettere i servizi di ripristino. La raccolta dei log di sicurezza Windows e dei domain controller logs è stata fondamentale per ricostruire la dinamica: ad esempio, capire quale account iniziale è stato compromesso (si parlò di credenziali VPN rubate) e quando il malware ha iniziato a diffondersi. L’analisi forense, condotta sulle immagini acquisite, ha permesso di individuare i file di persistence creati dal ransomware e i movimenti laterali effettuati, dati con cui il responsabile ha potuto informare gli amministratori su come bonificare completamente la rete prima di rimetterla in produzione. Inoltre, queste evidenze sono state girate alla Polizia Postale per le indagini penali. Il lesson learned di Lazio 2021 ha probabilmente portato a migliorare ancora le pratiche di incident response italiane, ad esempio enfatizzando la necessità di separare le reti di backup e verificare che le copie di sicurezza non fossero cifrate (in quell’occasione, fortunatamente i backup erano salvi, ma in altri casi non è stato così). Un responsabile, da questo esempio, trae l’indicazione che avere un piano di acquisizione forense predefinito per scenari di ransomware massivi è essenziale: chi fa cosa, quali sistemi si copiano per primi, dove si stoccano le immagini in sicurezza, come coordinare più squadre sul territorio (nel Lazio intervenne anche il CNAIPIC e team di sicurezza privati). In definitiva, il caso Regione Lazio ha mostrato come l’acquisizione forense non sia una fase “postuma”, ma integrata nella gestione della crisi: mentre si lavora al ripristino, in parallelo si portano avanti imaging e raccolta evidenze, poiché attendere la fine dell’emergenza per iniziare l’acquisizione significherebbe perdere dati chiave o trovare sistemi completamente ripristinati (quindi privati delle tracce dell’attacco).

2. Compromissione di account email governativi: immaginiamo uno scenario in cui un Ministero o un’agenzia governativa rileva accessi sospetti a caselle di posta istituzionali (PEC o email interne). Questo potrebbe derivare da un attacco mirato (es. phishing avanzato) volto a carpire informazioni sensibili. Il responsabile CSIRT nazionale verrebbe allertato per supportare l’ente nell’indagine. In un caso del genere, una delle prime mosse sarebbe raccogliere in maniera forense i log del server di posta (ad esempio i log IMAP/POP/SMTP, o i log di accesso alla Webmail) per identificare da quali IP e quando si sono verificati gli accessi abusivi. Poi, si procederebbe all’acquisizione delle caselle di posta compromesse – ad esempio esportando i file .pst/.ost nel caso di Exchange/Outlook, o effettuando un dump delle caselle dal server – per analizzare quali email sono state lette o esfiltrate dall’attaccante. Se si sospetta che l’attaccante abbia usato una postazione interna compromessa, quel PC verrebbe sequestrato per un’analisi: in tal caso la squadra forense eseguirebbe un’acquisizione post-mortem completa del disco e della RAM (se la macchina è accesa) di tale computer. Dall’immagine del PC si cercherebbero artefatti come browser history (per vedere se l’attaccante ha navigato la webmail), eventuali keylogger o malware installati, e tracce di movimenti laterali. Un esempio reale simile è accaduto con attacchi APT a Ministeri esteri: in passato, malware come Remote Control System o Ursnif hanno infettato PC di dipendenti pubblici per rubare credenziali PEC e documenti riservati. In queste indagini, la collaborazione con Polizia Postale è stretta: il responsabile deve garantire che ogni acquisizione segua procedure ineccepibili così che le prove (log di accesso, immagini dei PC) siano valide per identificare gli autori e perseguirli. Un aspetto critico qui è la catena di custodia condivisa: ad esempio, i log del server mail potrebbero essere forniti dall’ente al CSIRT e poi da questo alla Polizia; bisogna documentare ogni passaggio, magari apponendo firme digitali ai file per garantirne l’immodificabilità durante il trasferimento. Questo scenario evidenzia l’importanza della normativa nazionale (es. obblighi di notifica incidenti secondo NIS/DORA) che impone tempi stretti: entro 24 ore l’ente deve informare l’ACN, e nei giorni seguenti fornire risultati preliminari. Un responsabile quindi attiverebbe subito le procedure di acquisizione forense parallelamente alla mitigazione (es. reset password account, blocco di IoC a firewall), per poter fornire rapidamente un quadro d’impatto. Il risultato tangibile sarebbe un rapporto forense con elenco delle caselle violate, l’analisi di come (es. malware su PC X che ha fatto da pivot), e le azioni raccomandate per evitare futuri attacchi (es. 2FA obbligatoria sulle caselle, campagne anti-phishing).

3. Indagine su dipendente infedele in un ente pubblico: un contesto diverso, ma non raro, è quello di un abuso interno – ad esempio un funzionario di un’amministrazione che sottrae dati riservati (liste di cittadini, documenti interni) per fini personali o per rivenderli. In tal caso, l’incidente può non essere un “attacco esterno” ma una violazione di policy interna. Tuttavia, le tecniche di acquisizione forense sono analoghe: supponiamo che si sospetti che il dipendente abbia copiato file su una USB personale. Il responsabile della sicurezza dell’ente, con supporto forense) disporrà il sequestro del PC aziendale dell’individuo e di eventuali supporti nel suo ufficio. Su quel PC si effettuerà un imaging completo del disco. Dall’analisi emergeranno ad esempio artefatti USB nel registro di Windows con l’identificativo di una pen drive non autorizzata e date di utilizzo. I log di accesso potrebbero mostrare che il soggetto ha lavorato fuori orario su quei file (Event Log con login serali, oppure timeline di $MFT che indica accessi in orari anomali). Anche i LNK files e la shellbag del registro potrebbero confermare che ha aperto cartelle contenenti i dati riservati e magari copiato file su un percorso esterno. Tutte queste prove, opportunamente raccolte e documentate, costituiranno materiale per un eventuale procedimento disciplinare o penale. In un caso simile è fondamentale che la copia forense del disco del dipendente sia effettuata in maniera impeccabile e che l’originale venga custodito in cassaforte: la difesa potrebbe contestare la manomissione dei dati, quindi poter esibire hash corrispondenti e documentazione di catena di custodia completa tutela l’ente e la validità probatoria. Inoltre, se coinvolto un sindacato o autorità, sapere di aver seguito standard ISO/NIST (dunque di non aver violato la privacy di altri dati se non quelli pertinenti, ecc.) mette al riparo da contestazioni sulla metodologia. Un esempio reale avvenne qualche anno fa in un comune italiano, dove un amministratore di sistema fu scoperto a curiosare nei dati anagrafici senza motivo: grazie alla analisi forense dei log applicativi e del suo computer, si individuò l’illecito. Il responsabile deve essere sensibile anche a questi scenari “interni”, predisponendo magari procedure semplificate di acquisizione (non sempre servirà un intervento della Polizia, a volte è un audit interno) ma ugualmente rigorose.

4. Coordinamento multi-ente in incidenti su infrastrutture critiche: In ambito nazionale, il responsabile per la prevenzione incidenti potrebbe trovarsi a gestire situazioni che coinvolgono più enti contemporaneamente – ad esempio una campagna di attacchi ransomware a vari ospedali o comuni. In queste situazioni, l’acquisizione forense deve scalare su più fronti: occorre inviare squadre locali (o guidare da remoto i tecnici sul posto) per raccogliere evidenze in ciascun luogo. Un caso ipotetico: una variante di ransomware colpisce simultaneamente 5 ospedali italiani. Il CSIRT nazionale emette allerta e invia digital forensics kits alle squadre IT locali con istruzioni su cosa fare: eseguire subito dump di RAM delle macchine critiche (server di cartelle cliniche) e poi spegnerle per imaging, raccogliere log di sicurezza e una copia dei malware trovati su disco. Ogni squadra segue lo stesso protocollo (magari fornito sotto forma di checklist derivata da ISO 27037). I dati raccolti vengono poi centralizzati al CSIRT per l’analisi aggregata – questo ha senso perché confrontando i dump di memoria o gli artefatti del malware, si può capire se gli attacchi sono correlati (stessa variante) e quindi fornire early warning agli altri. Un responsabile deve quindi saper orchestrare acquisizioni forensi in parallelo, mantenendo la qualità. Ciò comporta anche aspetti logistici, come assicurarsi che ogni ente abbia almeno un personale formato DEFR o che possa dare accesso rapido alle stanze server per le copie. La cooperazione con forze di polizia qui è doppiamente importante: incidenti su infrastrutture critiche vengono seguiti anche dall’autorità giudiziaria, quindi polizia scientifica e Postale lavoreranno con il CSIRT. Uniformare gli standard (ad es. concordare l’uso di determinate tipologie di supporti di custodia sigillati, condividere gli hash via canali sicuri) è qualcosa che va preparato prima dell’incidente, tramite accordi e protocolli tra ACN e forze dell’ordine. In Italia, il modello di intervento cooperativo è in evoluzione, ma eventi come quelli di Luglio 2023 (attacco ransomware a vari comuni toscani) hanno visto CERT-AgID e CNAIPIC lavorare fianco a fianco. Il risultato è duplice: mitigare l’incidente e raccogliere prove per perseguire i criminali. Il responsabile deve assicurarsi che nessuno dei due obiettivi comprometta l’altro (ad es. non ripristinare macchine senza prima averle acquisite, a costo di tenere giù un servizio un’ora in più – decisione spesso difficile ma necessaria in ottica strategica).

Questi esempi mostrano che, nel contesto italiano, l’acquisizione forense è ormai parte integrante della gestione degli incidenti informatici, sia che essi siano causati da hacker esterni sia da minacce interne. Adottare standard internazionali offre un linguaggio comune e una qualità garantita delle operazioni, mentre declinare tali standard nelle procedure specifiche nazionali (considerando normative locali e struttura organizzativa italiana) è il compito del responsabile. In ogni caso, le evidenze digitali raccolte – dai log di Windows alle memorie RAM – si sono rivelate l’elemento chiave per chiarire gli incidenti e trarne lezioni: ad esempio, l’analisi forense post-mortem dei sistemi di un comune colpito da ransomware può evidenziare come l’attaccante è entrato (RDP esposto, credenziali deboli), fornendo indicazioni per mettere in sicurezza tutti gli altri enti con configurazioni simili. Così, il ciclo prevenzione-incidenti-miglioramento si chiude, con la forensica digitale a fare da ponte tra reazione all’emergenza e strategia di sicurezza proattiva.

L’acquisizione forense di sistemi informatici – con tutte le sue sfaccettature di triage, imaging e raccolta artefatti – rappresenta una pietra angolare della moderna risposta agli incidenti. Nel ruolo di responsabile per la prevenzione e gestione di incidenti informatici, queste competenze non sono solo tecniche, ma strategiche: bisogna saper orientare il team verso le azioni giuste nei momenti critici, garantendo che nessuna prova vada perduta e che l’integrità delle evidenze rimanga intatta. Come evidenziato dai principali standard (ISO/IEC 27037, NIST 800-86) e linee guida (RFC 3227), seguire metodologie strutturate assicura che l’indagine digitale sia condotta con rigore scientifico e validità legale.

Un buon responsabile CSIRT deve quindi agire su più fronti: prevenire – formando il personale e predisponendo procedure e toolkit per essere pronti all’acquisizione; gestire – durante l’incidente decidere rapidamente cosa acquisire live e cosa post-mortem, bilanciando la necessità di contenere la minaccia con quella di conservare le prove; analizzare – assicurarsi che i dati raccolti vengano esaminati a fondo (se non dal proprio team, passando il testimone a team forensi dedicati), traendo conclusioni solide; e comunicare – redigendo report post-incidente chiari che documentino l’accaduto e reggano a eventuali scrutini giudiziari.

In ambito nazionale, queste responsabilità si amplificano: il responsabile diventa l’anello di congiunzione tra diverse entità (enti colpiti, agenzie di sicurezza, forze dell’ordine, talvolta partner internazionali per attacchi globali), dovendo garantire un approccio unificato e conforme agli standard. Solo un processo di acquisizione forense ben gestito può fornire le risposte alle domande chiave dopo un incidente: come è successo? cosa è stato colpito? c’è ancora presenza dell’attaccante? quali dati sono stati compromessi? – e queste risposte informano tanto le azioni di recovery immediato quanto le strategie di miglioramento a lungo termine.

Concludendo, l’acquisizione forense non è una mera operazione tecnica ma un’attività dal forte impatto organizzativo e legale. Operare secondo le best practice internazionali, mantenere un alto livello di professionalità e documentazione, e sapersi adattare ai contesti concreti (tecnologici e normativi) italiani, sono caratteristiche imprescindibili per il responsabile CSIRT/SOC. Così facendo, ogni incidente informatico, per quanto grave, diventa anche un’opportunità di apprendimento e di rafforzamento della postura di sicurezza nazionale, trasformando l’esperienza sul campo in nuove misure preventive e in una resilienza cyber sempre maggiore. La sfida è elevata, ma come recita un principio forense: “le prove digitali non mentono” – sta a noi saperle preservare e interpretare correttamente, a tutela della sicurezza collettiva e della giustizia.

Sicurezza dei sistemi di videosorveglianza IP: analisi del P2P “plug-and-play”, superfici d’attacco e linee guida operative

Molte telecamere di fascia consumer/prosumer adottano meccanismi P2P via cloud (UID + STUN/TURN/relay) per fornire accesso “zero-configurazione”. Questa convenienza introduce rischi strutturali: dipendenza da terze parti, esposizione a credential stuffing, aperture automatiche di porte tramite UPnP, ritardi o assenza di aggiornamenti firmware, applicazioni mobili invasive e scarsa trasparenza dei vendor. Il presente articolo propone un modello local-first con segmentazione (VLAN IoT), registrazione/visualizzazione in locale, accesso remoto esclusivamente via VPN, pratiche di hardening, logging e monitoraggio. Inoltre:

  • un playbook operativo completabile in ~90 minuti;
  • checklist per la valutazione dei fornitori;
  • errori ricorrenti da evitare;
  • indicazioni forensi in caso di incidente.

L’adozione massiva di telecamere “plug-and-play” ha ridotto la complessità di installazione, spostando però il baricentro della sicurezza verso infrastrutture cloud proprietarie. Questo paper affronta, con taglio tecnico-accademico, come funziona il P2P “magico”, perché è rischioso, e quali architetture e controlli consentono di mitigare i rischi con oneri limitati.

Meccanismo tecnico

  • UID: ogni camera espone un identificativo univoco associato al tuo account/app.
  • NAT traversal: la camera apre connessioni in uscita verso server del vendor (STUN/TURN) per superare NAT/firewall; in caso di fallimento si usa relay completo lato cloud.
  • Effetto: fruizione video senza configurazioni manuali (port-forward), al prezzo di un terzo attore—il vendor—nel percorso di segnalazione e talvolta nel trasporto.

Superfici d’attacco e criticità

  1. Dipendenza dal cloud: indisponibilità, compromissioni o scarsa trasparenza impattano disponibilità e riservatezza.
  2. Credential stuffing: l’account applicativo del vendor è un bersaglio distinto dall’infrastruttura domestica/aziendale.
  3. UPnP: alcuni dispositivi richiedono aperture automatiche di porte; pratica rischiosa e spesso non tracciata.
  4. Supply-chain & firmware: cicli di patch lenti/assenti; stack P2P proprietari difficili da auditare.
  5. App mobili: permessi e telemetria eccessivi, potenziale esfiltrazione metadati.

Solo locale (massima privacy)

  • VLAN IoT dedicata (es. VLAN20 192.168.20.0/24) senza accesso Internet.
  • NVR/NAS con RTSP/ONVIF nella stessa VLAN.
  • Visualizzazione da LAN amministrativa tramite jump host o ACL selettive.

Locale + VPN (equilibrio sicurezza/usabilità)

  • Come sopra, ma nessun port-forward pubblico.
  • Accesso remoto solo tramite VPN (WireGuard/OpenVPN) al router/firewall.
  • Notifiche push veicolate attraverso la VPN o bridge on-prem sicuro.

Cloud minimale e controllato (solo se indispensabile)

  • Abilitare funzioni cloud solo per notifiche, non per streaming continuativo.
  • Preferire vendor con E2E documentata; disabilitare UPnP, applicare ACL in uscita.

Segmentazione e policy

  • VLAN IoT (telecamere), VLAN Admin (NVR/management), VLAN User (PC/smartphone).
  • Regole firewall minimali: IoT → NVR (RTSP/ONVIF) solo, deny all per il resto.
  • Bloccare IoT → Internet, salvo finestre di update strettamente controllate.

Accesso remoto

  • VPN con MFA (WireGuard/OpenVPN). Evitare esposizioni dirette su Internet di NVR/telecamere.
  • Disabilitare UPnP su router e dispositivi; opzionale: bloccare domini cloud vendor se non utilizzati.

Autenticazione e cifratura

  • Password uniche e robuste; 2FA ovunque disponibile.
  • TLS per pannelli web interni; preferire E2E tra client e NVR quando possibile.

Patch management, inventario, backup

  • Inventariare modelli/seriali/firmware; pianificare finestre di patch mensili con changelog.
  • Backup configurazioni (router/firewall/NVR) e snapshot delle policy.

Logging e monitoraggio

  • NTP coerente; invio log a Syslog/SIEM (accessi, motion, riavvii).
  • Allarmi su autenticazioni fallite, cambi IP/MAC, variazioni di profilo stream.

Prerequisiti: privilegi sul router/firewall, switch gestibile, NVR/NAS compatibile RTSP/ONVIF.

Router/Firewall (≈15′)

        • Disabilita UPnP.
        • Crea VLAN20 (IoT) e VLAN10 (Admin).
        • Regola: VLAN20 → solo NVR: 554 (RTSP), 80/443 se indispensabili; deny all per il resto.
        • Blocca VLAN20 → Internet; in alternativa, whitelist temporanea per update.

        Switch/Access Point (≈10′)

          • SSID “IoT” ancorato a VLAN20.
          • Port isolation per ridurre movimento laterale intra-VLAN.

          NVR/NAS (≈20′)

            • Cambia credenziali di default, abilita 2FA (se presente).
            • Crea utenti per ruolo (viewer/admin); invia log a syslog.
            • Abilita solo protocolli necessari (RTSP/ONVIF); disabilita il cloud.

            Telecamere (≈20′)

              • Aggiorna firmware.
              • Disabilita P2P/cloud nelle impostazioni.
              • Configura stream RTSP verso NVR (H.265 se supportato, bitrate adeguato).
              • Cambia porte/credenziali; disattiva servizi superflui (telnet/ftp).

              Accesso remoto (≈15′)

                • Configura WireGuard sul gateway; genera profili per smartphone/PC.
                • Verifica che la visualizzazione funzioni solo con VPN attiva.

                Verifica finale (≈10′)

                  • Da rete esterna: nessuna porta esposta su IP pubblico.
                  • Dalla VLAN IoT: traffico verso Internet bloccato (se policy locale-only).
                  # Scansione porte esposte su IP pubblico (da rete esterna)
                  nmap -Pn -p- --min-rate 1000 <IP_PUBBLICO>
                  
                  # Verifica outreach delle telecamere (dalla VLAN IoT)
                  tcpdump -i ethX host <IP_CAMERA> and not host <IP_NVR>
                  
                  # Controllo stato UPnP (OpenWrt)
                  uci show upnpd

                  (Adattare interfacce/indirizzi all’ambiente reale.)

                  • È possibile disabilitare completamente P2P/cloud e usare RTSP/ONVIF solo in LAN?
                  • Esiste una politica di aggiornamento con changelog e tempi di remediation (CVE)?
                  • L’app funziona in LAN senza Internet?
                  • Sono disponibili 2FA, ruoli granulari e log esportabili (syslog/API)?
                  • È documentata l’end-to-end encryption (ambito, limiti, gestione chiavi)? Come avviene l’eventuale relay?
                  • Lasciare UPnP attivo “per comodità”.
                  • Esporre NVR/telecamere con port-forward (80/554/8000) confidando solo nella password.
                  • Riutilizzare le stesse credenziali e rinunciare al 2FA.
                  • Trascurare la segmentazione (reti piatte ⇒ movimento laterale facilitato).
                  • Aggiornare l’app ma non il firmware dei dispositivi.
                  • Preservazione: esportare configurazioni NVR; acquisire log di accesso/motion/riavvii.
                  • Timeline: correlare eventi di motion con autenticazioni remote, geolocalizzazione IP, modifiche impostazioni.
                  • Acquisizioni:
                    – Bitstream del disco NVR/NAS (per analisi di metadati, cancellazioni, rotazioni);
                    – PCAP della VLAN IoT (24–48 h) per pattern anomali, DNS rari, cambi di bitrate/codec.
                  • Indicatori: accessi fuori orario, up/down ricorrenti, variazioni di stream non programmate, contatti verso domini non standard.

                  La sicurezza dei sistemi di videosorveglianza non dipende dalla “smartness” del dispositivo, ma dalla prevedibilità dell’architettura: isolamento di rete, minimizzazione della dipendenza dal cloud, aggiornamenti regolari, e accesso mediato da VPN. Un’impostazione local-first con policy chiare riduce drasticamente il profilo di rischio senza penalizzare la fruibilità. Le linee guida e il playbook proposti forniscono un percorso pratico e ripetibile per ambienti domestici evoluti e PMI.

                  Memory dump

                  Un dump della memoria è un file contenente un’istantanea della memoria di sistema o di un’applicazione in un preciso momento. Viene utilizzato principalmente per il debug e la risoluzione dei problemi, fornendo a sviluppatori e tecnici informazioni preziose sull’esatto stato del sistema o del processo quando si è verificato un crash o un errore. 

                  In informatica forense, un dump di memoria è l’estrazione e la copia completa del contenuto volatile della memoria RAM (o memoria di sistema) di un dispositivo in un momento specifico, tipicamente in risposta a un malfunzionamento o durante un’indagine. Questo file dump contiene dati preziosi per l’analisi, come processi attivi, connessioni di rete, informazioni sulla memoria del sistema e artefatti di sistema, che possono essere analizzati con strumenti forensi come Volatility per identificare attività dannose o cause di errori. 

                  In DFIR la sequenza tipica è dump della RAM → triage veloce → imaging del disco:

                  • lancia gli strumenti da supporto esterno (USB forense) e registra ogni comando;
                  • scrivi su un disco esterno dedicato (/mnt/usb/CASE123/memory/);
                  • calcola SUBITO l’hash del dump e salvalo accanto al file;
                  • se puoi, spegni servizi rumorosi (sync cloud, AV invadenti) ma non disconnettere bruscamente la macchina se ti serve il contesto live (processi, rete).

                  WinPMem (open-source, RAW)

                  Esegui come amministratore dalla tua chiavetta:

                  # crea cartella caso
                  mkdir E:\CASE123\memory
                  
                  # dump in RAW
                  E:\tools\winpmem\winpmem_mini_x64.exe E:\CASE123\memory\CASE123_mem.raw
                  
                  # hash
                  CertUtil -hashfile E:\CASE123\memory\CASE123_mem.raw SHA256 > E:\CASE123\memory\CASE123_mem.sha256.txt

                  Note: winpmem_mini_x64.exe produce RAW ed auto-scarica il driver a fine acquisizione:

                  • il programma winpmem_mini_x64.exe è la versione “minimal” del tool WinPmem, un’utility open source per l’acquisizione della memoria fisica (RAM) su sistemi Windows a 64 bit. La denominazione “mini” indica che questa versione genera esclusivamente immagini di memoria in formato RAW e non in formati più complessi come AFF4, che erano supportati da versioni precedenti;
                  • per accedere alla memoria fisica, WinPmem richiede un driver in modalità kernel, necessario per leggere direttamente dallo spazio di memoria a basso livello. L’eseguibile winpmem_mini_x64.exe è autosufficiente: contiene internamente sia il codice dell’applicazione utente sia i driver sia a 32 che a 64 bit. Durante l’esecuzione, carica automaticamente il driver appropriato nel sistema.​ Al termine dell’acquisizione, il driver viene automaticamente scaricato (unloaded), liberando le risorse kernel e riducendo le tracce residue dell’operazione, come confermato nella documentazione ufficiale del progetto Velocidex e nelle guide tecniche di RedPacket Security.

                  DumpIt (Magnet Forensics, GUI/CLI rapidissima)

                  Esegui DumpIt.exe (x64/ARM64 disponibili) → produce un crash dump della RAM, velocissimo per incident response, è considerato uno dei tool di riferimento per la live acquisition forense della memoria RAM su Windows per la facilità d’uso, rapidità e compatibilità con i principali strumenti di analisi.

                  Caratteristiche principali

                  • Semplicità d’uso: basta avviare il programma (ad esempio da una chiavetta USB); una finestra chiede conferma e acquisisce in automatico un’immagine (dump) della memoria fisica, salvandola nella stessa cartella dell’eseguibile oppure dove indicato tramite parametro CLI (/O percorso).​
                  • Rapidità: può acquisire dump completi anche da macchine con molta RAM (una memoria da 32GB viene acquisita in circa 6 minuti, dati di test).​
                  • Portabilità: non necessita di installazione né di software aggiuntivo; è eseguibile direttamente da dispositivi rimovibili—utile in scenari incident response e analisi su macchine compromesse.​
                  • Compatibilità: genera dump compatibili con framework di analisi come Volatility, Rekall, Comae Platform e WinDbg.​
                  • Affidabilità: evita di causare Blue Screen (BSOD) durante la cattura, conservando lo stato della macchina.​
                  • Output: oltre al file .dmp della memoria, può generare un file di testo con dettagli come nome macchina, timestamp UTC e SHA256 del dump.

                  AVML (Microsoft) – zero build sul target

                  AVML (Azure Virtual Machine Local) è uno strumento open source sviluppato da Microsoft per l’acquisizione forense della memoria volatile (RAM) su sistemi Linux, con capacità di operare anche su macchine virtuali Azure e ambienti fisici o cloud. La memoria catturata include informazioni su processi, connessioni di rete, credenziali temporanee, chiavi di cifratura e codice eseguibile in RAM, rendendo AVML fondamentale per la memory forensics moderna.

                  sudo mkdir -p /mnt/usb/CASE123/memory
                  cd /mnt/usb/CASE123/memory
                  
                  # dump completo
                  sudo /media/usb/tools/avml CASE123_mem.lime
                  
                  # immagine compressa (snappy) – comoda se spazio limitato
                  sudo /media/usb/tools/avml --compress CASE123_mem.lime.compressed
                  
                  # opzionale: converti a LiME non compresso per alcuni workflow
                  sudo /media/usb/tools/avml-convert CASE123_mem.lime.compressed CASE123_mem.lime
                  
                  # hash
                  sha256sum CASE123_mem.lime* | tee CASE123_mem.sha256.txt

                  Caratteristiche principali

                  • Open Source: distribuito pubblicamente da Microsoft su GitHub, accessibile e verificabile in ambiente forense.
                  • Compatibilità: funziona su distribuzioni Linux a 64 bit, incluse macchine virtuali in Azure, server fisici e container.
                  • Acquisizione sicura: utilizza API di basso livello del kernel per leggere la memoria fisica in maniera controllata, riducendo il rischio di crash del sistema o di modifiche alle evidenze.
                  • Formato output: genera file di dump in formato LiME-compatible (Linux Memory Extractor) o RAW, permettendo l’analisi successiva in strumenti come Volatility o Rekall.
                  • Uso flessibile: può essere eseguito localmente o da remoto nel contesto di investigazioni cloud attraverso script automatizzati o orchestrazioni Azure Monitor.

                  Note: AVML usa /dev/crash / /dev/mem / /proc/kcore automaticamente; supporta LiME come formato e fornisce avml-convert. Se è attivo kernel_lockdown l’acquisizione può fallire.

                  LiME (kernel module) – massima compatibilità

                  LiME (Linux Memory Extractor) è un modulo kernel caricabile (Loadable Kernel Module, LKM) progettato per l’acquisizione forense della memoria volatile su sistemi Linux e dispositivi basati su Linux, come Android.

                  sudo mkdir -p /mnt/usb/CASE123/memory
                  cd /path/to/LiME   # dove hai il lime.ko compilato per quel kernel
                  
                  # dump completo
                  sudo insmod ./lime.ko "path=/mnt/usb/CASE123/memory/CASE123_mem.lime format=lime"
                  
                  # hash
                  sha256sum /mnt/usb/CASE123/memory/CASE123_mem.lime | tee /mnt/usb/CASE123/memory/CASE123_mem.sha256.txt
                  
                  # In alternativa, per il trasferimento remoto:
                  sudo insmod ./lime.ko "path=tcp:192.168.1.10:4444 format=lime"

                  Note:

                  • installare i pacchetti kernel-headers e build-essential;
                  • clonare il repository ufficiale:
                  git clone https://github.com/504ensicsLabs/LiME.git
                  cd LiME/src && make
                  • parametri chiave: path=... e format=<raw|padded|lime> sono obbligatori; su alcune distro servono le virgolette.

                  Su Intel mac con impostazioni di sicurezza “allentate” si può usare OSXPMem/osxpmem (suite pmem) da supporto esterno.

                  Contesto tecnico

                  • Intel Mac: ovvero Mac con processori Intel (non Apple Silicon), offrono una compatibilità più ampia con strumenti software tradizionali sviluppati per sistemi Unix-like o Windows, soprattutto per operazioni di forensics.
                  • Impostazioni di sicurezza “allentate”: per eseguire tool come OSXPMem che devono accedere a risorse kernel o hardware, è necessario disabilitare alcune protezioni di sicurezza native di macOS (ad esempio: disattivazione di System Integrity Protection (SIP), permessi di accesso ai driver di basso livello, possibile disabilitazione protezioni come FileVault o protezioni firmware. Queste modifiche sono spesso necessarie per permettere la scrittura o il caricamento di driver esterni da supporto esterno – ad esempio una chiavetta USB – e l’accesso a memoria fisica in modo non standard.
                  • Uso da supporto esterno: OSXPMem può essere eseguito da dispositivo esterno (es. USB/CD bootabile o recovery environment) senza obbligo di installarlo sul sistema host, riducendo l’impatto e possibilità di alterare dati.

                  Esempio (Intel, dove supportato):

                  sudo /Volumes/TOOLS/osxpmem --format raw /Volumes/CASE/CASE123/memory/CASE123_mem.raw
                  shasum -a 256 /Volumes/CASE/CASE123/memory/CASE123_mem.raw > /Volumes/CASE/CASE123/memory/CASE123_mem.sha256.txt

                  Su Mac con chip Apple T2 e Apple Silicon (M1, M2 e successivi), l’acquisizione diretta della memoria RAM è generalmente impossibile senza modifiche alle protezioni di sicurezza come SIP (System Integrity Protection) e AVB (Apple Verified Boot):

                  • i chip T2 e Apple Silicon integrano un secure enclave e un sistema di avvio sicuro (AVB) che criptano e proteggono molte aree critiche della memoria e gestiscono il controllo dell’integrità del sistema operativo;
                  • SIP è progettato per impedire il caricamento di driver non firmati o modifiche al kernel, bloccando tool forensi che tentano di accedere direttamente alla RAM;
                  • AVB verifica la catena di avvio e blocca sistemi con firmware modificato, essendo un ulteriore livello che impedisce alterazioni e accessi non autorizzati alla memoria fisica.

                  Usa la working machine (non il target) per una verifica rapida.

                  Windows

                  vol -f CASE123_mem.raw windows.info
                  vol -f CASE123_mem.raw windows.pslist
                  vol -f CASE123_mem.raw windows.netscan
                  vol -f CASE123_mem.raw windows.malfind

                  Linux (LiME/AVML)

                  vol -f CASE123_mem.lime linux.pslist
                  vol -f CASE123_mem.lime linux.bash
                  vol -f CASE123_mem.lime linux.netstat

                  Volatility 3 legge AVML (anche compresso, via layer dedicato), oltre a LiME/RAW.

                  Nota: Pagefile/hiberfil? Se poi fai il full disk image, li avrai comunque. In attività live senza imaging completo puoi copiarli (con tool forense) e calcolarne l’hash a parte.

                  dd vs dcfldd vs dc3dd

                  Un “prontuario” pratico su dd, dcfldd e dc3dd per l’uso in digital forensics: differenze, buone prassi e comandi pronti all’uso.

                  dd (GNU coreutils)

                  Strumento standard Unix/Linux per copiare e convertire file, ma privo di funzionalità avanzate come il calcolo di checksum multipli, più file di output o una modalità di verifica. In pratica:

                  • copia byte-per-byte da/un device o file (immagini “raw” .dd);
                  • è ovunque (Linux, macOS, molti live-CD);
                  • fa poche cose, bene: per hashing, split, log ecc. bisogna usare altri tool (es. sha256sum, split, pv).

                  dcfldd (forensic dd)

                  dcfldd è un fork avanzato di dd, sviluppato dal Dipartimento della Difesa degli Stati Uniti per scopi di informatica forense. Le differenze chiave sono che dcfldd offre la possibilità di specificare più file di output, calcola checksum multipli simultaneamente, include una modalità di verifica per confrontare file e visualizza una percentuale di avanzamento del processo, tutte funzionalità non disponibili in dd. Quindi, in pratica:

                  • hashing on-the-fly (hash=sha256/sha1/md5/sha512) con salvataggio automatico (hashlog=);
                  • log degli errori e dei settori danneggiati (errlog=);
                  • progress/stato periodico (statusinterval=);
                  • split automatico in chunk forensi (ofsplit=) e output multipli (più of= nella stessa acquisizione);
                  • verifica post-acquisizione contro l’originale (vf=/verifyfile=);
                  • pattern write (es. bonifica con pattern=00) — utile per sanificare dischi di destinazione, non per l’evidenza.

                  In breve: dd è minimale e universalmente disponibile; dcfldd riduce gli errori operativi e velocizza le procedure forensi (hash, log, split, verifica) in un solo passaggio.

                  Buone prassi prima di acquisire

                  • Write-blocker hardware (preferibile). Se non disponibile, montare read-only:
                  # 1) Elenca dischi con flag RO
                  lsblk -o NAME,RO,SIZE,TYPE,MODEL,SERIAL
                  
                  # 2) Imposta sola lettura (sul device intero, non sulla partizione)
                  sudo blockdev --setro /dev/sdX
                  
                  # 3) Verifica che sia in sola lettura (1 = RO abilitato)
                  sudo blockdev --getro /dev/sdX
                  
                  # 4) Rivedi lo stato
                  lsblk -d -o NAME,RO,SIZE,MODEL,SERIAL
                  ----
                  Per tornare R/W:
                  sudo blockdev --setrw /dev/sdX
                  • Identifica il device giusto e fotografa lo stato: sudo fdisk -l /dev/sdX
                  • Prepara la cartella di caso con naming coerente (case ID, data ISO, operatore).
                  • Registra in un log: modello/seriale supporto, hash pre/post, tool/parametri, orari, errori e contromisure.

                  Esempi con dd (baseline)

                  1) Acquisizione raw con gestione errori e progresso

                  sudo dd if=/dev/sdX of=/evidence/Caso123/disk.dd \
                    bs=4M conv=noerror,sync status=progress iflag=fullblock
                  • conv=noerror,sync: ignora errori di lettura e riempie con zeri per mantenere allineamento;
                  • iflag=fullblock: evita letture parziali (utile con pipe/stream);
                  • status=progress: barra di avanzamento (GNU dd).

                  2) Hash post-acquisizione (consigliato SHA-256)

                  cd /evidence/Caso123
                  sha256sum disk.dd | tee disk.dd.sha256.txt

                  Esempi con dcfldd (forensic-friendly)

                  1) Acquisizione + hash on-the-fly + log

                  sudo dcfldd if=/dev/sdX of=/evidence/Caso123/disk.dd \
                    bs=4M conv=noerror,sync \
                    hash=sha256 hashlog=/evidence/Caso123/disk.dd.sha256.txt \
                    errlog=/evidence/Caso123/dcfldd.errors.log \
                    statusinterval=30
                  • un unico passaggio produce immagine + hash + log errori;
                  • statusinterval=30: stampa stato ogni 30 s.

                  2) Doppia destinazione (originale + copia di lavoro)

                  sudo dcfldd if=/dev/sdX \
                    of=/evidence/Caso123/disk.dd \
                    of=/lab/Caso123/disk_working.dd \
                    bs=4M conv=noerror,sync \
                    hash=sha256 hashlog=/evidence/Caso123/disk.dd.sha256.txt \
                    errlog=/evidence/Caso123/dcfldd.errors.log \
                    statusinterval=30
                  • Riduce l’eventuale rischio di divergenze tra “master” e “working copy” in caso di dispositivi danneggiati.

                  3) Split automatico in chunk (es. 2 GiB) per storage/FAT32

                  sudo dcfldd if=/dev/sdX of=/evidence/Caso123/disk.dd \
                    bs=4M conv=noerror,sync \
                    ofsplit=2G \
                    hash=sha256 hashlog=/evidence/Caso123/disk.dd.sha256.txt \
                    statusinterval=30
                  # Ricomposizione:
                  cat /evidence/Caso123/disk.dd.* > /restore/disk.dd

                  4) Verifica che immagine e device coincidano

                  # A freddo, con il device ancora in sola lettura:
                  sudo dcfldd if=/dev/sdX vf=/evidence/Caso123/disk.dd \
                    hash=sha256 statusinterval=30
                  • vf= (verify file) confronta i flussi (utile anche dopo trasferimenti/copie disk).

                  5) Log dettagliato dei settori danneggiati

                  sudo dcfldd if=/dev/sdX of=/evidence/Caso123/disk.dd \
                    bs=512 conv=noerror,sync \
                    errlog=/evidence/Caso123/badsectors.log \
                    statusinterval=30
                  • Con bs=512 ottieni il dettaglio settore-per-settore (più lento ma più preciso per i bad blocks).

                  Note operative e suggerimenti

                  • Dimensione blocco (bs): 4M è un buon compromesso prestazioni/affidabilità. Per supporti instabili puoi scendere (1M o 512B) per aumentare la granularità dei retry/riempimenti;
                  • cache OS: in alcuni contesti si usa oflag=direct/iflag=direct per bypassare la cache. Verifica che il tuo dd li supporti e valuta l’impatto sulle performance;
                  • formati: dd/dcfldd producono RAW. Se il tuo flusso richiede E01/Ex01 (metadata + compressione + segmentazione nativa), usa gli strumenti libewf (ewfacquire) in alternativa;
                  • conservazione: mantieni master immodificato; lavora sempre su una working copy verificata e documenta ogni passaggio;
                  • sanificazione dei dischi di destinazione prima del riuso (non dell’evidenza!): # Esempio: azzera un disco di DESTINAZIONE sudo dcfldd if=/dev/zero of=/dev/sdY bs=4M pattern=00 statusinterval=30
                  • ambienti non Linux: su Windows è comune operare da live Linux o appliance forense. In alternativa, considera tool dedicati (FTK Imager, ecc.) quando la policy lo consente.

                  Mini “cheat-sheet”

                  • dd, acquisizione rapida + progress dd if=/dev/sdX of=case/img.dd bs=4M conv=noerror,sync status=progress iflag=fullblock sha256sum case/img.dd > case/img.dd.sha256.txt
                  • dcfldd, acquisizione completa (hash+log) dcfldd if=/dev/sdX of=case/img.dd bs=4M conv=noerror,sync \ hash=sha256 hashlog=case/img.dd.sha256.txt errlog=case/errors.log statusinterval=30
                  • dcfldd, split + doppia uscita + verifica dcfldd if=/dev/sdX of=case/img.dd of=/backup/img.dd \ ofsplit=2G bs=4M conv=noerror,sync \ hash=sha256 hashlog=case/img.dd.sha256.txt statusinterval=30 dcfldd if=/dev/sdX vf=case/img.dd hash=sha256 statusinterval=30

                  Cos’è dc3dd

                  dc3dd è una versione di dd patchata dal DoD Cyber Crime Center (DC3) pensata per la forensics. Aggiunge funzioni native come hashing on-the-fly (MD5/SHA-1/SHA-256/SHA-512), log dettagliati (anche machine-readable), split in segmenti, progress, error-logging raggruppato e funzioni di wipe/verify.

                  In più, a differenza di dcfldd (che è un fork), dc3dd è una patch di dd: in linea di massima segue gli aggiornamenti di dd e ha un set di opzioni diverso (non 1:1 con dcfldd).

                  Differenze chiave (dd vs dcfldd vs dc3dd)

                  • dd (baseline): minimale e ovunque; per hash/split/log serve combinarlo con altri tool.
                  • dcfldd (fork): pensato per DFIR; hash=… + hashlog=…, errlog=…, ofsplit=…, vf= per verifica contro l’originale; output multipli ripetendo of=.
                  • dc3dd (patch): comandi e nomi opzioni propri:
                  • Hashing: hash=md5|sha1|sha256|sha512; log in log= e/o hlog= (totali e piecewise), mlog= per log “machine-readable”.
                  • Split: usa set di file con ofs=BASE.FMT + ofsz=BYTES (es. estensioni 0000, 0001, …); diverso da ofsplit= di dcfldd.
                  • Output multipli & verifica: oltre a of= puoi usare hof=/hofs=: l’output viene hashato e verificato confrontando gli hash in/out; fhod= estende l’hash a tutto il device.
                  • Error handling: di default, se l’input è un device, riempie di zeri i settori illeggibili; con rec=off si ferma al primo errore. (In dd/dcfldd l’equivalente pratico è conv=noerror,sync.)
                  • Wipe/sanitize: wipe=/dev/sdY (zerofill o pattern), hwipe= con verifica post-wipe; puoi impostare pattern con pat=/tpat=.
                  • Tuning: ssz= forza la sector size; bufsz= regola il buffer I/O per performance; verb=on per report verboso.

                  Esempi pratici con dc3dd (DFIR)

                  1) Imaging + hash + log (singolo file)

                  sudo dc3dd if=/dev/sdX of=/evidence/Caso123/disk.dd \
                    hash=sha256 log=/evidence/Caso123/logs/dc3dd.log \
                    hlog=/evidence/Caso123/logs/dc3dd.hashlog
                  • Calcola SHA-256 on-the-fly e scrive log e hash (totali + piecewise).

                  2) Split in chunk da 2 GiB (naming automatico)

                  sudo dc3dd if=/dev/sdX ofs=/evidence/Caso123/disk.dd.0000 \
                    ofsz=2G hash=sha256 \
                    log=/evidence/Caso123/logs/dc3dd.log hlog=/evidence/Caso123/logs/dc3dd.hashlog
                  • Usa ofs=BASE.FMT (qui 0000) e ofsz=2G per segmentare in disk.dd.0000, 0001, …

                  3) Master + working copy con verifica automatica

                  sudo dc3dd if=/dev/sdX \
                    of=/evidence/Caso123/disk_master.dd \
                    hof=/lab/Caso123/disk_working.dd \
                    hash=sha256 log=/evidence/Caso123/logs/dc3dd.log hlog=/evidence/Caso123/logs/dc3dd.hashlog
                  • hof= produce una copia con calcolo e verifica dell’hash rispetto all’input nella stessa passata.

                  4) Acquisizione con dischi “difficili” (settori e buffer)

                  sudo dc3dd if=/dev/sdX of=/evidence/Caso123/disk.dd \
                    hash=sha256 ssz=512 bufsz=1M log=/evidence/Caso123/logs/dc3dd.log
                  • Forza sector size a 512 B e limita il buffer per aumentare la resilienza su device instabili.

                  5) Sanificazione del disco di destinazione (non dell’evidenza!)

                  # Zero-fill con verifica
                  sudo dc3dd hwipe=/dev/sdY
                  
                  # Wipe con pattern 0x00 (senza verifica)
                  sudo dc3dd wipe=/dev/sdY pat=00
                  • Utile per preparare/bonificare i supporti di destinazione prima del riuso.

                  Quando preferirlo

                  • Vuoi split flessibile con naming prevedibile (ofs + ofsz) e verifica integrata sugli output (hof/hofs).
                  • Cerchi log ricchi (anche piecewise e machine-readable via mlog=) direttamente dal tool.

                  Note operative

                  • Come per dcfldd, mantieni master e working copy separati e documenta hash/log nel fascicolo.
                  • Puoi sostituire dcfldd con dc3dd mantenendo le stesse prassi (hash, split, log), adattando però i nomi opzione (ofsplit → ofs+ofsz, hashlog → hlog, verifica: vf → hof/hofs).

                  Confronto operativo (dd vs dcfldd vs dc3dd)

                  Attività / Featuredd (baseline)dcfldd (forensic fork)dc3dd (patch DC3)
                  Imaging RAWdd if=/dev/sdX of=img.dd bs=4M conv=noerror,sync status=progressdcfldd if=/dev/sdX of=img.dd bs=4M conv=noerror,sync statusinterval=30dc3dd if=/dev/sdX of=img.dd
                  Hash on-the-fly— (usa sha256sum dopo)hash=sha256 hashlog=img.sha256.txthash=sha256 hlog=hashes.txt (+ log= opzionale)
                  Log dettagliatireindirizza std{out,err}errlog=errors.log + output statolog=dc3dd.log (testuale), mlog=machine.log (machine-readable)
                  Split immagineesterno: split -b 2Gofsplit=2G → img.dd.000, .001…ofs=img.dd.0000 ofsz=2G → .0000, .0001…
                  Doppia uscita in una passata— (fai copia dopo)ripeti più of= nella stessa rigahof=working.dd (output con hash & verifica)
                  Verifica contro sorgenteesterno: ricalcolo hashvf=img.ddcon hof= verifica automaticamente la corrispondenza degli hash
                  Gestione settori danneggiaticonv=noerror,syncconv=noerror,syncriempie con zeri per default; puoi cambiare politica (fermarsi al primo errore)
                  Wipe/sanitize (solo dischi di destinazione)dd if=/dev/zero of=/dev/sdYpattern=00 su destinazionewipe=/dev/sdY (o hwipe= con verifica post-wipe)

                  Regola pratica: dd = portabilità + minimalismo; dcfldd = “tutto-in-uno” semplice (hash/log/split/verify); dc3dd = control-freak con log ricchi, split robusto e verifica integrata dell’output (hof).


                  Esempi pratici

                  1) Imaging con hash e log

                  dcfldd

                  sudo dcfldd if=/dev/sdX of=case/disk.dd bs=4M conv=noerror,sync \
                    hash=sha256 hashlog=case/logs/disk.sha256.txt errlog=case/logs/errors.log \
                    statusinterval=30

                  dc3dd

                  sudo dc3dd if=/dev/sdX of=case/disk.dd \
                    hash=sha256 hlog=case/logs/dc3dd.hashlog log=case/logs/dc3dd.log

                  2) Split a 2 GiB

                  dcfldd

                  sudo dcfldd if=/dev/sdX of=case/disk.dd ofsplit=2G \
                    hash=sha256 hashlog=case/logs/disk.sha256.txt
                  # join:  cat case/disk.dd.* > case/disk.dd

                  dc3dd

                  sudo dc3dd if=/dev/sdX ofs=case/disk.dd.0000 ofsz=2G \
                    hash=sha256 hlog=case/logs/dc3dd.hashlog
                  # join:  cat case/disk.dd.0* > case/disk.dd

                  3) Master + working copy, una sola passata

                  dcfldd

                  sudo dcfldd if=/dev/sdX of=case/disk_master.dd of=lab/disk_working.dd \
                    hash=sha256 hashlog=case/logs/disk.sha256.txt

                  dc3dd (con verifica integrata dell’output)

                  sudo dc3dd if=/dev/sdX of=case/disk_master.dd \
                    hof=lab/disk_working.dd \
                    hash=sha256 hlog=case/logs/dc3dd.hashlog log=case/logs/dc3dd.log

                  4) Bonifica del destinazione (non dell’evidenza!)

                  dcfldd

                  sudo dcfldd if=/dev/zero of=/dev/sdY bs=4M pattern=00 statusinterval=30

                  dc3dd

                  sudo dc3dd hwipe=/dev/sdY    # wipe + verifica
                  # oppure:
                  sudo dc3dd wipe=/dev/sdY     # wipe senza verifica

                  “Option mapping” veloce

                  Hashing

                  • dd → sha256sum img.dd > img.dd.sha256.txt (post-acq)
                  • dcfldd → hash=sha256 hashlog=FILE
                  • dc3dd → hash=sha256 hlog=FILE (+ log=/mlog=)

                  Split

                  • dd → split -b 2G img.dd img.dd.
                  • dcfldd → ofsplit=2G → img.dd.000, .001…
                  • dc3dd → ofs=img.dd.0000 ofsz=2G → .0000, .0001…

                  Doppia uscita

                  • dd → cp/rsync dopo
                  • dcfldd → più of= nella stessa riga
                  • dc3dd → hof= / hofs= (con hashing/verifica)

                  Verifica

                  • dd → ricalcolo hash device vs file
                  • dcfldd → vf=img.dd
                  • dc3dd → con hof= l’output è verificato contro l’input

                  Errori lettura

                  • dd / dcfldd → conv=noerror,sync
                  • dc3dd → default riempie gli errori con zeri; modalità “stop on first error” selezionabile

                  Fondamenti di informatica e reti di calcolatori per la sicurezza informatica

                  Introduzione

                  Il presente articolo vuole fornire una panoramica strutturata dei fondamenti di informatica e reti di calcolatori, con un focus sull’applicazione pratica di tali conoscenze nel contesto della sicurezza informatica. Ciascuna sezione approfondisce un argomento chiave – dalla rappresentazione dei dati ai sistemi operativi, dalle basi di dati alle reti e protocolli – evidenziando i concetti teorici essenziali e collegandoli alle best practice per la prevenzione e gestione di incidenti informatici.

                  La trattazione è pensata per il responsabile della sicurezza informatica impegnato nella prevenzione e gestione di incidenti informatici.

                  Vengono inclusi esempi pratici, riferimenti a standard riconosciuti e citazioni da fonti autorevoli, il tutto organizzato in sezioni chiare per facilitare la consultazione e l’apprendimento.

                  Nella scienza dei calcolatori, rappresentare le informazioni significa tradurre qualsiasi tipo di dato (numeri, testo, immagini, audio, ecc.) in una forma binaria comprensibile e manipolabile dalle macchine digitali. In pratica, ogni informazione viene codificata come sequenze di bit (binary digits), ossia 0 e 1, che sono le unità elementari di dati. Un insieme di 8 bit forma un byte, che costituisce la minima unità indirizzabile di memoria. Usando sequenze di bit e byte, un computer può rappresentare qualsiasi tipo di contenuto: caratteri testuali, valori numerici, immagini, suoni, video, ecc. La conversione dei dati in sequenze di 0 e 1 prende il nome di codifica e risponde al requisito fondamentale per cui un computer elabora solo informazioni in formato binario.

                  Unità di misura e codifiche: poiché i bit da soli sarebbero poco maneggevoli, si utilizzano multipli come Kilobyte (KB), Megabyte (MB), Gigabyte (GB), tenendo presente che in informatica per ragioni storiche spesso 1 KB = 1024 byte (2^10) invece di 1000 (si parla più precisamente di Kibibyte). Sul versante delle codifiche, per rappresentare testi alfanumerici si impiegano sistemi standardizzati di mappatura tra numeri e caratteri. Uno dei più importanti è il codice ASCII, che associa a ogni simbolo (lettera, cifra, segno di punteggiatura, caratteri di controllo, ecc.) un valore numerico tra 0 e 127, rappresentabile con 7 bit. Ad esempio, il carattere ‘A’ in ASCII è codificato come 65 (in decimale), mentre ‘a’ è 97 e così via. Estensioni di ASCII utilizzano 8 bit (256 valori possibili) per supportare caratteri accentati e simboli aggiuntivi, sebbene queste estensioni non fossero unificate a livello internazionale. Oggi si utilizza ampiamente Unicode, un sistema di codifica che, nelle sue varianti come UTF-8 e UTF-16, può rappresentare decine di migliaia di caratteri (oltre i caratteri latini, anche alfabeti non latini, ideogrammi, emoji, ecc.). Unicode in UTF-8 è retro-compatibile con ASCII per i primi 128 valori e consente di codificare caratteri usando sequenze di 1-4 byte. Grazie a Unicode, applicazioni e sistemi possono gestire testi multilingue e simboli emoji in modo unificato.

                  Numeri e formati numerici: i numeri interi vengono rappresentati in binario utilizzando un certo numero di bit fissato (es. 32 bit o 64 bit). Per i numeri con segno (positivi/negativi) l’approccio più diffuso è la rappresentazione in complemento a due, in cui il bit più significativo indica il segno e l’operazione di inversione dei bit più aggiunta di 1 permette di ottenere il negativo di un valore.
                  Il complemento a due è lo schema standard adottato nei moderni calcolatori per i numeri interi con segno, poiché facilita la progettazione dei circuiti aritmetici (addizione e sottrazione possono essere eseguite con lo stesso circuito sommatorio). Ad esempio, con 8 bit si possono rappresentare gli interi da -128 a +127 in complemento a due. Per i numeri reali (con virgola decimale), si utilizza la rappresentazione in virgola mobile secondo lo standard IEEE 754, che definisce formati a 32 bit (precisione singola) e 64 bit (precisione doppia), tra gli altri. Questo standard specifica come suddividere i bit di un numero reale in segno, esponente e mantissa, permettendo di rappresentare un ampio intervallo di valori (inclusi zero, infiniti e valori NaN per indicare risultati non numerici). La conformità allo standard IEEE 754 garantisce che diversi processori e linguaggi interpretino i numeri in virgola mobile nello stesso modo, importante per la consistenza dei calcoli (ad esempio in crittografia o analisi scientifiche).

                  Rappresentazione di immagini, audio e altri dati: oltre a testo e numeri, i computer rappresentano anche dati multimediali in forma binaria. Un’immagine digitale ad esempio è modellata come una griglia di elementi chiamati pixel, ciascuno associato a valori binari che ne determinano il colore. In una immagine raster (bitmap), ogni pixel ha componenti di colore (ad esempio rosso, verde, blu in RGB) codificate tipicamente su 8 bit ciascuna, per un totale di 24 bit per pixel (True Color). Ciò significa che un singolo pixel può assumere circa 16,7 milioni di combinazioni di colore. Immagini con palette più ridotte possono usare meno bit per pixel (ad esempio 8 bit/pixel in modalità 256 colori). Allo stesso modo, un’immagine in bianco e nero può essere codificata con 1 bit per pixel (0 = bianco, 1 = nero), eventualmente con livelli di grigio se si usano più bit. Per i suoni, la rappresentazione avviene mediante campionamento: l’onda sonora analogica viene misurata (campionata) a intervalli regolari e ogni campione viene quantizzato in formato digitale (ad esempio, audio CD utilizza 44.100 campioni al secondo, ciascuno rappresentato da 16 bit per canale). Il risultato è una sequenza binaria che descrive l’andamento dell’audio nel tempo. Video e altri tipi di dati sono combinazioni o estensioni di questi principi (sequenze di immagini per il video, eventualmente compresse; flussi di campioni audio, ecc.), sempre riconducibili a stringhe di bit.

                  Implicazioni per la sicurezza informatica: la corretta comprensione della rappresentazione dei dati è fondamentale nella sicurezza informatica per diversi motivi. In primo luogo, molte vulnerabilità di basso livello (come buffer overflow o integer overflow) derivano da limiti nella rappresentazione binaria: ad esempio un intero a 32 bit ha un massimo e se un calcolo eccede quel massimo si verifica un overflow con possibili esiti imprevisti. Conoscere come i numeri sono codificati (complemento a due, IEEE 754 per i float, ecc.) aiuta a prevenire errori di programmazione sfruttabili da attaccanti. Inoltre, la rappresentazione binaria è alla base della crittografia: bit e byte vengono manipolati con operazioni booleane e aritmetiche per cifrare/decifrare informazioni. Un esperto di sicurezza deve conoscere, ad esempio, come lavorano gli algoritmi bit-a-bit e come interpretare dumps binari o esadecimali di file e pacchetti di rete durante un’analisi forense. Anche l’encoding dei caratteri è rilevante: attacchi come Unicode spoofing (ingannare sistemi di autenticazione usando caratteri Unicode simili a quelli latini) o bypass di filtri basati su codifiche differenti (ad esempio doppia codifica in attacchi XSS) sfruttano dettagli della rappresentazione dei testi. Infine, la capacità di tradurre rapidamente dati binari in forme comprensibili (come visualizzare un file eseguibile in esadecimale, o un indirizzo IP nella notazione dotted-decimal) è una competenza pratica quotidiana per chi gestisce incidenti: consente di identificare payload malevoli nascosti, firme di file e altri indicatori di compromissione.

                  Un elaboratore (computer) moderno si basa sul modello concettuale di architettura di von Neumann, che prevede la suddivisione in componenti fondamentali: una Unità Centrale di Elaborazione (CPU), una memoria centrale, dispositivi di input/output (I/O) e interconnessioni dette bus. In tale architettura, sia i dati che le istruzioni di un programma sono memorizzati nella medesima memoria e la CPU li preleva ed esegue sequenzialmente. Di seguito esaminiamo ciascun componente e le implicazioni relative alla sicurezza.

                  • CPU (Central Processing Unit): è il “cervello” del computer, responsabile dell’esecuzione delle istruzioni macchina. La CPU è internamente composta da un’unità di controllo (Control Unit, CU) che dirige l’esecuzione delle istruzioni, da un’unità aritmetico-logica (ALU) che effettua calcoli e operazioni logiche e da una serie di registri interni per l’immagazzinamento temporaneo di dati e indirizzi. La CPU esegue le istruzioni in un ciclo di fetch-decode-execute: preleva un’istruzione dalla memoria, la decodifica e la esegue, aggiornando eventualmente registri e memoria. Le istruzioni stesse costituiscono il cosiddetto linguaggio macchina specifico della famiglia di CPU in uso (ad esempio x86-64, ARMv8, etc.). La maggior parte delle CPU moderne supporta funzionalità come pipeling (esecuzione parallela sovrapposta di parti di istruzioni diverse) e multithreading (gestione di più flussi di istruzioni) per migliorare le prestazioni. Dal punto di vista della sicurezza, la CPU implementa meccanismi hardware essenziali, come i livelli di privilegio (es. modalità kernel vs user): le moderne CPU possono operare in almeno due modalità, in cui le istruzioni cosiddette privilegiate (che accedono a risorse critiche o configurazioni hardware) possono essere eseguite solo in modalità kernel (dove risiede il sistema operativo), ma non in modalità utente. Questo isolamento hardware garantisce che un programma in esecuzione applicativa non possa, ad esempio, modificare direttamente la memoria del kernel o interagire col dispositivo disco senza passare per il sistema operativo – prevenendo una vasta gamma di abusi. Tuttavia, sono noti attacchi (Meltdown, Spectre) che sfruttano caratteristiche delle CPU (esecuzione speculativa, branch prediction) per aggirare tali protezioni, sottolineando come l’architettura hardware sia anch’essa un fronte di sicurezza da curare.
                  • Memoria centrale: è il luogo in cui risiedono i programmi in esecuzione e i dati su cui operano. La memoria centrale (di solito RAM, Random Access Memory, volatile) contiene sia le istruzioni macchina caricate dal disco sia le strutture dati necessarie alle applicazioni. La caratteristica è l’accesso diretto rapido agli indirizzi di memoria (a differenza delle memorie di massa più lente). La memoria centrale memorizza sia i dati da elaborare (o già elaborati) sia le istruzioni eseguibili. Tipicamente è organizzata in una sequenza di celle indirizzabili (parole di memoria) tutte della stessa dimensione (es. 8 byte), ognuna identificata da un indirizzo numerico univoco. La memoria è spesso distinta in RAM (lettura/scrittura, volatile) e ROM/EPROM (Read-Only Memory, memorie non volatili contenenti ad esempio il firmware di bootstrap). Un aspetto cruciale dell’architettura è la gerarchia di memoria: piccole memorie velocissime (registri nella CPU, cache L1/L2/L3) mitigano la differenza di velocità tra CPU e RAM; più in basso vi sono memorie di massa (SSD, HDD) e archivi esterni. Ai fini della sicurezza, la gestione della memoria è un terreno fertile di vulnerabilità: buffer overflow (scrittura oltre i limiti di un buffer), use-afterfree (uso di memoria già deallocata) e memory corruption in genere sono alla radice di exploit. Negli ultimi decenni, sono stati introdotti contromisure hardware come il bit NX (No-eXecute, che marca le pagine di memoria dati come non eseguibili per prevenire l’iniezione di shellcode) e tecniche come ASLR (Address Space Layout Randomization, implementata a livello di sistema operativo ma dipendente dal supporto CPU per la segmentazione/paginazione) per rendere più difficile sfruttare i bug di memoria. Un responsabile alla sicurezza deve comprendere come funzionano queste protezioni hardware/memory e i limiti che possono avere, per esempio sapere che buffer overflow su architetture moderne possono essere mitigati ma non eliminati (es. return-oriented programming è nato proprio come tecnica per bypassare NX-bit e ASLR sfruttando frammenti di codice legittimo in memoria).
                  • Bus e dispositivi I/O: i vari componenti sono collegati da bus di sistema (insieme di linee di comunicazione). Esistono tipicamente bus separati o logici distinti per indirizzi, dati e controllo, che coordinano il flusso delle informazioni tra CPU, memoria e periferiche. Le periferiche di I/O (dispositivi di input/output come tastiera, mouse, schermo, disco, scheda di rete, ecc.) interagiscono col processore attraverso controller specifici collegati sul bus. Da una prospettiva di sicurezza, i dispositivi I/O possono rappresentare vettori di attacco se non gestiti correttamente: ad esempio, dispositivi esterni USB possono iniettare comandi (si pensi a Rubber Ducky che si presenta come tastiera HID); le schede di rete possono essere bersaglio di DMA attacks (accesso diretto alla memoria) se l’IOMMU non isola adeguatamente le periferiche. Inoltre, dal bus passano anche dati sensibili (ad esempio password digitate da tastiera o chiavi crittografiche in RAM) e attacchi di tipo side-channel hanno dimostrato che è possibile captare informazioni sul bus o analizzare i tempi di risposta del sistema per dedurre segreti.

                  Set di istruzioni e architetture: ogni CPU implementa un Instruction Set Architecture (ISA), l’insieme di istruzioni macchina che è in grado di eseguire. Architetture diverse (x86, ARM, MIPS, RISC-V, ecc.) hanno ISA differenti e anche modalità operative differenti (32-bit, 64-bit, little endian vs big endian nell’ordinamento dei byte in memoria, ecc.). Nello sviluppo di exploit o nella risposta a incidenti, è spesso necessario comprendere l’architettura bersaglio: ad esempio, malware scritto per ARM non girerà su un server x86 a meno di emulazione e viceversa. Inoltre, la sicurezza del software è strettamente legata all’architettura: un binario compilato per x86-64 con protezioni come stack canaries (canarini sullo stack) e Control Flow Guard sfrutta funzionalità specifiche dell’ISA e del compilatore; un analista deve sapere come riconoscerle ed eventualmente disattivarle in ambiente controllato per effettuare reverse engineering. Parimenti, alcune istruzioni privilegiate (come la gestione della tabella delle pagine di memoria) sono sfruttate nei rootkit in modalità kernel: conoscere il funzionamento interno della MMU (Memory Management Unit) e delle istruzioni correlate può aiutare a individuare manipolazioni malevole a basso livello.

                  In sintesi, l’architettura degli elaboratori fornisce il substrato hardware su cui operano i sistemi software. Un responsabile della sicurezza informatica deve padroneggiare almeno i concetti fondamentali (ciclo macchina, gestione memoria, modelli architetturali) per comprendere sia come prevenire incidenti (es. configurare correttamente protezioni hardware, scegliere architetture sicure per certi servizi critici) sia come analizzare incidenti avvenuti (es. dump di memoria, istruzioni eseguire da un malware, log di errori CPU come kernel panic o machine check exception). Inoltre, la cooperazione tra hardware e software in termini di sicurezza è sancita da standard e best practice: ad esempio, l’UEFI Secure Boot sfrutta funzionalità firmware/hardware per garantire che all’accensione vengano eseguiti solo bootloader firmati e tecnologie come TPM (Trusted Platform Module) offrono radici hardware di fiducia utilizzate dai sistemi operativi per funzionalità come BitLocker (crittografia disco) o l’attestazione di integrità. Tutti questi aspetti richiedono una conoscenza delle basi architetturali per essere implementati e gestiti con successo.

                  Un sistema operativo (SO) è il software di base che funge da intermediario tra l’hardware del computer e i programmi applicativi, gestendo le risorse del sistema e fornendo servizi essenziali agli utenti e alle applicazioni. In altre parole, il sistema operativo è composto da vari componenti integrati (kernel, gestore dei processi, gestore della memoria, file system, driver di periferica, interfaccia utente, ecc.) che insieme assicurano il funzionamento coordinato del computer. Esempi comuni di sistemi operativi sono Windows, Linux, macOS per desktop/server e Android, iOS per dispositivi mobili. Di seguito analizziamo le principali funzioni di un SO, evidenziando la loro importanza nella sicurezza informatica.

                  • Gestione dei processi e multitasking: il sistema operativo consente di eseguire più programmi in (pseudo)parallelismo attraverso la gestione dei processi e dei thread. Un processo è un’istanza in esecuzione di un programma, con un proprio spazio di indirizzamento in memoria, mentre un thread è un flusso di esecuzione all’interno di un processo (i thread di uno stesso processo condividono memoria e risorse). Il kernel (nocciolo del sistema operativo) include uno scheduler che assegna la CPU ai vari processi/thread attivi, implementando politiche di scheduling (round-robin, priorità, ecc.) per garantire reattività e far avanzare tutti i carichi di lavoro. In ambito sicurezza, la corretta separazione dei processi è cruciale: il sistema operativo deve isolare gli spazi di memoria in modo che un processo non possa leggere/scrivere la memoria di un altro (violando la confidenzialità o integrità). Ciò è realizzato tramite l’MMU (unità di gestione memoria) e meccanismi come la traduzione di indirizzi (paginazione) che il SO controlla. Un attaccante spesso cerca di rompere questo isolamento (es. tramite local privilege escalation exploits che da un processo utente permettono di eseguire codice in contesto kernel). Pertanto, funzioni come il caricamento di moduli kernel firmati, l’implementazione di sandbox (che confinano processi potenzialmente pericolosi in ambienti limitati) e la gestione attenta delle API di interprocess communication (pipe, socket, shared memory) sono aspetti di sicurezza legati alla gestione dei processi.
                  • Gestione della memoria: il sistema operativo fornisce astrazioni di memoria ai processi, tipicamente sotto forma di memoria virtuale. Ogni processo vede uno spazio di indirizzi virtuali che il kernel mappa sulla memoria fisica reale, garantendo che processi diversi non interferiscano. Il gestore della memoria del SO si occupa di allocare e liberare memoria su richiesta dei programmi (tramite chiamate di sistema come malloc/free in C, o automaticamente tramite garbage collector in linguaggi gestiti), di swappare porzioni di memoria su disco se la RAM scarseggia (memoria virtuale paginata) e di proteggere regioni critiche (ad esempio lo spazio di indirizzi del kernel è reso non accessibile ai processi utente, solitamente). Tecniche come ASLR – Address Space Layout Randomization (randomizzazione dello spazio degli indirizzi) sono abilitate dal sistema operativo per rendere meno prevedibili gli indirizzi di librerie, stack e heap, mitigando gli exploit basati su buffer overflow. Il responsabile alla sicurezza deve conoscere queste tecniche e assicurarsi che siano abilitate (ad esempio, DEP/NX e ASLR attivi, stack guard pages, ecc.), nonché essere in grado di analizzare core dump o tracce di crash per capire se un incidente è dovuto a corruzione di memoria. Inoltre, la gestione della memoria comprende i permessi di accesso alle pagine (read/write/execute): un sistema operativo robusto segrega scrupolosamente codice ed esegue dati non eseguibili, sfruttando l’hardware (bit NX) e marcando anche regioni di memoria come non accessibili quando opportuno (es. mappe null pointer per catturare dereferenziazioni errate). Da un punto di vista offensivo, molti malware tentano di aggirare queste protezioni, ad esempio tramite Return-Oriented Programming (ROP) per eseguire codice malizioso pur in assenza di pagine eseguibili in user-space: analizzare un attacco del genere richiede padronanza di come il SO organizza la memoria di un processo.
                  • File system e gestione delle risorse persistenti: un altro compito cardine del sistema operativo è la gestione dei file system, ovvero l’organizzazione dei dati su memoria di massa (dischi, SSD) in file e directory, con meccanismi di autorizzazione (permessi di lettura/scrittura/esecuzione per utenti e gruppi) e di protezione. Per esempio, sistemi POSIX (Linux, UNIX) adottano permessi rwx e proprietà utente/gruppo, oltre a meccanismi più avanzati come ACL (Access Control List) o selinux context per definire in modo granulare chi può accedere a cosa. Un responsabile della sicurezza deve assicurarsi che le politiche di permesso siano configurate secondo il principio del privilegio minimo (ad esempio, file di configurazione critici accessibili solo all’utente di sistema appropriato, directory con dati sensibili non eseguibili, ecc.). Inoltre, il file system registra metadati come timestamp (utili nelle analisi forensi per capire la timeline di un incidente) e, in alcuni sistemi, supporta cifratura trasparente (es. BitLocker su NTFS, LUKS su ext4) per proteggere i dati a riposo. Il sistema operativo è anche responsabile della gestione delle periferiche tramite driver – piccoli moduli software che fungono da traduttori tra il kernel e l’hardware. Driver vulnerabili possono introdurre gravi falle di sicurezza (poiché eseguono in kernel mode), quindi l’OS e i suoi aggiornamenti vanno monitorati per patch critiche relative ai driver (come ad esempio stuxnet, che sfruttò un driver malevolo con firma digitale rubata). Il sistema operativo implementa anche politiche di controllo degli accessi non solo a file ma a tutte le risorse (dispositivi, porte di rete, chiamate di sistema sensibili). Ad esempio, su sistemi UNIX esiste la distinzione tra utente normale e superutente (root): solo quest’ultimo può eseguire certe operazioni (binding di socket su porte <1024, caricamento di moduli kernel, modifiche alle tabelle di routing, ecc.). Meccanismi di sudo o capabilities permettono di limitare o delegare privilegi in modo controllato. La corretta configurazione di questi meccanismi è spesso l’ultima linea di difesa per prevenire che un attacco su un servizio in esecuzione con utente limitato comprometta tutto il sistema.
                  • Interfaccia utente e modalità utente/kernel: il sistema operativo fornisce infine all’utente (e alle applicazioni) un’interfaccia per utilizzare il computer. Questa può essere una GUI (interfaccia grafica) con desktop, finestre e pulsanti, o una shell a riga di comando per lanciare comandi testuali. Indipendentemente dall’interfaccia, quando un’applicazione necessita di compiere operazioni privilegiate (es. accedere al disco, aprire una connessione di rete, allocare memoria), deve effettuare una chiamata di sistema (system call) al kernel. Le system call rappresentano il punto di controllo tra la modalità utente e la modalità kernel: l’OS espone una serie di servizi di sistema (come “open file”, “send packet”, “create process”) e gli unici modi per un programma di utente di ottenere questi servizi è invocare le relative chiamate, che comportano un trap in modalità privilegiata. Il sistema operativo verifica i parametri e i permessi ad ogni system call, garantendo che l’operazione sia lecita. Ad esempio, se un processo chiede di aprire un file, il kernel controlla che quel processo (identificato dal suo UID/GID di appartenenza) abbia i diritti necessari sul file. Questo meccanismo è fondamentale per la sicurezza: previene che un processo malevolo possa arbitrariamente manipolare risorse senza passare per controlli. D’altra parte, se esistono vulnerabilità nelle implementazioni delle system call (bug nel kernel), un attaccante potrebbe ottenere privilegi elevati – questi sono i famosi exploit local root che sfruttano race condition, buffer overflow o errori logici nel kernel. Un buon responsabile della sicurezza deve tenere i sistemi operativi aggiornati (patch management) proprio per correggere tali vulnerabilità non appena note.

                  In conclusione, il sistema operativo è il componente software più critico da un punto di vista di sicurezza, perché orchestra l’uso di tutte le risorse e applica le politiche di isolamento e controllo.
                  Le best practice come la separazione dei privilegi (account utente vs amministratore), la riduzione della superficie d’attacco (disabilitare servizi di sistema non necessari, rimuovere driver inutilizzati), l’uso di meccanismi di logging e monitoraggio (Syslog, Event Viewer) e l’applicazione tempestiva di aggiornamenti di sicurezza, sono tutti ambiti afferenti al sistema operativo. Inoltre, standard e linee guida come quelle di CIS (Center for Internet Security) forniscono benchmark di hardening specifici per i vari sistemi operativi (ad esempio, CIS Controls e CIS Benchmarks per Windows Server, Red Hat, etc.), che il responsabile dovrebbe adottare per assicurare una configurazione robusta delle macchine. Un sistema operativo correttamente configurato e mantenuto è in grado di prevenire la maggior parte degli incidenti informatici comuni (attacchi malware, escalation di privilegi, esfiltrazione di dati), o quantomeno di registrare eventi utili a rilevare tempestivamente attività anomale.

                  Le basi di dati (database) sono infrastrutture fondamentali per archiviare, organizzare e recuperare grandi quantità di informazioni in modo efficiente. Esistono vari modelli di database; i più diffusi si dividono in database relazionali (SQL) e database NoSQL (non relazionali). In questa sezione esamineremo entrambi, delineando caratteristiche, differenze e rilevanza per la sicurezza.

                  Database relazionali (modello SQL)

                  Un database relazionale organizza i dati in tabelle composte da righe e colonne, secondo il modello introdotto da Edgar F. Codd negli anni ‘70. Ogni tabella rappresenta un’entità, ogni riga (o record) rappresenta un’istanza dell’entità e ogni colonna rappresenta un attributo (campo) del record. Ad esempio, potremmo avere una tabella Utenti con colonne ID, Nome, Email, Ruolo dove ciascuna riga è un utente specifico con i suoi dati e una tabella Accessi con colonne UtenteID, DataOra, Esito per tracciare i login: le due tabelle sarebbero collegate attraverso il campo UtenteID (chiave esterna nella tabella Accessi che rimanda alla chiave primaria ID nella tabella Utenti). Le relazioni tra tabelle (one-to-one, one-to-many, many-to-many) vengono realizzate tramite queste chiavi: chiave primaria (un identificatore unico per ogni riga di una tabella) e chiavi esterne (valori che collegano una riga a una riga in un’altra tabella). Il modello relazionale è accompagnato da un linguaggio standard di interrogazione e manipolazione dei dati: SQL (Structured Query Language), che permette di definire lo schema (DDL – Data Definition Language), inserire/modificare/cancellare dati (DML – Data Manipulation Language) e effettuare query di ricerca e aggregazione (con SELECT, JOIN tra tabelle, ecc.).

                  Caratteristiche chiave dei database relazionali sono le cosiddette proprietà ACID delle transazioni, fondamentali in ambiti critici (bancari, gestionali, etc.): Atomicità (ogni transazione è un’unità indivisibile, o tutti gli step vengono applicati o nessuno), Coerenza (la transazione porta il database da uno stato consistente a un altro, non viola vincoli di integrità ), Isolamento (transazioni concorrenti non interferiscono tra loro, i risultati sono come se fossero state eseguite in sequenza) e Durabilità (una volta completata con successo, un’operazione diventa persistente anche in caso di guasti successivi). I DB relazionali sono tipicamente gestiti da un RDBMS (Relational Database Management System) – ad esempio Oracle, Microsoft SQL Server, MySQL/MariaDB, PostgreSQL – che si occupa di implementare queste garanzie e ottimizzare l’accesso ai dati (attraverso indici, piani di esecuzione delle query, caching, etc.).

                  Rilevanza per la sicurezza: i database relazionali spesso custodiscono informazioni sensibili (dati personali, credenziali, registri di attività) e sono bersagli appetibili per gli attaccanti. Due aspetti fondamentali vanno considerati: la sicurezza interna del DB e le vulnerabilità delle applicazioni che lo utilizzano. Sul primo fronte, un RDBMS deve essere configurato con opportune misure di sicurezza: controlli di accesso robusti (account separati con privilegi minimi per le applicazioni, ruoli e privilegi SQL assegnati con granularità), cifratura dei dati a riposo (molti DB supportano tablespace criptati o cifratura trasparente delle colonne), audit e logging delle operazioni (tracciare chi ha eseguito cosa e quando, per individuare accessi sospetti) e hardening generale (disabilitare funzionalità non utilizzate, applicare patch di sicurezza del motore DB). Ad esempio, esistono standard come lo SQL Server Security Guide o linee guida CIS Benchmarks per MySQL/PostgreSQL che elencano best practice: dal forzare l’autenticazione con password complesse, all’abilitare la cifratura TLS nelle connessioni client-DB, fino a restringere l’uso di stored procedure o comandi pericolosi solo ad account fidati.

                  Sul secondo fronte, il rischio più noto è la SQL Injection, una tecnica d’attacco applicativa in cui input malevoli forniti a un’applicazione web (o altro software) finiscono per alterare l’istruzione SQL eseguita sul database. Se l’applicazione non “sanitizza” correttamente gli input (ad esempio non usando query parametrizzate/preparate), un attaccante può inserire frammenti di SQL arbitrario nelle query, ottenendo potenzialmente accesso o manipolazione non autorizzata dei dati. Un classico incidente è quando un campo di login viene usato direttamente in una query tipo SELECT * FROM utenti WHERE user='${utente}' AND pass='${password}' : fornendo come utente qualcosa come ' OR '1'='1' , la query diventa sempre vera permettendo bypass di autenticazione. Dal punto di vista di un responsabile alla sicurezza, mitigare le SQL injection è prioritario: significa formare gli sviluppatori all’uso di parametri bindati, ORMs, stored procedure sicure e al filtraggio/escape degli input in ultima istanza. In aggiunta, predisporre Web Application Firewall (WAF) con regole per intercettare pattern di SQL injection può aggiungere un livello di difesa. Un altro esempio di attacco è il privilege escalation interno al DB: se un account di applicazione con pochi privilegi riesce a eseguire un comando di sistema attraverso una funzionalità di SQL estesa (ad esempio le xp_cmdshell di SQL Server, se abilitate impropriamente, consentono di eseguire comandi sul sistema operativo), l’attaccante potrebbe passare dal database al pieno controllo del server. Ciò evidenzia l’importanza di limitare al minimo i privilegi degli account DB usati dalle applicazioni e di disabilitare funzionalità di estensione (come esecuzione di codice esterno) se non necessarie.

                  In termini di standard, normative come il GDPR richiedono protezione rigorosa dei dati personali spesso contenuti nei database, includendo principi di data protection by design (ad esempio minimizzazione dei dati raccolti, pseudonimizzazione). Standard industriali come il PCI-DSS per i dati di carte di credito impongono cifratura degli storage e segmentazione di rete per i sistemi di database, oltre a monitoraggio continuo degli accessi.

                  Database NoSQL (non relazionali)

                  Negli ultimi anni, accanto ai sistemi relazionali tradizionali, si sono diffusi i database NoSQL, termine che sta per “Not Only SQL” ad indicare database non basati sul modello relazionale e spesso privi di schema fisso. I database NoSQL abbracciano diverse categorie: database documentali (che memorizzano dati in documenti strutturati tipicamente in formato JSON/BSON, es. MongoDB, CouchDB), database a colonne distribuite (simili a tabelle sparse con colonne flessibili, es. Cassandra, HBase), database a chiave-valore (memorizzano coppie key-value senza struttura interna, es. Redis, Riak) e database a grafo (ottimizzati per rappresentare entità e relazioni complesse come nodi e archi, es. Neo4j). Questi sistemi rinunciano alle rigide tabelle relazionali in favore di una struttura dati più flessibile e spesso distribuita su cluster di macchine.

                  Nei database NoSQL, i dati vengono spesso memorizzati nel loro formato nativo o “denormalizzato”. Ad esempio, un documento JSON può contenere in un unico record tutte le informazioni di un utente, compresa una lista dei suoi ordini, evitando di fare JOIN tra tabelle separate come accadrebbe in un
                  modello relazionale. Questo porta vantaggi in termini di prestazioni e scalabilità su grandi volumi di dati o dati eterogenei: il sistema scala orizzontalmente, replicando e partizionando i dati su più nodi (sharding), ed è in grado di gestire variazioni di struttura tra diversi record (schema flessibile).

                  Tuttavia, spesso i database NoSQL sacrificano la coerenza immediata delle transazioni in favore della disponibilità e della partition tolerance, secondo i principi del teorema CAP. In ambienti distribuiti, garantire simultaneamente Coerenza, Disponibilità e Tolleranza alle partizioni è impossibile; molti database NoSQL scelgono di essere AP (available, partition-tolerant) sacrificando la consistenza forte: i dati possono essere eventualmente consistenti, ovvero gli aggiornamenti si propagano con tempo breve ma non istantaneo su tutte le repliche. In termini pratici, ciò significa che una lettura potrebbe restituire un dato lievemente obsoleto se appena modificato altrove, privilegiando però la reattività del sistema anche in caso di rete con latenze. Questo è spesso accettabile per scenari come social network (ad esempio, vedere per qualche secondo la vecchia foto profilo di un utente prima che arrivi la nuova non è critico), ma sarebbe inaccettabile in un’applicazione bancaria (dove i conti correnti richiedono consistenza forte). In compenso, le architetture NoSQL sono progettate per alta disponibilità e scalabilità: aggiungendo nodi al cluster, le performance di throughput aumentano linearmente in molti casi e la ridondanza dei dati su nodi multipli evita singoli punti di guasto.

                  Rilevanza per la sicurezza: i database NoSQL presentano sfide di sicurezza in parte analoghe a quelle dei relazionali, ma con alcune peculiarità. Innanzitutto, l’assenza di schema fisso significa che non ci sono vincoli intrinseci di tipo/forma dei dati: ciò può rendere più difficile validare l’input e più facile commettere errori logici (ad esempio, se un campo previsto come numero intero viene memorizzato come stringa in alcuni documenti, il comportamento dell’applicazione potrebbe essere imprevedibile).
                  Dal punto di vista degli attacchi, esistono varianti di injection anche per NoSQL – le cosiddette NoSQL Injection – dove input malevoli manipolano le query di ricerca su database non relazionali. Ad esempio, in MongoDB una query è spesso costruita passando un JSON di filtro: se un’applicazione web inserisce direttamente parametri utente in questo JSON senza controlli, un attaccante potrebbe aggiungere operatori come $gt (greater than) o $ne (not equal) per alterare la logica della query. Pur meno note delle SQL injection, vulnerabilità analoghe sono state riscontrate (ad es. su applicazioni con backend MongoDB, Redis injection sfruttando comandi craftati, ecc.).

                  In termini di controlli di accesso, alcuni database NoSQL nelle prime versioni erano pensati per funzionare in ambienti fidati e mancavano di robusti sistemi di autenticazione/autorizzazione. Ci sono stati casi clamorosi di database NoSQL esposti online senza password (es. istanze di MongoDB o Elasticsearch lasciate aperte) che hanno portato a massivi furti di dati o attacchi ransomware (dove gli attaccanti esfiltravano e cancellavano i dati chiedendo un riscatto). Dunque, una prima regola di sicurezza è assicurarsi che l’accesso di rete ai database sia segregato (solo dagli application server, non dal pubblico internet) e che i meccanismi di autenticazione siano attivi e con credenziali robuste.
                  Oggi i principali prodotti NoSQL (MongoDB, Cassandra, etc.) offrono meccanismi di autenticazione, cifratura in transito (SSL/TLS) e a riposo, controlli di autorizzazione basati su ruoli – ma sta ai configuratori abilitarli. In un contesto di sicurezza nazionale, dove si trattano dati sensibili, è imperativo che anche i database NoSQL rispettino standard di hardening: ad esempio, MongoDB Security Checklist suggerisce di abilitare l’autenticazione SCRAM-SHA, definire ruoli con minimo privilegio (lettura/scrittura su specifici database), usare IP binding solo su interfacce interne, abilitare auditing, ecc.

                  Dal punto di vista della consistenza dei dati, bisogna inoltre considerare la resilienza: in caso di incidenti (es. guasto di nodi, partizioni di rete), i database NoSQL possono entrare in stati degradati (consistenza ridotta) che, se non gestiti, potrebbero causare perdite o duplicazioni di dati. Un piano di sicurezza deve includere backup regolari anche per database NoSQL e test di ripristino, dato che la natura distribuita a volte complica le procedure di recovery (bisogna tenere conto di replica set, quorum di consenso per riottenere un primario in sistemi tipo MongoDB, etc.). Inoltre, la eventuale consistenza implica che nel monitoraggio degli incidenti bisogna tener conto di possibili discrepanze temporanee: ad esempio, analizzando i log di un sistema distribuito, un responsabile alla sicurezza deve sapere che l’ordine esatto delle operazioni potrebbe differire leggermente tra nodi – il che può complicare l’analisi forense e la ricostruzione esatta degli eventi. Strumenti specializzati per logging centralizzato (spesso basati essi stessi su stack NoSQL, come ELK – Elasticsearch, Logstash, Kibana) vanno configurati per correlare correttamente eventi multi-nodo.

                  Integrazione SQL/NoSQL e best practice: molte organizzazioni adottano architetture ibride dove convivono database relazionali per dati transazionali e database NoSQL per big data, analytics in tempo reale, cache in-memory, etc. Un coordinatore di sicurezza deve avere familiarità con entrambi e con le tecniche per proteggerli. Ad esempio, assicurarsi che i dati sensibili presenti in un cluster Hadoop/NoSQL siano cifrati (usando magari librerie come Google Tink o servizi KMS per gestire le chiavi) e segregati con tokenization o pseudonymization per minimizzare l’impatto di un breach. Allo stesso tempo, mantenere aggiornati i sistemi (le piattaforme NoSQL sono in continuo sviluppo, patch di sicurezza escono di frequente) e utilizzare strumenti di monitoraggio delle anomalie sulle query (Database Activity Monitoring) anche su NoSQL, dove possibile, per rilevare pattern inconsueti (es. un’esplosione di letture anomale alle 3 di notte da un certo IP potrebbe indicare un exfiltration in corso).

                  Riassumendo, la scelta tra database relazionali e NoSQL dipende dai requisiti di consistenza, scalabilità e struttura dei dati. Dal punto di vista della sicurezza, entrambi richiedono robuste misure di protezione, consapevoli delle rispettive architetture. I database relazionali brillano per maturità di strumenti di sicurezza integrati e transazioni ACID, mentre i NoSQL offrono flessibilità e prestazioni su scala, ma il professionista deve compensare eventuali mancanze (es. consistenza) a livello applicativo e prestare attenzione a configurazioni sicure che non sono sempre default. Conoscere standard come OWASP Top 10 (A03:2021 – Injection) per le injection o il NIST SP 800-123 (guide to general server security, applicabile anche ai server DB) aiuta a costruire un ambiente database – relazionale o no – robusto contro incidenti informatici.

                  Le reti di calcolatori permettono a sistemi differenti di comunicare e scambiarsi informazioni. La sicurezza informatica moderna è strettamente legata alle reti, poiché gran parte degli incidenti avviene attraverso connessioni di rete (attacchi remoti, malware che si propagano, esfiltrazioni di dati). In questa sezione esaminiamo i fondamenti del networking e tre protocolli chiave: la suite TCP/IP (base di Internet), il sistema dei nomi a dominio DNS e il protocollo di routing BGP. Comprendere questi protocolli è essenziale per prevenire e gestire incidenti che vanno dagli attacchi DDoS alla manipolazione del traffico internet.

                  Suite TCP/IP (Livelli di trasporto e rete)

                  TCP/IP non è un singolo protocollo ma una famiglia di protocolli organizzati in un modello di rete pratico (spesso semplificato in 4 livelli: Link, Internet, Trasporto, Applicazione) che corrisponde in parte al modello OSI (vedi sezione successiva). I due pilastri di questa suite sono il Protocollo IP (Internet Protocol) e il Protocollo TCP (Transmission Control Protocol), da cui prende nome.

                  • IP (Internet Protocol): IP opera al livello di rete ed è il protocollo fondamentale che si occupa di indirizzamento e instradamento dei pacchetti attraverso reti differenti. IP fornisce un servizio di consegna di pacchetti non affidabile e senza connessione: ciò significa che invia i pacchetti dal mittente al destinatario secondo le informazioni di routing, ma non garantisce né che arrivino (possono perdersi) né che arrivino in ordine. Ogni dispositivo collegato in rete ha almeno un indirizzo IP univoco (32 bit per IPv4, rappresentati come quattro numeri es. 192.168.10.5, oppure 128 bit per IPv6, rappresentati in esadecimale). IP provvede a incapsulare i dati in un pacchetto IP contenente header (con mittente, destinatario, TTL, ecc.) e payload (i dati da trasportare, ad esempio un segmento TCP). Il protocollo IP è progettato per collegare reti eterogenee: è un protocollo di interconnessione di reti (internetworking) di livello 3 OSI, nato per far comunicare sottoreti differenti unificandole in un’unica rete logica (da cui “Internet”). IP compie l’instradamento: i router analizzano l’indirizzo di destinazione IP di ciascun pacchetto e lo inoltrano verso il router successivo più vicino alla destinazione, sulla base di tabelle di routing. Gli algoritmi di routing (OSPF, BGP, ecc. visti più avanti per BGP) costruiscono queste tabelle. Sul piano sicurezza, IP di per sé non prevede autenticazione né confidenzialità: i pacchetti possono essere falsificati (IP spoofing) e letti da intermediari. Per ovviare a ciò esistono estensioni come IPsec (una suite per la cifratura e autenticazione a livello IP) usata in VPN sicure. Inoltre, la natura non affidabile di IP significa che spetta ai livelli superiori occuparsi di ritrasmissioni e controllo di flusso (è qui che interviene TCP). Va citato che IPv4 soffre di spazio di indirizzi limitato e problemi di sicurezza (frammentazione IP usata in certi attacchi DoS, ad esempio Teardrop attack), mentre IPv6 migliora alcuni aspetti (spazio vastissimo, meccanismi di autoconfigurazione) ma porta nuove considerazioni di sicurezza (ad esempio, la presenza obbligatoria di ICMPv6 e multicast di rete locale richiede filtri specifici per evitare scansioni e attacchi di discovery non autorizzati).
                  • TCP (Transmission Control Protocol): TCP opera a livello di trasporto e fornisce un canale di comunicazione affidabile e orientato alla connessione tra due host. In termini pratici, TCP si occupa di instaurare una connessione virtuale tra client e server (tramite la celebre stretta di mano 3-way handshake: SYN, SYN-ACK, ACK), di suddividere i dati da inviare in segmenti adeguati, di numerare i segmenti e ritrasmettere quelli non riconosciuti e di riordinare i segmenti al ricevente per presentare un flusso di byte continuo all’applicazione. Grazie a TCP, le applicazioni non devono preoccuparsi di perdita o disordine di pacchetti: TCP garantisce che i dati arrivino integri e nell’ordine corretto, o notifica un errore se la connessione si interrompe. Questo è essenziale per protocolli applicativi come HTTP, SMTP, FTP, in cui ricevere dati incompleti o scombinati equivarrebbe a corruzione dell’informazione. Tecnicamente, TCP identifica le connessioni tramite le porte: ogni segmento TCP ha una porta sorgente e una destinazione, permettendo a un singolo host di gestire più connessioni simultanee su porte diverse (es. 80 per HTTP, 443 per HTTPS, 25 per SMTP, ecc.). Dal punto di vista della sicurezza, il protocollo TCP è stato bersaglio di attacchi sin dai primordi di Internet. Un esempio classico è il TCP SYN flood: attaccando l’handshake di TCP, un aggressore invia una valanga di pacchetti SYN senza completare mai il 3° passo, lasciando il server con molte connessioni “mezze aperte” (in stato SYN_RECV) e esaurendo le risorse dedicate (la backlog queue). Ciò provoca un Denial of Service. Contromisure come SYN cookies o limiti sulla half-open queue aiutano a mitigare. Un altro attacco è il TCP reset (RST): inviando un pacchetto falsificato con bit RST si può forzare la chiusura di una connessione TCP esistente; se l’attaccante riesce a indovinare gli identificatori corretti (IP/porta e numero di sequenza), può interrompere comunicazioni di altri. Questo fu sfruttato in passato per bloccare traffico BGP (il cui trasporto è su TCP, vedi dopo) o per censura (come RST injection nel grande firewall cinese). Per integrità e confidenzialità, TCP da solo non offre nulla: la protezione dei dati deve avvenire a livello applicativo (ad es. TLS sopra TCP per cifrare la sessione). Tuttavia, dentro la suite TCP/IP esistono protocolli complementari come UDP (User Datagram Protocol, non affidabile e senza connessione, usato per streaming, DNS, etc.) che il responsabile sicurezza deve ugualmente conoscere: ad esempio, UDP è più soggetto a spoofing (essendo connectionless) e viene sfruttato in attacchi DDoS di riflessione/amplificazione (come DNS amplification, SSDP amplification), dunque vanno predisposti filtri (e.g. anti-spoofing con BCP 38, rate limiting su servizi UDP pubblici). In generale, la comprensione profonda di TCP/IP consente di analizzare i log di rete e i dump di pacchetto (es. con Wireshark) per rilevare attività sospette: sequenze anomale di flag TCP, tentativi su port scanning (che si evidenziano come connessioni SYN brevissime su molte porte), pacchetti malformati, etc. Standard come gli RFC (es. RFC 793 per TCP, RFC 791 per IP) definiscono il funzionamento lecito: molti attacchi inviano traffico che devia dallo standard (es. pacchetti con flag inconsuete come Xmas scan con FIN-PSH-URG) e sistemi IDS/IPS (Snort, Suricata, Zeek) sono in grado di rilevarlo se ben configurati.

                  In sintesi, TCP/IP è la colonna portante delle comunicazioni di rete. Un coordinatore di prevenzione incidenti deve: assicurare che le configurazioni di rete seguano le best practice (filtri su pacchetti ingressi/uscita, disabilitare protocolli legacy insicuri – es. Telnet, FTP – a favore di versioni cifrate – SSH, FTPS/SFTP), conoscere gli attacchi di rete comuni e le contromisure (firewall stateful per gestire SYN flood, IDS per rilevare scansioni e anomalie TCP/IP, IPsec per proteggere canali critici) e in caso di incidente saper leggere il traffico (analisi PCAP) per capire cosa è successo. Ad esempio, in un sospetto data breach, potrebbe trovarsi traffico TCP sulla porta 443 di volume insolitamente alto verso un IP esterno non riconosciuto: sapere che 443 è solitamente HTTPS e che l’esfiltrazione potrebbe avvenire cifrata fa sì che si debba guardare a meta-dati (SNI, quantità, pattern) e non al contenuto impossibile da decifrare senza la chiave. Allo stesso modo, la padronanza di TCP/IP è fondamentale per gestire incidenti come DDoS: riconoscere un flood TCP SYN o UDP, distinguere un traffico legittimo da uno malevolo in base a parametri di basso livello e interfacciarsi con ISP/CDN per attivare filtri o scrubbing.

                  DNS (Domain Name System)

                  DNS è il “servizio di nomi” di Internet, spesso paragonato a un “elenco telefonico” o a un servizio di rubrica per la rete globale. Il suo scopo principale è tradurre i nomi di dominio leggibili dagli umani (ad es. www.esempio.gov) nei corrispondenti indirizzi IP numerici che le macchine utilizzano per instradare il traffico. Senza DNS, dovremmo ricordare e digitare indirizzi come 93.184.216.34 per visitare un sito, cosa impraticabile su larga scala. Il DNS è dunque fondamentale per l’usabilità di Internet.

                  Il sistema DNS è gerarchico e distribuito. I nomi di dominio sono organizzati in una struttura ad albero rovesciato: al vertice ci sono i root server (indicati da un dominio radice vuoto, spesso rappresentato da un punto . ), subito sotto ci sono i domini di primo livello (TLD) come .com , .org , .it , .gov, ecc., poi i secondi livelli (es. esempio in esempio.gov ) e così via con possibili sottodomini aggiuntivi. L’operazione di risoluzione DNS consiste nel trovare l’indirizzo IP associato a un nome (risoluzione diretta) o viceversa trovare il nome dato un IP (risoluzione inversa). Quando un client (tipicamente tramite un resolver stub integrato nel sistema operativo) deve risolvere un nome, contatta un DNS resolver ricorsivo (spesso fornito dall’ISP o configurato manualmente come 8.8.8.8 di Google) il quale interroga a sua volta la gerarchia: parte dai root server (ce ne sono 13 indirizzi logici root disseminati globalmente) per sapere chi è autoritativo per il TLD richiesto, poi contatta il server autoritativo di quel TLD per sapere chi gestisce il dominio di secondo livello e così via fino ad ottenere dal server DNS autoritativo finale (gestito dal proprietario del dominio o dal suo provider) il record richiesto. Il DNS memorizza le risposte in cache per un certo periodo (TTL) per accelerare richieste future.

                  I record DNS più comuni includono: A/AAAA (indirizzo IPv4 o IPv6 associato a un nome), CNAME (nome canonico, alias verso un altro nome), MX (mail exchanger, indirizzo dei server di posta per il dominio), TXT (testo libero, usato anche per record SPF/DKIM nei contesti mail), SRV (service locator, utilizzato da alcuni protocolli), PTR (pointer per risoluzione inversa da IP a nome).

                  Minacce e sicurezza DNS: il DNS in origine è stato progettato senza meccanismi di autenticazione, il che l’ha reso vulnerabile a vari attacchi. Il più classico è il DNS cache poisoning: un attaccante induce un resolver a memorizzare una risposta falsa, cosicché gli utenti successivi vengano indirizzati all’IP sbagliato (ad esempio, credono di visitare bancopopolare.it ma in realtà il DNS avvelenato gli dà l’IP di un server dell’attaccante). Prima di correttivi, era possibile inviare risposte DNS fasulle con una certa facilità, approfittando del fatto che la porta UDP 53 e l’ID di transazione DNS erano prevedibili e non c’era verifica di origine. Ora i resolver usano porte effimere random e ID random a 16 bit, riducendo la fattibilità del poisoning, ma il rischio resta se l’attaccante può intralciare la comunicazione col vero server (ad es. tramite un man-in-the-middle). La risposta dell’industria è DNSSEC, un’estensione di sicurezza che aggiunge firme digitali alle risposte DNS: i domini firmati DNSSEC pubblicano chiavi pubbliche nei record DNSKEY e usano record RRSIG per firmare le mapping nome->IP. Un resolver con DNSSEC abilitato verifica che la firma sia valida e ancorata a una catena di fiducia (dal root in giù) evitando di accettare dati manomessi. DNSSEC, però, non è ancora ovunque adottato e introduce la
                  complessità della gestione chiavi/rollover.

                  Un altro problema di sicurezza DNS è il DNS tunneling: usando richieste DNS (che spesso sono permesse anche quando altro traffico è bloccato) per incapsulare dati arbitrari, degli attaccanti possono esfiltrare informazioni o comandare malware (comandi e controllo) attraverso query DNS apparentemente legittime. Ad esempio, un malware potrebbe fare query a sottodomini come <data>.esempio-attaccante.com, dove <data> è un blocco di dati rubati codificato in base32; il server DNS sotto il controllo dell’attaccante riceve queste query e decodifica i dati dal nome richiesto.
                  Dal punto di vista di un analista, è importante monitorare il traffico DNS verso domini insoliti o con nomi molto lunghi/strani, segnale tipico di tunneling o data exfiltration. Strumenti di sicurezza avanzata (DNS firewall, soluzioni di exfiltration detection) possono rilevare e bloccare questi abusi.

                  C’è poi il DNS hijacking o DNS spoofing: se un attaccante compromette un server DNS autoritativo o modifica i riferimenti (ad esempio alterando i record di un registrar DNS), può dirottare un dominio intero su altri IP. Questo è successo, ad esempio, in attacchi a provider DNS o in scenari di censura statale (dove i resolver ISP sono modificati per restituire IP “fake” per certi domini). Contromisure includono l’uso di registrar con protezioni robuste (2FA, lock) e monitoraggio continuo dei record DNS critici.

                  Best practice relative al DNS per un responsabile alla sicurezza includono: utilizzare resolver DNS ricorsivi sicuri (magari in-house o servizi con filtro malware), abilitare DNSSEC validation sui resolver interni per i propri utenti, implementare DNSSEC per i domini gestiti dall’organizzazione in modo da prevenire impersonificazioni, isolare e proteggere i server DNS autoritativi (pochi servizi devono contattarli, quindi regole firewall restrittive e monitoraggio). Inoltre, configurare correttamente i record per proteggere email e servizi (DNS è utilizzato in meccanismi di sicurezza come SPF, DKIM, DMARC per l’email authentication). Un altro aspetto è la privacy: le query DNS tradizionali sono in chiaro, quindi un attaccante che sniffa la rete vede tutti i nomi richiesti (che possono rivelare i siti visitati, ecc.). In risposta, si stanno diffondendo protocolli come DNS over HTTPS (DoH) o DNS over TLS (DoT) che cifrano il traffico DNS tra client e resolver. Questo migliora la riservatezza, ma pone sfide per i controlli aziendali (non si può più facilmente ispezionare il contenuto DNS). Un coordinatore dovrà quindi bilanciare privacy e capacità di monitoraggio, magari attivando DoT/DoH con server fidati ma anche usando sistemi di split-horizon DNS per risolvere internamente i nomi aziendali e avere visibilità.

                  BGP (Border Gateway Protocol)

                  BGP è il protocollo di routing globale che tiene unita Internet. Mentre protocolli come OSPF, EIGRP, IS-IS gestiscono il routing interno a una singola organizzazione o sistema autonomo (IGP – Interior Gateway Protocols), BGP è l’Exterior Gateway Protocol che connette tra loro i diversi Autonomous System (AS) – essenzialmente le reti di proprietà di fornitori di connettività (ISP, dorsali, grandi organizzazioni) identificate da un numero AS univoco. In parole semplici, BGP è il metodo con cui le reti annunciano ad altre reti quali prefissi IP possono raggiungere attraverso di loro, permettendo così di instradare pacchetti da un capo all’altro del mondo, passando per molte reti intermedie. BGP è dunque il “sistema di comunicazione tra router di confine” che consente a Internet di funzionare come un’unica grande rete. Senza BGP, i pacchetti oltre la propria rete locale non saprebbero dove andare.

                  Dal punto di vista tecnico, BGP è un protocollo di routing di tipo path-vector: ogni annuncio BGP informa su un prefisso IP raggiungibile e include l’AS-PATH, ovvero la sequenza di AS che bisogna attraversare per raggiungere quel prefisso. I router BGP (detti spesso Route Reflector o router di bordo) scambiano messaggi su connessioni TCP (porta 179). BGP è incrementale: invece di scambiare periodicamente l’intera tabella come alcuni IGP, dopo l’iniziale full routing table exchange, invia solo aggiornamenti quando cambia qualcosa (annuncio di nuova rotta o ritiro di una esistente). Questo lo rende scalabile per Internet dove esistono oltre 900k prefissi IPv4 annunciati. BGP permette politiche: ogni operatore può definire preferenze su quali rotte usare o annunciare (ad esempio preferire percorsi più corti in termini di AS-PATH, o quelli ricevuti da clienti su quelli ricevuti da provider per motivi economici).

                  Vulnerabilità e incidenti BGP: BGP si basa in gran parte sulla fiducia tra operatori e fino a tempi recenti non incorporava meccanismi crittografici robusti. Ciò lo rende vulnerabile al cosiddetto BGP hijacking: un AS malevolo (o mal configurato) può annunciare rotte per prefissi IP che non gli appartengono, deviando il traffico. Ad esempio, nel 2008 l’annuncio errato di una rotta per YouTube da parte di un ISP pakistano (nel tentativo di censurare YouTube localmente) propagò a livello globale, rendendo YouTube irraggiungibile per ore. In altri casi, attori malevoli hanno annunciato prefissi bancari o di criptovalute per intercettare dati. BGP hijack può portare a interruzione (se il traffico viene in un vicolo cieco) o Man-in-the-Middle (se il traffic hijacker lo inoltra verso la destinazione vera dopo averlo intercettato). Secondo analisi recenti, essendo BGP una tecnologia con ~35 anni di età, è “facile da manipolare per reinstradare il traffico Internet o addirittura isolare intere regioni”. Infatti, casi documentati mostrano come in situazioni geopolitiche (es. crisi Crimea/Ucraina), BGP sia stato usato intenzionalmente per deviare traffico di intere aree verso infrastrutture sotto controllo di governi, creando di fatto “frontiere digitali” coerenti con quelle militari.

                  Le contromisure emergenti sono: RPKI (Resource Public Key Infrastructure), un sistema di certificati digitali che associa prefissi IP e numeri AS a enti legittimi, permettendo ai router di verificare se un certo AS è autorizzato ad annunciare un certo prefisso. Implementare RPKI e filtri di validazione (droppare annunci BGP non validati) riduce i rischi di hijack accidentali e rende più difficile quelli malevoli (che richiederebbero compromissione dei certificati). Inoltre, buone pratiche come i filtri BCP 38 anti-spoofing e l’obbligo per gli ISP di filtrare annunci in ingresso da clienti che non corrispondono ai loro IP (route filtering) riducono la superficie di attacco. In ambito di sicurezza nazionale, è auspicabile una stretta collaborazione con gli operatori di rete per assicurare che tali misure siano adottate, dato che un attacco BGP può essere usato anche come vettore per isolare un paese o spostare traffico attraverso nodi di sorveglianza (si pensi a un hijack temporaneo che dirotta traffico europeo via AS in un altro continente per spiarlo, poi lo rilascia verso la destinazione – tattica rilevata in alcune analisi di routing).

                  Un altro rischio BGP è l’instabilità o errore di configurazione: BGP è complesso ed errori nelle politiche possono causare route leak (annuncio di rotte ricevute da un provider verso un altro provider quando non dovrebbe, saturando percorsi imprevisti) o flapping (rotte che oscillano ripetutamente su/giù causando overhead). Questi incidenti possono avere impatti collaterali di sicurezza: un route leak può congestionare link inattesi, rallentando comunicazioni critiche o firewall, oppure un flapping eccessivo potrebbe stressare i router fino a farli riavviare per carico (causando DoS su interi segmenti di rete).

                  Ruolo del responsabile della sicurezza su BGP: per un’organizzazione che potrebbe gestire proprie infrastrutture di rete, è cruciale avere visibilità BGP. Ciò include utilizzare servizi di monitoring (es. RouteViews, RIPE Atlas) che avvisino se i prefissi dell’organizzazione vengono annunciati da AS esterni (potenziale hijack in corso) o se route importanti spariscono. In caso di incidente BGP, il responsabile deve saper interfacciarsi con i Network Operator Groups e CERT/CSIRT di settore per coordinare una risposta (ad esempio, diffondere rapidamente la notizia di non accettare annunci da AS X, o contattare l’operatore responsabile dell’annuncio spurio).

                  Inoltre, la comprensione di BGP è importante per valutare la resilienza delle comunicazioni critiche: per servizi governativi essenziali, ci si può assicurare multihoming (connessione a più ISP con diverse rotte) e preferire percorsi che minimizzino passaggi in zone a rischio. Ad esempio, se un paese teme spionaggio, potrebbe voler monitorare se il suo traffico passa per AS di altri paesi non amici e magari accordarsi con gli ISP per restrizione di routing. Strumenti di tracciamento (traceroute a livello AS) aiutano a mappare i percorsi.

                  Riassumendo, BGP è un protocollo potente ma datato, core di Internet e allo stesso tempo punto debole sfruttabile. Lo sforzo collettivo di mettere in sicurezza BGP (attraverso RPKI, monitoring e cooperazione tra ISP) è in corso e i professionisti di sicurezza devono essere partecipi: conoscere gli incidenti storici, sostenere l’adozione di misure protettive e includere scenari di attacco BGP nei propri piani di rischio (specialmente in contesti di infrastrutture critiche dove un attacco di routing può significare blackout comunicativo).

                  Il modello OSI (Open Systems Interconnection) è un modello di riferimento concettuale, proposto dall’ISO (International Organization for Standardization), che suddivide le funzioni di rete in sette livelli astratti. Anche se Internet pratica quotidiana segue più da vicino il modello TCP/IP a 4-5 livelli, l’OSI rimane uno schema didattico e progettuale prezioso: fornisce un linguaggio comune per descrivere dove si collocano protocolli e apparecchiature e come le diverse parti di una comunicazione interagiscono. I sette livelli del modello OSI, dal più basso (fisico) al più alto (applicazione), sono i seguenti:

                  • Livello 1: Fisico. Si occupa della trasmissione dei bit grezzi sul mezzo fisico di comunicazione. Definisce specifiche elettriche, meccaniche e funzionali per attivare, mantenere e disattivare collegamenti fisici. Ad esempio, stabilisce che forma d’onda e tensione rappresentano un “1” o uno “0”, il tipo di connettore e cavo (rame, fibra ottica), la modulazione usata in trasmissioni wireless, la sincronizzazione dei bit, etc.. Dispositivi tipici al livello fisico sono i repeater, gli hub Ethernet (che rigenerano il segnale su più porte) e i componenti come cavi, transceiver, antenne. Dal punto di vista della sicurezza, il livello fisico è spesso trascurato ma non privo di rischi: tapping su cavi (intercettazioni fisiche), interferenze elettromagnetiche intenzionali o accidentali e attacchi di jamming nel wireless (disturbo radio per negare il servizio) sono minacce di livello 1. Contromisure includono cablaggi schermati, monitoraggio di link (per rilevare disconnessioni o anomalie elettriche) e in ambienti critici l’uso di fibre ottiche (difficili da intercettare senza provocare perdite di segnale rilevabili).
                  • Livello 2: Collegamento Dati. Fornisce il trasferimento dei dati tra due nodi adiacenti (collegati dallo stesso mezzo fisico) in modo affidabile, strutturando i bit in frame e implementando controlli di errore e controllo di flusso su ciascun collegamento. Qui troviamo protocolli come Ethernet (IEEE 802.3) per le LAN cablate, Wi-Fi (IEEE 802.11) per le LAN wireless, PPP per collegamenti punto-punto, HDLC, ecc. Il livello 2 utilizza indirizzi fisici (MAC address per Ethernet) per identificare le schede di rete sorgenti e destinazione su un segmento. Funzioni chiave includono l’error detection (es. CRC per individuare frame corrotti e scartarli) e a volte l’error recovery (es. in collegamenti PPP può esserci ritrasmissione). Switch e bridge operano a questo livello, instradando frame in base agli indirizzi MAC e segmentando collision domains. Dal punto di vista sicurezza, il livello data link presenta minacce come MAC flooding (in cui un attaccante inonda lo switch di frame con MAC fittizi, saturando la CAM table e facendolo passare in modalità hub, favorendo sniffing), spoofing di MAC (un dispositivo assume l’identità MAC di un altro, magari per bypassare filtri MAC ACL o dirottare traffico destinato al legittimo) e attacchi specifici di tecnologie: ad esempio, ARP poisoning (avvelenamento cache ARP) sfrutta il protocollo di risoluzione indirizzi (tra livello 2 e 3) per associare un MAC dell’attaccante all’IP della vittima, di fatto intercettando il traffico locale. Strumenti come ettercap facilitano questo attacco, che può essere mitigato con tecniche come ARP statici o protocolli di sicurezza come DHCP Snooping e Dynamic ARP Inspection sugli switch gestiti. Sul Wi-Fi, il livello 2 è dove operano misure di cifratura come WPA2/WPA3: la protezione delle trame radio con cifre come AES-CCMP avviene qui. Dunque, la robustezza del livello 2 wireless (chiavi forti, autenticazione 802.1X con EAP, ecc.) è essenziale contro sniffing e accessi non autorizzati.
                  • Livello 3: Rete. È responsabile dell’instradamento (routing) dei pacchetti attraverso reti diverse, dal mittente finale al destinatario finale, potenzialmente passando per più nodi di commutazione (router). Il livello 3 introduce gli indirizzi logici (es. indirizzi IP) e si occupa di trovare percorsi e di gestire la congestione a livello di pacchetto. IP (Internet Protocol) è il protagonista (versione 4 e 6) a questo livello. Altri esempi includono protocolli legacy o specializzati come IPX, AppleTalk (quasi obsoleti) e protocolli di routing come ICMP potrebbe essere considerato tra 3 e 4 (di supporto al funzionamento di IP, es. con ping ed error message). I router operano al livello 3, guardando l’indirizzo di destinazione nei pacchetti IP e inoltrandoli secondo la routing table. La sicurezza a livello 3 coinvolge diversi aspetti: controllo degli accessi IP (liste di controllo accessi su router e firewall che permettono o bloccano traffico in base a IP sorgente/dest, protocollo e porta – benché la porta sia L4), protezione dell’integrità dei pacchetti (qui agisce ad esempio IPsec AH/ESP che aggiunge firma o cifratura a livello IP) e la robustezza contro attacchi di scansione e DoS basati su IP (ping of death, fragmentation attacks). Un amministratore deve implementare filtering appropriato (ad esempio: filtrare pacchetti in ingresso con IP sorgenti privati o palesemente spoofati – BCP 38, ingress filtering; bloccare protocolli non necessari come IPv6 se non in uso, o ICMP solo in modo controllato perché ICMP è utile per la diagnostica ma può essere abusato in tunneling o scansioni). Anche gli attacchi di tracciamento (es. traceroute abusato per mappare la rete) lavorano su livello 3/4 usando TTL manipolato; un SOC potrebbe rilevare e allertare se vede traceroute verso host interni, segno di ricognizione. In sintesi, il livello rete è dove si definiscono i confini della security perimeter: definire quali IP o segmenti possono comunicare, implementare segmentazione della rete (VLAN e routing intervlan con ACL) e applicare tecniche come network address translation (NAT) – che pur essendo nata per risparmiare IPv4, fornisce un effetto collaterale di mascheramento degli IP interni, aggiungendo oscurità verso l’esterno.
                  • Livello 4: Trasporto. Offre comunicazione end-to-end affidabile o non affidabile tra processi applicativi su host differenti. Due protocolli cardine qui sono TCP (orientato alla connessione, affidabile, con controllo di flusso) e UDP (datagrammi non connessi, non garantiti). Il livello trasporto identifica anche le porte (numeri che distinguono i flussi applicativi: es. porta 80 per HTTP su TCP, 53 per DNS su UDP, ecc.), permettendo la multiplexing di più conversazioni sulla stessa connessione di rete. Qui troviamo anche concetti come segmento (TCP segment) o datagramma (UDP). Dal punto di vista sicurezza, sul livello 4 agiscono molti controlli nei firewall stateful, che monitorano lo stato delle connessioni TCP e possono bloccare tentativi anomali (ad esempio pacchetti TCP non appartenenti ad alcuna connessione nota). Il port scanning è una tecnica di ricognizione di livello 4: un attaccante invia tentativi di connessione su varie porte per scoprire quali servizi sono attivi; strumenti come nmap variano i tipi di pacchetto (SYN scan, ACK scan, UDP scan) per inferire regole firewall e servizi. Un analista deve saper interpretare log come “Dropped packet from X to Y: TCP flags SYN” e capire che è uno scan. Inoltre, attacchi DDoS spesso si manifestano su questo livello: SYN flood (già descritto), o saturazione di porte specifiche (es. attacco a un server web saturando la porta 80 con richieste incomplete). Difese includono meccanismi antidos sui firewall e anche a livello di sistema operativo (stack TCP robusti con backlog di connessioni ampia, cookies, ecc.). I protocolli di trasporto hanno anche implicazioni su performance e perciò su rilevamento anomalie: es. un flusso TCP legittimo ha una certa sincronia tra pacchetti e ack; se un flusso esce dalle statistiche usuali (troppi RST, troppi ritrasmissioni) potrebbe indicare un problema o un attacco in corso di blocco. A livello trasporto si implementa anche la sicurezza delle sessioni in alcuni casi: per es., TLS (il protocollo usato per HTTPS) in realtà risiede sopra TCP (livello 5 OSI se consideriamo session/present, o direttamente come parte dell’applicazione), ma concettualmente fornisce sicurezza a ciò che il trasporto trasmette. In un contesto OSI, potremmo dire che l’inizio handshake TLS è livello 5 sessione (instaura un canale) e la cifratura/decifratura è presentazione (livello 6). Comunque, il responsabile di sicurezza deve sapere che firewall di nuova generazione possono operare fino al livello 7, ma spesso regole efficaci si definiscono su combinazioni di criteri L3/L4 (IP/porta) per bloccare accessi a servizi indesiderati o limitare provenienze.
                  • Livello 5: Sessione. Fornisce i meccanismi per controllare il dialogo tra due applicazioni, istituendo, gestendo e terminando sessioni di comunicazione. Una sessione è essenzialmente una comunicazione logica di lunga durata tra due entità, che può comprendere più scambi di dati. Funzioni tipiche del livello di sessione includono la gestione delle connessioni (apertura, autenticazione al livello di sessione, chiusura ordinata) e controllo del dialogo (chi può inviare in un dato momento, half-duplex vs full-duplex, sincronizzazione di checkpoint per riprendere trasferimenti interrotti). Nella pratica di Internet, il livello sessione non è molto distinto: protocolli come TLS/SSL possono essere visti come aggiungere una sessione sicura su TCP, o protocolli come NetBIOS session, RPC, PPTP ecc. definiscono sessioni sopra il trasporto. Dal punto di vista sicurezza, qui collochiamo concetti come autenticazione della sessione (per es., in TLS un client e server si autenticano e stabiliscono una sessione cifrata con ID di sessione), oppure gestione delle sessioni applicative (ad esempio i token di sessione HTTP per tenere traccia di un utente loggato su un sito – concettualmente livello 5/7). Le minacce includono il dirottamento di sessione (session hijacking), in cui un attaccante subentra in una sessione attiva rubando credenziali di sessione (es. cookie di autenticazione web non protetto) o per difetti del protocollo (un esempio storico: nel protocollo PPTP VPN c’erano weakness che permettevano di desincronizzare e prendere controllo della sessione). Un altro concetto di sessione è nel checkpointing: alcuni protocolli di trasferimento file lunghi implementano marker di sincronizzazione (per non ricominciare da capo se la sessione cade). Un attaccante potrebbe abusare del meccanismo di ripresa (resumption) se non ben protetto, per forzare trasferimenti incompleti o inserire dati. In contesti moderni, molti di questi dettagli sessione sono integrati nelle applicazioni (livello 7), quindi il livello 5 OSI è spesso citato in teoria più che implementato separatamente. Il coordinatore di sicurezza comunque deve assicurarsi che le sessioni, qualunque sia il contesto, siano protette: ad esempio, nelle applicazioni web la gestione sicura dei token di sessione (randomici, con scadenza, marcati HttpOnly e Secure se cookie) è cruciale per prevenire impersonificazione.
                  • Livello 6: Presentazione. Si occupa della sintassi e semantica dei dati scambiati tra applicazioni. In pratica, fornisce trasformazioni di dati che permettono a sistemi con convenzioni diverse di comunicare. Ciò include conversioni di formato (esempio: codifica dei caratteri – convertire testo Unicode in ASCII se il destinatario supporta solo quello), serializzazione di strutture complesse in un formato standard (tipo JSON, XML, ASN.1), compressione (per ridurre la mole di dati da trasmettere) e cifratura per garantire confidenzialità. Il livello di presentazione è quindi dove i dati grezzi dell’applicazione vengono preparati per la trasmissione e viceversa all’arrivo vengono rielaborati in forma utilizzabile dall’app. Un esempio concreto: in una connessione HTTPS, il contenuto HTTP vero e proprio viene cifrato a livello presentazione (TLS) e poi passato come flusso cifrato al livello trasporto (TCP) per l’invio. Nella sicurezza informatica, il livello 6 è cruciale perché è dove avvengono crittografia/decrittografia e codifiche. Ad esempio, molti attacchi web come XSS, SQLi, ecc., sfruttano mancate conversioni di formato (un input utente che andava interpretato solo come testo viene invece eseguito come codice). Una robusta “presentazione” in un’applicazione web significa escaping appropriato di caratteri speciali quando dati non fidati vengono inseriti in HTML, SQL, XML, ecc., per prevenire l’esecuzione indesiderata – in altri termini, difese come output encoding per XSS o query parametrizzate (che separano i dati dalla sintassi SQL) attengono a questo concetto. Dal punto di vista delle comunicazioni di rete, standard come TLS garantiscono che i dati in presentazione siano cifrati end-to-end: un responsabile deve assicurarsi che i servizi critici usino protocolli sicuri (es. preferire FTPS/SFTP a FTP in chiaro, HTTPS a HTTP, SSH a Telnet, ecc.) cosicché anche se il traffico viene intercettato a livello inferiore, risulti incomprensibile. Inoltre, il livello presentazione include la gestione di certificati digitali e formati di scambio: competenze in PKI e negoziazione di protocolli (quali ciphersuite TLS sono consentite, usi di TLS 1.3 vs deprecazione di SSLv3/TLS1.0 insicuri) rientrano tra quelle richieste a un esperto di sicurezza per garantire che i dati “presentati” in rete siano sempre protetti secondo lo stato dell’arte.
                  • Livello 7: Applicazione. È il livello più alto, quello con cui interagiscono direttamente le applicazioni software e, in ultima analisi, l’utente finale. Fornisce quindi i servizi di rete più vicini all’utilizzatore: protocolli di posta elettronica (SMTP per inviare, IMAP/POP3 per ricevere), web (HTTP/HTTPS), trasferimento file (FTP, SFTP), servizi directory (LDAP), accesso remoto (SSH, Telnet) e molti altri servizi specializzati (DNS stesso è considerato applicazione nel modello OSI, così come protocolli voce su IP come SIP/VoIP, etc.). Al livello applicazione si definiscono i formati dei messaggi di alto livello e le procedure di scambio specifiche di quello use case. Ad esempio, HTTP definisce come un client può richiedere una risorsa con un verbo (GET, POST, etc.) e come un server risponde con un codice di stato e eventuale contenuto; SMTP definisce i comandi per trasmettere email tra server; SSH definisce come incapsulare un terminale remoto sicuro. Dal punto di vista sicurezza, il livello applicazione è dove tipicamente risiedono le vulnerabilità logiche e di input più complesse: injection, buffer overflow applicativi, deserializzazione insicura, autenticazione debole, autorizzazioni errate e così via (molte delle categorie OWASP Top 10 per applicazioni web sono questioni di livello 7). Un responsabile per gli incidenti deve avere familiarità con i protocolli applicativi per riconoscere anomalie: es. traffico HTTP verso un server web che contiene comandi sospetti ( /admin/delete.php?id=1;DROP TABLE users) potrebbe indicare un attacco SQLi; oppure richieste LDAP malformate potrebbero segnalare un tentativo di exploit di Active Directory. Anche la modellazione delle minacce avviene in gran parte a livello applicazione: qui si chiede “cosa succede se un utente malintenzionato invia dati oltre i limiti?”, “cosa se effettua sequenze di API fuori ordine?”, etc. Ogni protocollo ha le sue particolarità: FTP ad esempio espone credenziali in chiaro se non è protetto e inoltre utilizza porte dinamiche (che i firewall devono gestire in modo speciale, con moduli helper, altrimenti può essere abusato per bypassare porte); SMTP può essere sfruttato per relay non autorizzati se non configurato bene (open relay) e per diffondere phishing/malware; HTTP è il veicolo di tantissimi attacchi, dai malware via download, al phishing via siti clone, fino alle exploit di librerie web.

                  Ai fini di prevenzione e gestione degli incidenti, è utile dotarsi di strumenti di Application Layer Security: WAF (Web Application Firewall) per analizzare il traffico HTTP e bloccare pattern malevoli noti (anche se non sostituisce il secure coding, è un utile layer difensivo), antivirus/antimalware gateway per controllare file trasferiti via protocolli applicativi (es. scanner SMTP per allegati email, o proxy HTTP con antimalware integrato) e sistemi di Data Loss Prevention (DLP) che analizzino il contenuto applicativo in uscita (es. per individuare stringhe che sembrano numeri di carta di credito o dati classificati e bloccarne l’esfiltrazione via email/web). Inoltre, la telemetria di livello 7 (log applicativi) è fondamentale in fase di risposta: i log di un server web (es. access log di Apache/Nginx) possono mostrare un pattern di exploit (decine di tentativi di accedere a wp-admin.php indicano un bot che cerca di violare WordPress), i log di un database possono mostrare query strane (tentativi di selezionare tabelle di sistema da un’app che non dovrebbe), i log di un server DNS possono indicare tunneling come detto. Un SOC ben organizzato correla eventi su più livelli: ad esempio, un alert IDS su un payload sospetto a livello 4+7 (un pacchetto TCP con dentro un comando SQL anomalo) incrociato con un log applicativo di errore database può confermare un tentativo di SQL injection riuscito o meno.

                  Integrazione e concetti trasversali: Una cosa importante da capire è che i livelli non sono completamente isolati: ogni livello aggiunge il suo overhead e le sue vulnerabilità possono propagarsi. Ad esempio, un attacco DDoS a livello 7 (come HTTP Flood, numerosissime richieste web) sfrutta comunque la connessione TCP sottostante: mitigarlo può richiedere azioni a livello 7 (rispondere con CAPTCHA, tarpit) ma anche a livello 4 (limitare connessioni per IP) e livello 3 (filtrare IP noti malevoli). Oppure, una falla a livello 2 come ARP poisoning può portare a Man-in-the-Middle che intercetta e poi manipola dati di livello 7 (inserendo script malevoli nel traffico web, se questo non è cifrato). Conoscere l’OSI aiuta a compartimentalizzare i problemi e a parlare con gli specialisti giusti: ad esempio, se si riscontra che “le email non arrivano a destinazione”, potrebbe essere un problema di livello 7 (misconfigurazione SMTP, o bloccate per contenuti), livello 3 (routing verso il mail server errato) o altro; il modello OSI offre un approccio per isolare: ping (L3), telnet porta 25 (L4), analisi logs SMTP (L7) e così via. Nella risoluzione di incidenti, spesso si “risale la pila OSI” per individuare dove esattamente risiede il fault o l’attacco.

                  In conclusione, il modello OSI con i suoi 7 livelli – Fisico, Collegamento dati, Rete, Trasporto, Sessione, Presentazione, Applicazione – è uno strumento concettuale che aiuta a progettare, proteggere e diagnosticare le reti di calcolatori. Ogni livello introduce considerazioni di sicurezza specifiche e un responsabile per la sicurezza informatica deve averne padronanza per implementare una strategia di difesa in profondità: multiple protezioni sovrapposte attraverso la pila, cosicché anche se un attacco aggira un livello (es. malware che viaggia cifrato su HTTPs – invisibile al firewall L7), venga intercettato a un altro (es. analisi comportamentale al livello applicazione endpoint, o decrittazione in un proxy per l’ispezione). Lo standard ISO/OSI stesso, pur teorico, ha generato protocolli e influenzato architetture – conoscere ad esempio che X.509 (certificati) nasce da standard OSI di presentazione, o che LDAP è figlio di X.500 (applicazione OSI), arricchisce la comprensione storica e pratica che torna utile quando si incrociano sistemi eterogenei (ad es. integrazione di vecchi sistemi mainframe o SCADA che a
                  volte ancora usano stack particolari).

                  Un algoritmo è una procedura definita, costituita da una sequenza finita di istruzioni, che risolve un problema o svolge un determinato compito. In informatica, gli algoritmi rappresentano le ricette operative per qualsiasi programma: dal semplice calcolo di una somma alla crittografia avanzata, tutto si riduce a passi elementari che il calcolatore esegue. Formalmente, si richiede che un algoritmo abbia alcune proprietà: finitezza (deve terminare in un numero finito di passi), determinismo (stessi input producono stessi output, a meno di componenti aleatorie volute), non ambiguità (ogni passo è definito in modo univoco, interpretabile senza dubbio) e generalità (risolve una classe di problemi, non un solo caso specifico).

                  Esempi di algoritmi classici includono: l’algoritmo di ordinamento (ordinare una lista di numeri o stringhe – con varianti famose come QuickSort, MergeSort, HeapSort, etc.), algoritmi di ricerca (trovare un elemento in una collezione – es. ricerca lineare vs ricerca binaria in una lista ordinata), algoritmi di grafi (cammini minimi, visite in profondità/ampiezza, ecc.), algoritmi di ottimizzazione (zaino, percorso più breve, flusso massimo) e tanti altri. Nella pratica quotidiana, un professionista di sicurezza può incontrare algoritmi ad esempio nell’analisi di performance di un sistema (sapere se una certa operazione è O(n) lineare o O(n^2) quadratica aiuta a capire se un attacco di stress potrebbe causare rallentamenti significativi), oppure nella comprensione di meccanismi crittografici (dove la solidità di un algoritmo di cifratura spesso si basa su problemi computazionalmente difficili, come la fattorizzazione dei grandi numeri primi per RSA).

                  Complessità computazionale: uno degli aspetti fondamentali nello studio degli algoritmi è la loro complessità, cioè la quantità di risorse (tempo di calcolo, spazio di memoria) che richiedono in funzione della dimensione dell’input. La complessità in termini di tempo viene di norma espressa tramite la notazione O-grande, che fornisce un limite superiore asintotico sulla crescita del costo computazionale al crescere di n (taglia input). Ad esempio, dire che un algoritmo è O(n log n) significa che per gestire input più grandi, il suo tempo cresce proporzionalmente a n log n. In generale, classifichiamo le complessità asintotiche in classi come: costante O(1), logaritmica O(log n), lineare O(n), quasi-lineare O(n log n), quadratica O(n^2), cubic O(n^3), …esponenziale O(2^n) e oltre. Chiaramente, algoritmi più efficienti sono preferibili – un problema risolvibile con un algoritmo O(n) sarà gestibile per input grandi molto meglio di uno O(n^2). Per contestualizzare: in un attacco di forza bruta, provare tutte le combinazioni di una password di lunghezza n può essere ~O(k^n) (esponenziale nel numero di caratteri se ogni posizione ha k possibilità), il che spiega perché aumentando lunghezza e complessità delle password la ricerca esaustiva diventa impraticabile.

                  Per un responsabile alla sicurezza, la teoria degli algoritmi ha ricadute pratiche. Un esempio evidente è nella crittografia: la sicurezza di molti algoritmi crittografici è legata alla complessità computazionale di certi problemi. RSA, ECC, Diffie-Hellman si basano sul fatto che alcuni problemi (fattorizzazione di interi grandi, logaritmo discreto in certi gruppi) sembrano richiedere tempo esponenziale con i migliori algoritmi noti: quindi, con chiavi abbastanza lunghe, la brute force diventa impossibile nei tempi dell’universo (a meno di progressi algoritmici o quantistici). Comprendere questo aiuta a scegliere parametri sicuri: ad esempio, sapere che il migliore algoritmo di fattorizzazione noto ha complessità sub-esponenziale (sì, c’è il Number Field Sieve che è circa O(exp( (64/9)^(1/3) * (log n)^(1/3) * (log log n)^(2/3) )) ), consente ai crittografi di stimare quanti bit di RSA servono (oggi almeno 2048-bit) per resistere X anni. Un altro esempio: gli algoritmi di hashing (SHA-256, SHA-3) sono progettati per essere veloci da calcolare ma non invertibili senza provare molte possibilità. La difficoltà di trovare collisioni in SHA-256 è legata a dover provare 2^128 operazioni (complessità bruteforce). Se un attaccante scoprisse un algoritmo molto migliore (es. O(2^64)), quell’hash non sarebbe più sicuro. Dunque, chi lavora in sicurezza deve seguire anche le scoperte nel mondo algoritmi (ad esempio, i recenti progressi su SHA-1 collisioni hanno reso questo hash deprecato). E ovviamente il calcolo quantistico promette di ridurre drasticamente la complessità di alcuni problemi: Shor’s algorithm porta la fattorizzazione a complessità polinomiale, distruggendo RSA/ECC una volta che avremo quantum computer abbastanza grandi.

                  Al di là della crittografia, l’analisi degli algoritmi è utile per ottimizzare le difese e attacchi. Dal lato difensivo: un SIEM che raccoglie log deve avere algoritmi di correlazione efficienti, altrimenti con milioni di eventi genererà ritardi – un buon coordinatore sa scegliere strumenti validi o architetture big data (es. utilizzare motori come Elasticsearch che usano algoritmi di ricerca efficaci). Dal lato offensivo: alcuni attacchi DoS sfruttano algorithmic complexity attacks, ad esempio l’HashDoS (inviare tanti input calibrati per provocare collisioni in una tabella hash usata dall’applicazione, degradando le look-up da O(1) a O(n) e bloccando il server) – questo fu dimostrato su Java, PHP e altri linguaggi, costringendo a migliorare gli algoritmi di hashing o introdurre randomizzazione. Un altro esempio sono i ReDoS (Regular Expression Denial of Service): usare input particolari per mandare in worst-case l’algoritmo di matching delle espressioni regolari (che in alcuni engine può diventare esponenziale). Questi sono attacchi sottili che richiedono comprensione di come un algoritmo risponde al worst-case.

                  Strutture dati e algoritmi: spesso insieme agli algoritmi si studiano le strutture dati (array, liste, pile, code, alberi, grafi, tabelle hash, ecc.), che influiscono sulle prestazioni. Una buona scelta di struttura può prevenire inefficienze – es: cercare elementi duplicati in un array fa O(n^2) naive, ma usando una hash set diventa O(n) mediamente. Nella sicurezza software, questo significa anche prevenire vulnerabilità di prestazioni: se un input controllato dall’utente potrebbe indurre il programma a usare un algoritmo quadratico, un attaccante può sfruttarlo per rallentarlo. Ad esempio, generare intenzionalmente situazioni pessime (come l’HashDoS citato). Dunque, parte del secure coding è anche evitare costrutti algoritmicamente rischiosi o porre limiti (ad esempio, limitare lunghezza massima di input per evitare loop troppo lunghi).

                  P vs NP e problemi intrattabili: un concetto teorico ma con implicazioni è la distinzione tra problemi in P (risolvibili in tempo polinomiale) e in NP (verificabili in polinomiale, ma non si conosce algoritmo polinomiale per risolverli). Molti problemi di ottimizzazione o ricerca combinatoria sono NP-difficili (come il Traveling Salesman, il Subset Sum, ecc.). Per la sicurezza, questo spiega perché certi obiettivi dell’attaccante sono difficili: ad esempio, craccare un cifrario robusto equivale a cercare nello spazio delle chiavi (che cresce esponenzialmente col numero di bit). Oppure, un software antivirus che voglia decidere in generale se un programma è malevolo va incontro al problema della fermata e questioni indecidibili; per questo gli antivirus usano euristiche imperfette – capire i limiti computazionali ci fa comprendere perché non esiste e probabilmente non esisterà mai “l’algoritmo perfetto” per distinguere malware da software legittimo in ogni caso (problema indecidibile, riducibile all’halting problem). Quindi si lavora per euristiche (firma, comportamento) sapendo che esisteranno falsi negativi/positivi.

                  Algoritmi distribuiti e fault tolerance: In un contesto come la sicurezza nazionale, con infrastrutture distribuite, è importante conoscere anche gli algoritmi per consenso distribuito (es. Paxos, Raft) e per gestione di guasti – questi sono algoritmi non banali che garantiscono consistenza e disponibilità su più nodi; la sicurezza di sistemi come blockchain, oppure di sistemi cluster per servizi critici, discende dalla solidità di tali algoritmi. Ad esempio, la robustezza di una blockchain dipende dall’algoritmo di consenso (Proof of Work è un “algoritmo” in senso lato con complessità regolata dalla difficoltà, BFT consensus ha tolleranza fino a f nodi corrotti se N > 3f, ecc.).

                  In sintesi, i fondamenti di algoritmi equipaggiano il professionista con un approccio analitico ai problemi: capire l’ordine di grandezza di un attacco brute-force, valutare l’impatto prestazionale di una misura di sicurezza (es. criptare tutto il traffico aggiunge overhead, ma di quanto?), scegliere strumenti in base alla scala (un SIEM con algoritmi subottimali funzionerà su 1k eventi al secondo ma non su 100k eps). La è quindi parte del bagaglio di un coordinatore, sebbene non debba implementare algoritmi da zero quotidianamente, deve saperne leggere i risultati e conversarci: ad esempio, comprendere un report che dice “la complessità computazionale di rompere AES-256 è di 2^254 operazioni, che con i mezzi attuali è impraticabile” oppure “un attacco di tipo meet-in-the-middle riduce la complessità su 2DES da 2^112 a 2^57, ecco perché 2DES non è considerato sicuro”. Senza basi sugli algoritmi, tali affermazioni sarebbero aride; con le basi, diventano guida all’azione (passare direttamente ad AES o 3DES perché 2DES è debole, ecc.). Dunque la padronanza degli algoritmi e della loro complessità permette di valutare rischi in modo quantificabile e di progettare contromisure efficaci.

                  I linguaggi di programmazione sono gli strumenti con cui vengono implementati gli algoritmi e le funzionalità software. Esistono centinaia di linguaggi, ma essi possono essere classificati per paradigma in base allo stile con cui si descrivono le istruzioni e i dati. In questa sezione ci focalizziamo su tre categorie importanti: linguaggi imperativi, linguaggi di scripting e linguaggi orientati agli oggetti.
                  Ognuno di questi paradigmi presenta caratteristiche peculiari, vantaggi, limitazioni e implicazioni per la sicurezza del codice prodotto.

                  Linguaggi imperativi (procedurali)

                  La programmazione imperativa è il paradigma classico in cui un programma è visto come una sequenza di istruzioni che modificano lo stato del programma stesso (variabili, strutture dati) per ottenere il risultato desiderato. In altre parole, l’attenzione è sul come fare le cose: si specificano esplicitamente i passi da seguire, in ordine, includendo strutture di controllo come assegnamenti, cicli ( for , while ), condizionali ( if / else ), chiamate di funzioni/procedure, ecc. La maggior parte dei linguaggi tradizionali rientrano in questo paradigma: linguaggi procedurali come C, Pascal, BASIC, Fortran (dove esistono procedure e funzioni come unità di modularizzazione) sono imperativi; anche il linguaggio Assembly (di basso livello) è imperativo puro, in quanto si scrivono istruzioni macchina che cambiano registri e memoria step-by-step. Persino linguaggi come Java o Python supportano uno stile imperativo (Python, ad esempio, pur essendo multi-paradigma, permette di scrivere codice procedurale imperativo). Caratteristiche tipiche di linguaggi imperativi/procedurali includono la gestione esplicita della memoria (in C, ad esempio, con malloc / free o lo stack frame delle funzioni), l’uso di variabili mutate nel corso dell’esecuzione e un flusso di controllo che può usare costrutti come goto (nei casi più base) o strutture strutturate. Il codice imperativo rispecchia l’architettura di von Neumann: infatti questi linguaggi sono “vicini al modo in cui lavora l’elaboratore”, aggiornando locazioni di memoria e eseguendo istruzioni in sequenza.

                  Implicazioni per la sicurezza: nei linguaggi imperativi a basso livello (es. C, C++, assembler) sta l’origine di molte vulnerabilità classiche, proprio perché lasciano molto controllo (e responsabilità) al programmatore. Ad esempio, la gestione manuale della memoria in C/C++ è fonte di bug quali buffer overflow, use-after-free, double free, integer overflow e così via, che se non prevenuti portano ad exploit di memoria e code execution arbitraria. Un responsabile della sicurezza deve conoscere bene questi rischi: ad esempio, l’attacco stack buffer overflow sfrutta il fatto che in C si possono scrivere dati fuori dai limiti di un array, andando a sovrascrivere il return address di funzione nello stack; mitigazioni come canary, ASLR, NX bit sono stati sviluppati per attutire il problema, ma la vera soluzione è scrivere codice robusto (o usare linguaggi che prevengono out-of-bounds, come Java o Rust). Nei contesti dove la performance e il controllo spingono a usare C/C++ (kernel OS, driver, sistemi embedded, highperformance computing), è cruciale adottare standard di codice sicuro (es. CERT C Coding Standard) e strumenti di analisi (sanitizer, static analysis) per ridurre i bug imperativi.

                  Nei linguaggi imperativi di più alto livello (es. Java, che è orientato agli oggetti ma si può vedere come imperativo nel flusso; o Python se scrivi script procedurali), molti errori di memoria sono evitati (garbage collector, check runtime su array, ecc.), ma persistono problemi come la gestione delle condizioni di errore, la concorrenza (race conditions se thread paralleli accedono a variabili condivise), etc. Il paradigma imperativo incoraggia l’uso di stato mutabile e questo è terreno di race condition e TOCTOU (Time-of-check to time-of-use) bugs: ad esempio, un programma imperativo multi-thread potrebbe controllare l’esistenza di un file e poi aprirlo; se tra check e open passa tempo e un attaccante cambia il file (symlink attack), abbiamo un TOCTOU bug. Un responsabile deve sapere che certe classi di vulnerabilità (soprattutto in codice multi-thread o multi-processo) derivano dalla difficoltà di ragionare su stato mutabile e tempi di esecuzione – ecco perché paradigmi alternativi (es. la programmazione funzionale, che evita stato mutabile) vengono talvolta adottati per ridurre bug, ma la maggioranza del codice rimane imperativo.

                  In campo offensivo, conoscere la natura imperativa dei programmi aiuta a fare reverse engineering: ad esempio, i malware scritti in C/C++ compilano in assembly macchina e un analista dovrà interpretare quell’assembly come un flusso di operazioni (imperative) per capire cosa fa il malware. Saper leggere pseudocodice imperativo o flusso di un binario è competenza essenziale in analisi malware/forense.

                  Esempi di linguaggi imperativi popolari: C (usato per kernel, sistemi operativi, software di rete; critico per exploit), C++ (che aggiunge oggetti ma resta principalmente imperativo, usato in applicativi veloci, anche in diversi malware avanzati), Ada (in ambito aerospaziale, focus su sicurezza e affidabilità), Go (Google Go, imperativo concurrent, con gestione memoria automatica e forte supporto al multithread – spesso usato per strumenti di rete e cloud, la sua semplicità riduce alcune classi di bug rispetto a C) e tanti altri incl. Rust (che pur supportando vari stili viene spesso usato in modo imperativo ma “memory safe” grazie al suo sistema di proprietà).

                  Linguaggi di scripting

                  Un linguaggio di scripting è tipicamente un linguaggio interpretato, di alto livello, pensato per automatizzare compiti in un ambiente runtime esistente. Il termine deriva dal fatto che inizialmente questi linguaggi erano usati per scrivere script (copioni) che eseguono operazioni su sistemi operativi o applicazioni, invece che per sviluppare applicazioni stand-alone complesse. Caratteristiche comuni dei linguaggi di scripting includono: tipizzazione dinamica (non occorre dichiarare esplicitamente il tipo delle variabili), gestione automatica della memoria (garbage collection), sintassi semplice e concisa, e disponibilità di un ambiente interpretativo (shell, REPL) dove eseguire i comandi al volo.
                  Esempi classici sono bash/sh (scripting di shell Unix), JavaScript originariamente scripting client-side per i browser, oggi grazie a Node.js usato anche lato server), Python, Perl, Ruby, PHP, PowerShell (scripting avanzato su Windows), ecc. Questi linguaggi spesso interagiscono con un sistema più grande: ad esempio, JavaScript in una pagina web manipola l’HTML/CSS e il browser funge da runtime; Python può essere usato come script per automazione di task di sistema, o incorporato in applicazioni; PHP è un linguaggio di scripting lato server per generare contenuti web dinamici; Bash orchestrа comandi del sistema operativo e programmi.

                  Il vantaggio dei linguaggi di scripting è la produttività e la facilità d’uso: permettono di sviluppare rapidamente funzionalità senza gestire i dettagli di basso livello (gestione memoria, compilazione). Questo li rende ideali per la scrittura di strumenti di automazione, estrazione di dati, prototipazione, e (nel nostro contesto) per molti script e tool di sicurezza. Un analista di sicurezza scrive comunemente script Python o Bash per analizzare log, per eseguire scansioni personalizzate, per automatizzare reazioni a incidenti (es. uno script che disattiva automaticamente un account sospetto su più sistemi, integrandosi via API).

                  Implicazioni per la sicurezza: Da un lato, usando linguaggi di scripting si evitano molte vulnerabilità tipiche del C (buffer overflow, ecc.), quindi per script e tool interni spesso si preferisce Python o PowerShell per ridurre rischi di bug memory corruption. Dall’altro lato, i linguaggi di scripting portano sfide proprie: essendo spesso interpretati, il codice può essere più facilmente letto/modificato da un attaccante se trova gli script sul sistema (a meno di offuscazioni); e poiché molti sono usati in contesti di elevati privilegi (si pensi a script Bash lanciati come root per manutenzioni, o script PowerShell per amministrazione di dominio), diventano bersagli: gli attaccanti possono tentare di alterare script esistenti (supply chain, se uno script viene scaricato da internet e poi eseguito con fiducia – come a volte succede con script di installazione), oppure usarli a proprio vantaggio (es. se un webserver permette di caricare ed eseguire file PHP, l’attaccante può caricare una web shell PHP, sfruttando il linguaggio di scripting del server per eseguire comandi arbitrari sul sistema). Ciò sottolinea la necessità di trattare gli script come codice a tutti gli effetti: revisionare la sicurezza, proteggerli con controlli di integrità, limitarne i permessi di esecuzione, ecc.

                  Nei sistemi, spesso i linguaggi di scripting fungono da collante: ad esempio, un attaccante che abbia compromesso un server Linux potrebbe scrivere uno script bash per mantenere la persistenza (inserendolo magari in /etc/init.d per avviarsi al boot) o per esfiltrare dati periodicamente. Dunque, chi gestisce la sicurezza deve monitorare non solo eseguibili compilati ma anche i file di script, e utilizzare strumenti tipo OSSEC o Tripwire per notare modifiche anomale a script chiave.
                  Le applicazioni web scritte in linguaggi di scripting (PHP, Python via Django/Flask, JavaScript via Node.js) ereditano i rischi di vulnerabilità applicative (XSS, injection, etc.), con la differenza che essendo i linguaggi spesso molto dinamici può essere più facile introdurre errori se non si seguono regole (es. in PHP, un tempo la registrazione globale delle variabili portava a vulnerabilità se non attenta; in Node.js, la presenza di un ricco ecosistema di package richiede attenzione alla supply chain e a aggiornare le dipendenze per evitare moduli malevoli).

                  Esempi pratici in scenario di sicurezza: uno script Python può essere scritto per analizzare i pacchetti di rete (usando Scapy) e rilevare un pattern di scansione, inviando alert. Oppure script Bash vengono usati negli SIEM per parsare formati di log e normalizzarli. Con PowerShell, un team di incident response può interrogare in modo massivo tutte le macchine di un dominio cercando indicatori di compromissione – infatti, oggi gli attaccanti stessi usano PowerShell per i loro scopi (PowerShell Empire e altri framework di post- exploitation): ciò perché con script si integrano nativamente nell’ambiente senza portare eseguibili che possano essere bloccati da whitelist. Un reaponsabile deve essere consapevole di queste tattiche e, ad esempio, abilitare PowerShell Logging e Constrained Language Mode su host Windows per avere visibilità e limitare l’uso malevolo.

                  In sintesi, i linguaggi di scripting sono potenti e flessibili; per la difesa informatica sono armi essenziali (per automazione e integrazione), ma vanno gestiti con regole di sicurezza come qualsiasi codice: controllo delle entrate (validazione input negli script), least privilege (non far girare script con privilegi oltre il necessario), mantenimento (aggiornare le versioni interpreter – molte falle in PHP/Python stesso corrette con patch), e rilevamento di abuso (monitorare esecuzioni anomale, come un utente non amministrativo che improvvisamente lancia script PowerShell con comandi di dumping credenziali).

                  Linguaggi orientati agli oggetti (OOP)

                  La programmazione orientata agli oggetti (Object-Oriented Programming, OOP) è un paradigma in cui il software viene modellato come un insieme di oggetti che interagiscono tra loro scambiandosi messaggi (chiamando metodi l’uno dell’altro). Un oggetto incapsula stato (dati, sotto forma di attributi/variabili) e comportamento (funzionalità, sotto forma di metodi/funzioni). I linguaggi OOP offrono costrutti come classi (definizioni generiche da cui istanziare oggetti concreti), ereditarietà (una classe può derivare da un’altra ereditando attributi e metodi, consentendo specializzazione e riuso del codice), polimorfismo (il fatto che chiamate a metodi possano riferirsi a implementazioni diverse in classi diverse, tipicamente via overriding – es. diversi oggetti tipo Figura con metodo disegna() implementato diversamente in Cerchio, Quadrato), e incapsulamento (detto sopra: la capacità di nascondere i dettagli interni di un oggetto e offrire solo interfacce pubbliche – spesso con modificatori di accesso come public/private/protected).

                  L’OOP nasce per gestire meglio la complessità di grandi progetti software, modellando entità vicine al dominio reale e promuovendo modularità e riusabilità. Ad esempio, in un sistema bancario si potrebbero avere classi Conto, Transazione, Cliente con relazioni di composizione e specializzazione (un ContoCorrente estende Conto aggiungendo un fido, etc.). Linguaggi strettamente OOP includono Java, C#, C++ (ibrido, multi-paradigma ma con forte supporto OOP), Python (multi-paradigma ma con OOP completo), Ruby, JavaScript (che in realtà è basato su prototipi, ma concettualmente OOP), ecc. Oggi, OOP è forse il paradigma dominante nello sviluppo di applicazioni enterprise.

                  Implicazioni per la sicurezza: la programmazione a oggetti porta benefici di organizzazione, ma introduce anche superfici di attacco peculiari. Ad esempio, la presenza di gerarchie di classi e funzioni virtuali apre il fianco a attacchi come l’overwrite di puntatori virtuali in exploit memory corruption (in C++ un oggetto ha un vtable pointer – se un buffer overflow sovrascrive quel puntatore, un attaccante può far eseguire codice arbitrario quando il programma chiamerà un metodo virtuale dell’oggetto). Questa è una considerazione bassa, valida solo in linguaggi non memory-safe (C++): mitigazioni come Control Flow Guard di Microsoft cercano proprio di impedire salto a vtable rogue.

                  Dal punto di vista di design, l’OOP a volte incoraggia un’eccessiva fiducia sugli oggetti – ad esempio, concetti come l’esecuzione di codice mobile: Java Applet, ActiveX, .NET assemblies, tutti casi in cui oggetti provenienti da terze parti vengono eseguiti localmente, con meccanismi di sandbox vari (Java aveva il security manager per applet, ActiveX si basava su firme digitali – con noti problemi se l’utente autorizzava un controllo malevolo). Questo scenario di mobile code necessita che i runtime siano robusti nel far rispettare i confini (spesso non lo furono, portando a deprecazione di tali tecnologie).

                  Un altro punto: i framework ad oggetti (tipici in Java, C#) che fanno ampio uso di riflessione e serializzazione. La serializzazione di oggetti è la capacità di convertire un oggetto in una forma (tipicamente binaria o testuale) per salvarlo o trasmetterlo, e poi ricostruirlo. Questo meccanismo ha portato a exploit come le deserialization vulnerabilities: se un’app accetta da input un oggetto serializzato (ad esempio, un token di sessione Java serializzato inviato nel cookie) un attaccante potrebbe manipolarlo per far istanziare oggetti malevoli o con stati inconsistenze. Ci sono state grosse vulnerabilità (es. CVE di Apache Commons-Collections e altri, dove un oggetto opportunamente costruito portava all’esecuzione di comandi arbitrari durante la deserializzazione, perché la classe aveva blocchi statici o metodi finalize con chiamate pericolose). Un responsabile deve conoscere questi pattern: ad esempio, in pen test su applicazioni Java enterprise, la deserializzazione non sicura è un must-check. La best practice è evitare la deserializzazione di oggetti da fonti non fidate, o usare formati sicuri (JSON, protocolli con schema), o whitelisting di classi deserializzabili.

                  Controllo degli accessi a oggetti: OOP a volte induce a pensare che i controlli possano essere fatti a livello di oggetto, ma in ambienti multi-utente/multi-tenant non basta. Ad esempio, in un’app web OOP potrebbe esserci metodo Documento.approva(); ma bisogna assicurarsi a livello applicativo che l’utente X possa approvare solo i documenti di sua competenza. Ciò porta a vulnerabilità come Insecure Direct Object Reference (IDOR): se l’app espone un endpoint /documento/approva?id=123 che chiama internamente doc.approva(), un utente malintenzionato potrebbe fornire un id di un documento che non dovrebbe poter modificare e se manca il controllo, l’oggetto viene comunque recuperato e il metodo invocato (violazione autorizzazione). L’approccio OOP puro a volte fa sottovalutare questo – perché a livello di codice, chiamare il metodo è lecito, ma manca il contesto di sicurezza. Quindi, un principio: integrare controlli di autorizzazione in tutti i metodi sensibili, oppure usare un framework di sicurezza (es. Spring Security) che si integri con l’OOP (annotation tipo @PreAuthorize su metodi, ecc.).

                  Benefici OOP per la sicurezza: d’altro canto, se ben applicato, OOP migliora la sicurezza del codice: l’incapsulamento può prevenire accessi indesiderati – se tutti gli campi sono private e l’oggetto valida i dati tramite setter, è più difficile corrompere lo stato. L’ereditarietà e polimorfismo possono favorire la scrittura di checker di sicurezza generici: ad esempio, una classe base Utente con metodo virtuale haPermesso(azione) può essere implementata diversamente in UtenteStandard e Admin, permettendo all’app di chiedere genericamente utente.haPermesso("DELETE_USER") senza conoscere la classe concreta – design pulito che centralizza logica di auth. Tuttavia, se un attaccante riesce a far istanziare una sottoclasse controllata (vedi problema deserialization su classpath), quell’interfaccia generica potrebbe rispondere “sì ho permesso” falsamente. Perciò la riflessione insegna: l’OOP va usato con coscienza e meccanismi magici come riflessione, dependency injection, ecc. vanno vigilati. Ad esempio, i container di inversion of control (Spring, etc.) automaticamente viranano dipendenze tra oggetti; se configurati male, potrebbero esporre bean sensibili su canali remoti (vedi ad es. JMX misconfigurato, o endpoint actuator in Spring Boot esposti senza auth, che permettono di manipolare runtime).

                  In termini di linguaggi concreti: Java e C# sono fortemente tipizzati e gestiti, riducono molti errori (no buffer overflow classici), ma ricordiamo incidenti come Log4Shell (una vulnerabilità in un logger che attraverso un lookup JNDI permetteva di scaricare un oggetto remoto – combinazione di serializzazione, rete e riflessione). Dunque, anche se il linguaggio previene certi bug, rimane la superficie dei runtime environment (JVM, .NET) e delle librerie di base. C++ aggiunge OOP al C ma mantiene la pericolosità del controllo manuale: così somma rischi (memory + OOP). Sviluppatori esperti possono scrivere codice sicuro, e moderne guidelines (C++ Core Guidelines) spingono a usare costrutti sicuri (smart pointer invece di raw pointer, etc.), ma molto codice legacy è vulnerabile. Python, JavaScript, PHP, Ruby supportano OOP ma in modo dinamico: qui la flessibilità è massima (es. in Python puoi aggiungere attributi a runtime agli oggetti, in JavaScript modificare prototipi al volo), e questo dinamismo può essere sfruttato malevolmente. Ad esempio, Prototype Pollution in JavaScript: se una libreria non isola bene i dati, un attaccante può iniettare proprietà nell’Object prototype globale, influenzando tutti gli oggetti (impatto a cascata su app intera). Ciò evidenzia che la surface di errori si sposta: meno memory corruption, più logiche e inconsistenze.

                  Paradigmi misti: molti team oggi adottano linguaggi multi-paradigma (es. Python, JavaScript) o abbracciano stili come la programmazione funzionale all’interno di contesti OOP (es. metodi immutabili, uso di lambda e stream in Java). La programmazione funzionale riduce certi bug (immutatibilità -> no race, no side effects difficili), ma non sempre è praticabile da sola (sistemi I/O, UI etc. spesso sono più facilmente espressi con oggetti). Tuttavia, un responsabile dovrebbe promuovere “il giusto strumento per il lavoro”: in componenti dove la robustezza è critica, valutare linguaggi memory-safe (Java, C#) o addirittura “provably safe” (es. Rust in sistemi), oppure script come Python per prototipi e analisi rapida sapendo che saranno un po’ più lenti. Per parti performance-critical ma delicate, considerare tecniche di verifica (es. strumenti di static analysis, o addirittura approcci formali se giustificato, come SPARK/Ada per software militare).

                  Sicurezza e ciclo di vita del software: indipendentemente dal linguaggio o paradigma, contano i processi: code review, static analysis, fuzzing, patching, gestione dipendenze (questo soprattutto in scripting: pip/npm composer – supply chain risk). Un responsabile dovrebbe assicurarsi che i team di sviluppo seguano secure coding guidelines e che ogni linguaggio usato abbia i suoi checker (es. linters, SonarQube ruleset per Java, ESLint/Retire.js per JS, Bandit per Python, PHPStan per PHP, ecc.).

                  In conclusione, comprendere i vari tipi di linguaggi e paradigmi consente a un responsabile della sicurezza di dialogare efficacemente con gli sviluppatori e valutare i rischi del software in esame. Ad esempio, se un nuovo sistema da proteggere è scritto in C++ con moduli Python embedded (come a volte succede in tool scientifici), egli saprà che deve considerare sia vulnerabilità a basso livello (C++) sia di alto livello (injection possibili in Python eval? ecc.). Se invece la sua organizzazione passa a microservizi in Node.js e Go, studierà gli specifici pitfalls (Prototype pollution, moduli npm malevoli, vs concurrency issues e memory usage in Go). In definitiva, la diversità di linguaggi riflette la diversità di problemi da risolvere; per la sicurezza informatica, ogni linguaggio/paradigma aggiunge un tassello: conoscendoli, si può implementare difese profonde (ad esempio: firewall WAF che riconosce attacchi comuni in PHP vs in Node), e soprattutto prevenire incidenti formando i team di sviluppo sulle giuste pratiche per quel contesto (ad es., per Java: “attenti alla deserializzazione di oggetti”; per C: “usa snprintf invece di sprintf per prevenire overflow”; per JavaScript: “valida bene input prima di usarli in DOM manipulations per evitare XSS”, e così via). Un professionista completo di sicurezza sa quindi muoversi trasversalmente tra il codice, individuando pattern pericolosi e suggerendo soluzioni appropriate al paradigma in uso.

                  Il diritto all’oblio nella società digitale: “right to be forgotten” nell’Internet che non dimentica

                  In questo articolo si discute il ruolo della memoria e dell’oblio nella costruzione dell’identità personale e sociale, confrontando l’era pre-digitale con l’attuale epoca digitale. Nell’era pre-digitale, la diffusione delle informazioni era limitata e controllata principalmente dai media tradizionali. Tuttavia, l’avvento di Internet ha radicalmente cambiato questa situazione, consentendo un’ampia diffusione e accessibilità delle informazioni, con la possibilità di conservare il passato in un “quasi eterno presente”. Questo aumento esponenziale delle informazioni online presenta rischi per l’individuo, come la perdita della dimensione cronologica delle notizie e il potenziale deterioramento dell’immagine personale a causa dell’accesso alle informazioni passate. Viene, inoltre, proposto il “diritto all’oblio” come uno strumento di tutela per impedire che eventi passati influenzino negativamente l’immagine attuale di una persona. L’attenzione viene posta, altresì, all’evolversi del concetto di oblio nel tempo, l’impatto della transizione al mondo digitale su questo diritto e le norme europee, in particolare il Regolamento UE 2016/676, che riguardano la protezione dei dati personali e contribuiscono alla definizione del diritto all’oblio.

                  Il dibattito sulla regolamentazione di Internet e sul suo impatto sulla libertà di espressione e sulla privacy individuale è un argomento complesso e sfaccettato. L’avanzamento tecnologico nell’ambito delle Tecnologie dell’Informazione e della Comunicazione (ICT) ha portato a una rivoluzione nelle modalità di comunicazione e nell’esercizio dei diritti fondamentali, in particolare la libertà di espressione, garantita dalla Costituzione all’articolo 21. Questa trasformazione ha sollevato questioni importanti riguardo alla privacy e alla protezione dei dati personali, culminando nel concetto di “diritto all’oblio”, che permette alle persone di richiedere la rimozione di informazioni obsolete o irrilevanti su di loro da Internet.

                  Le sfide legislative nel bilanciare i diritti alla libertà di informazione e alla privacy sono notevoli, in particolare in un contesto globalizzato dove la diffusione delle informazioni è praticamente illimitata. Il tentativo di regolamentare Internet ha spesso suscitato controversie, percepite da alcuni come tentativi di limitare la libertà di espressione. Tuttavia, la mancanza di regolamentazione adeguata può portare a un’atmosfera di anarchia online, dove la responsabilità personale è facilmente elusa.

                  La decisione del CERN di rendere pubblica la tecnologia del World Wide Web nel 1993, ha segnato l’inizio di una nuova era di accessibilità all’informazione, ma ha anche introdotto il dilemma di come gestire una rete globale senza regole chiare. Questo ha portato all’emergere di “nuovi diritti” legati alla digitalizzazione della società, tra cui il diritto alla riservatezza e il diritto all’oblio, interpretati come estensioni dei diritti costituzionali esistenti. Questi diritti mirano a proteggere la dignità e la privacy degli individui nell’era digitale, consentendo loro di controllare come le loro informazioni personali vengono condivise e ricordate online.

                  In conclusione, la necessità di proteggere l’identità digitale delle persone e di garantire la loro privacy online è diventata una priorità nell’attuale società dell’informazione. Il diritto all’oblio emerge come uno strumento fondamentale per salvaguardare la reputazione e l’identità personale degli individui, affrontando le sfide poste dalla permanenza e dalla pervasività delle informazioni personali su Internet.

                  L’ implementazione del diritto all’oblio presenta sfide significative che richiedono un equilibrio attento tra la privacy individuale e la libertà di informazione. In un mondo sempre più interconnesso e digitale, il diritto all’oblio continua a essere un argomento di grande rilevanza e dibattito.

                  Nel panorama giuridico europeo, la protezione dei dati personali si è affermata come un diritto fondamentale, rispondendo alla necessità di bilanciare la privacy individuale con le libertà di informazione ed espressione in un contesto sempre più dominato dalla presenza digitale. La distinzione tra il diritto alla protezione dei dati personali e il diritto al rispetto della vita privata, come delineato nella Carta dei diritti fondamentali dell’Unione europea, segnala un’evoluzione da una concezione statica e negativa della privacy verso una tutela dinamica e proattiva dei dati, implicando un potere di intervento e controllo non solo da parte degli individui ma anche attraverso la supervisione di autorità indipendenti.

                  Questo cambiamento trova conferma nell’evoluzione legislativa, partendo dalla direttiva 95/46/CE, attraverso l’introduzione del Codice in materia di protezione dei dati personali in Italia (d.lgs. 196/2003), fino all’adozione del Regolamento (UE) 2016/679 (GDPR – General Data Protection Regulation), che ha introdotto un quadro giuridico uniforme e direttamente applicabile in tutti gli Stati membri dell’Unione Europea. L’intento è quello di assicurare che il trattamento dei dati personali avvenga nel rispetto dei diritti e delle libertà fondamentali degli individui.

                  Tuttavia, il dibattito sul diritto all’oblio, specialmente in relazione al ruolo dei motori di ricerca e alla gestione delle informazioni online, ha sollevato questioni complesse sul bilanciamento dei diritti in gioco. La sentenza della Corte di Giustizia dell’Unione Europea nel caso Google Spain ha segnato un punto di svolta, riconoscendo la responsabilità dei motori di ricerca nel trattamento dei dati personali e affermando il diritto degli individui di richiedere la rimozione di informazioni obsolete o irrilevanti dalla lista dei risultati di ricerca, ponendo le basi per una tutela più efficace della privacy digitale.

                  In contrapposizione, la Corte Europea dei Diritti dell’Uomo ha adottato un approccio differente, privilegiando la libertà di espressione e il diritto del pubblico all’informazione rispetto al diritto all’oblio, suggerendo una soluzione meno drastica attraverso l’aggiunta di precisazioni o aggiornamenti alle informazioni già pubblicate, piuttosto che la loro rimozione completa.

                  Queste dinamiche riflettono le tensioni intrinseche nel bilanciamento tra privacy e trasparenza nell’era digitale, evidenziando l’importanza di un dialogo continuo e di un approccio multilivello alla regolamentazione dei diritti in rete, che tenga conto della complessità e della fluidità del contesto digitale globale. La sfida per legislatori e giudici rimane quella di trovare equilibri dinamici che possano tutelare efficacemente i diritti degli individui senza soffocare le libertà fondamentali che sono alla base di una società democratica e informata.

                  Il “diritto all’oblio”, inteso come la prerogativa di essere dimenticati dalla collettività, si afferma nel contesto giuridico come una dimensione fondamentale della tutela della privacy e dell’identità personale nell’era digitale. Questo diritto consente agli individui di richiedere la deindicizzazione e, in alcuni casi, la cancellazione di dati personali dai motori di ricerca quando tali informazioni, un tempo pertinenti o di interesse pubblico, diventano obsolete o irrilevanti, evitando così una perpetua esposizione mediatica che potrebbe danneggiare la reputazione personale.

                  Viene in tal modo introdotta la possibilità per ogni individuo di richiedere la cancellazione di informazioni che, con il trascorrere del tempo, hanno perso rilevanza o interesse pubblico. L’attuazione di tale diritto si basa sulla valutazione della persistente rilevanza delle informazioni, tenendo conto dell’evoluzione del contesto sociale e informativo.

                  La giurisprudenza civile stabilisce criteri specifici per la pubblicazione di notizie che potrebbero compromettere l’onore e la reputazione, richiedendo la verità oggettiva della notizia, l’interesse pubblico alla conoscenza del fatto e la correttezza formale dell’esposizione. Con il tempo, è emersa una nuova sensibilità giuridica che limita il diritto di cronaca alla luce dell’attualità delle notizie, precludendo la diffusione di informazioni non più rilevanti socialmente o d’interesse pubblico.

                  Il diritto all’oblio si distingue per la sua funzione di tutela dell’identità personale di fronte all’impatto potenzialmente illimitato e duraturo delle informazioni digitali. La giurisprudenza civile enfatizza la necessità di proteggere la proiezione sociale dell’identità dell’individuo, assicurando che dati personali obsoleti o non più pertinenti non siano ulteriormente diffusi, in considerazione dell’evoluzione della reputazione e dell’identità personale nel tempo.

                  Questa concezione del diritto all’oblio viene riconosciuta anche dalla Corte Costituzionale, che ha stabilito la possibilità di cancellare dal casellario giudiziale le iscrizioni di responsabili di illeciti minori dopo un periodo adeguato senza ulteriori reati, riaffermando l’importanza del bilanciamento tra il diritto all’oblio e altre esigenze di carattere pubblico.

                  La Suprema Corte ribadisce che il diritto all’oblio non si riduce alla mera cancellazione di notizie dannose per la reputazione, ma implica la capacità di aggiornare o rimuovere informazioni che, con il passare del tempo, diventano lesive per l’identità personale dell’interessato. Questo diritto si estende alla protezione contro la diffusione non necessaria di notizie passate che non presentano più un interesse pubblico o una rilevanza sociale, stabilendo un equilibrio tra il diritto di cronaca e la libertà di espressione, da un lato, e la tutela della privacy e dell’identità personale, dall’altro.

                  L’approfondimento mira a delineare come questi diritti contribuiscano a consolidare il principio di autodeterminazione informativa, permettendo all’individuo un controllo più stringente sulle proprie informazioni personali.

                  Il diritto alla cancellazione, articolato nell’articolo 17 del GDPR, offre all’interessato la facoltà di richiedere la rimozione dei dati personali che lo riguardano, sotto specifiche condizioni. Queste includono scenari in cui i dati non sono più necessari rispetto alle finalità per le quali sono stati raccolti, il ritiro del consenso su cui si basa il trattamento, o il rilevamento di trattamento illecito dei dati. La normativa chiarisce che tale diritto non è assoluto ma condizionato dalla presenza di determinate circostanze che legittimano la richiesta di cancellazione, al fine di bilanciare altri interessi fondamentali, come la libertà di espressione e il diritto all’informazione. La cancellazione dei dati non può avvenire automaticamente se prevale un interesse pubblico legittimo o se i dati sono necessari per l’accertamento, l’esercizio o la difesa di un diritto in sede giudiziaria.

                  Oltre alla distruzione fisica dei dati, il regolamento contempla alternative quali l’anonimizzazione, intendendo qualsiasi processo che renda i dati non riconducibili all’identità del soggetto interessato. Tale approccio differisce dalla pseudonimizzazione, in quanto quest’ultima non preclude la possibilità di futura reidentificazione. Pertanto, l’efficacia del diritto alla cancellazione si manifesta attraverso la irreversibilità della separazione tra i dati e l’identità dell’individuo, un aspetto fondamentale per la tutela della privacy. La normativa impone al titolare del trattamento di valutare le richieste di cancellazione nel rispetto del principio di proporzionalità, tenendo conto dei costi, delle tecnologie disponibili e della propria organizzazione. Qualora i dati oggetto della richiesta di cancellazione siano stati condivisi con terzi, il titolare è tenuto a informare tali entità della necessità di adottare misure analoghe a quelle intraprese direttamente. 

                  Nel complesso giurisprudenziale e normativo vanno ricordate:

                  • Sentenza della Corte (Grande Sezione) del 13 maggio 2014. Google Spain SL e Google Inc. contro Agencia Española de Protección de Datos (AEPD) e Mario Costeja González. Causa C131/12. “Il gestore di un motore di ricerca su Internet è responsabile del trattamento da esso effettuato dei dati personali che appaiono su pagine web pubblicate da terzi. Così, nel caso in cui, a seguito di una ricerca effettuata a partire dal nome di una persona, l’elenco di risultati mostra un link verso una pagina web che contiene informazioni sulla persona in questione, questa può rivolgersi direttamente al gestore oppure, qualora questi non dia seguito alla sua domanda, adire le autorità competenti per ottenere, in presenza di determinate.” La Corte di Giustizia dell’Unione Europea nel caso Google Spain ha posto le basi per il riconoscimento del diritto all’oblio nel contesto dei motori di ricerca. La Corte ha stabilito che i motori di ricerca hanno la responsabilità di rimuovere i link a informazioni obsolete o non più rilevanti, equilibrando il diritto alla privacy degli individui con il diritto del pubblico all’accesso alle informazioni. Questa decisione ha evidenziato il ruolo dei motori di ricerca nella gestione delle informazioni personali e ha sottolineato la necessità di valutare attentamente le richieste di deindicizzazione in base all’interesse pubblico e alla rilevanza delle informazioni.
                  • Sentenza della Corte di giustizia nella causa C-136/17 (24 settembre 2019)
                    GC e a./Commission nationale de l’informatique et des libertés (CNIL). “Il divieto di trattare determinate categorie di dati personali sensibili si applica anche ai gestori di motori di ricerca. Nell’ambito di una domanda di deindicizzazione, dev’essere effettuato un bilanciamento tra i diritti fondamentali del richiedente la deindicizzazione e quelli degli utenti di Internet potenzialmente interessati a tali informazioni”.
                  • Sentenza nella causa C-507/17 (24 settembre 2019). Google LLC, succeduta alla Google Inc./ Commission nationale de l’informatique et des libertés (CNIL)“Il gestore di un motore di ricerca non è tenuto a effettuare la deindicizzazione in tutte le versioni del suo motore di ricerca. È tuttavia tenuto ad effettuarla nelle versioni di tale motore di ricerca corrispondenti a tutti gli Stati membri e ad attuare misure che scoraggino gli utenti di Internet dall’avere accesso, a partire da uno degli Stati membri, ai link di cui trattasi contenuti nelle versioni extra UE di detto motore”.
                  • La sentenza della Corte di giustizia dell’Unione Europea nella causa C-460/20, relativa al caso Google (Deindicizzazione di contenuti asseritamente inesatti), rappresenta un importante punto di riferimento nell’ambito del diritto alla protezione dei dati personali, in particolare per quanto concerne il “diritto all’oblio”). Il contesto della sentenza riguarda la richiesta da parte di due dirigenti di un gruppo di società di investimenti affinché Google deindicizzasse risultati di ricerca collegati a loro nomi, i quali contenevano link verso articoli criticando il loro modello di investimento con affermazioni ritenute inesatte, e l’eliminazione delle loro fotografie sotto forma di miniature da risultati di ricerca di immagini. La Corte di giustizia sottolinea che il diritto alla protezione dei dati personali non è assoluto ma deve essere bilanciato con altri diritti fondamentali, come la libertà di informazione, seguendo il principio di proporzionalità. La normativa europea prevede eccezioni al diritto alla cancellazione quando il trattamento dei dati è necessario per l’esercizio del diritto alla libertà di informazione. Nella sua decisione, la Corte stabilisce che i diritti alla protezione della vita privata e dei dati personali prevalgono generalmente sull’interesse degli utenti di Internet all’accesso alle informazioni, ma questo equilibrio può variare a seconda delle circostanze del caso, incluse la natura e la sensibilità delle informazioni e l’interesse pubblico ad esse associato. Tuttavia, quando le informazioni indicizzate si rivelano manifestamente inesatte, o almeno una parte di esse di non minore importanza, il diritto alla libertà d’espressione e di informazione non può essere considerato per giustificare il loro mantenimento nell’indice del motore di ricerca. Per quanto riguarda l’obbligo di prova in capo a chi richiede la deindicizzazione, la Corte precisa che spetta a questa persona dimostrare l’inesattezza manifesta delle informazioni, fornendo prove ragionevolmente ricercabili, senza che ciò comporti un onere eccessivo. Non è necessario, almeno nella fase precontenziosa, fornire una decisione giudiziaria contro l’editore del sito. Il gestore del motore di ricerca, ricevuta una richiesta di deindicizzazione supportata da elementi di prova pertinenti e sufficienti, è tenuto ad accoglierla, soprattutto se esiste una decisione giudiziaria che attesta l’inesattezza delle informazioni. In assenza di manifesta inesattezza evidente dagli elementi forniti, e senza una decisione giudiziaria che lo confermi, il gestore del motore di ricerca non è obbligato ad accogliere la richiesta, ma il richiedente può rivolgersi alle autorità competenti per ulteriori verifiche. Questa sentenza impone ai gestori dei motori di ricerca di adottare un approccio più attento e ponderato nell’esaminare le richieste di deindicizzazione, tenendo conto dei diritti fondamentali coinvolti e delle prove fornite dai richiedenti.
                  • In particolare riferimento al nostro Paese, va evidenziato il d.lgs. 150 del 2022, noto come Riforma Cartabia, che ha introdotto nell’ordinamento giuridico italiano l’articolo 64-ter riguardante il “diritto all’oblio degli imputati e delle persone sottoposte a indagini” nelle disposizioni di attuazione del codice di procedura penale. Questa novità normativa mira a bilanciare il rapporto tra processo penale, media, e diritto all’oblio, fornendo strumenti legali per limitare la diffusione di informazioni che possano ledere la reputazione di individui già prosciolti o assolti. L’articolo 64-ter dispone che le persone a cui è stata pronunciata una sentenza di proscioglimento, non luogo a procedere, o un decreto di archiviazione, hanno il diritto di richiedere la deindicizzazione (rimozione da risultati di ricerca internet) o la preclusione dell’indicizzazione dei dati personali citati nei provvedimenti giudiziari. Questo è un passo avanti significativo nel riconoscere e tutelare il diritto all’oblio digitale di individui ingiustamente coinvolti in procedimenti penali, offrendo un rimedio legale contro la permanente disponibilità e accessibilità di informazioni potenzialmente dannose su internet. L’introduzione di questo articolo risponde all’esigenza di proteggere la dignità e la reputazione delle persone nell’era digitale, dove le informazioni su internet hanno una longevità e una diffusione senza precedenti. La normativa cerca di armonizzare le disposizioni italiane con i principi del diritto all’oblio sanciti a livello europeo, in particolare con il regolamento GDPR che prevede il diritto alla cancellazione dei dati personali. Nonostante l’innovazione legislativa, emergono alcune criticità nella sua applicazione pratica, come la definizione dei criteri per l’accoglimento delle richieste di deindicizzazione e la modalità con cui tali richieste sono esaminate e attuate dai motori di ricerca. Inoltre, vi sono dubbi sull’effettiva capacità della norma di assicurare una tutela efficace dell’oblio digitale, considerando le sfide tecniche e giuridiche legate alla gestione delle informazioni online e le implicazioni per la libertà di espressione e il diritto all’informazione. L’articolo 64-ter rappresenta un tentativo significativo di adeguare il diritto italiano alle sfide poste dalla digitalizzazione della società e dall’interazione tra privacy, reputazione online e diritti delle persone coinvolte in procedimenti giudiziari. Tuttavia, la sua efficacia pratica dipenderà dalla capacità di risolvere le questioni operative e interpretative che ne derivano, necessitando possibilmente di futuri aggiustamenti legislativi o interpretativi per garantire una protezione effettiva del diritto all’oblio.

                  Nel contesto dell’era digitale, la questione dell’oblio e della memoria collettiva assume connotazioni inedite e complesse. La riflessione si apre con l’interrogativo su quale forma assuma la vita in un’epoca dove “Google ricorda sempre”, evidenziando i pericoli emergenti legati alla rete, un dominio che funge da deposito per un’implacabile memoria collettiva. La digitalizzazione ha portato a una situazione dove ogni aspetto della vita umana viene raccolto, cristallizzato e reso eternamente accessibile nell’ “inconscio digitale”, trasformando la memoria, un tempo intesa come un accumulo di esperienze, in un peso da cui liberarsi.

                  Il desiderio di oblio, quindi, non nasce tanto dalla volontà di eludere uno sguardo indesiderato, quanto dalla necessità di ritirarsi in una zona d’ombra digitale, dove le tracce personali possono essere “cancellate”. Questo bisogno si è intensificato con l’avvento di Internet e delle nuove tecnologie, che hanno reso ogni traccia della vita umana permanentemente accessibile, ponendo le basi per il diritto all’oblio. Questo diritto, emergente tra gli anni ‘80 e ‘90, oscilla tra il rispetto dell’identità della persona e il diritto alla riservatezza, assumendo una configurazione autonoma grazie all’espansione dei cosiddetti diritti della personalità.

                  L’evoluzione giuridica di tale diritto, è stato riconosciuto e definito attraverso un processo di reinterpretazione dell’art. 2 della Costituzione italiana, che considera la tutela della personalità umana in tutte le sue espressioni, anche quelle non ancora normativamente tipizzate. Questo approccio ha portato al riconoscimento giuridico di situazioni esistenziali quali il diritto alla riservatezza e il diritto all’identità personale, distinguendoli per la prima volta e ponendo le basi per l’emergere del diritto all’oblio.

                  Il diritto all’oblio, pertanto, è stato inizialmente inteso come la pretesa di non vedere rievocati fatti già resi di pubblico dominio, con l’obiettivo di proteggere l’individuo da una nuova notorietà indesiderata. La giurisprudenza di legittimità ha successivamente qualificato l’oblio come l’interesse a non restare indefinitamente esposto ai danni ulteriori arrecati alla reputazione dall’incessante pubblicazione di notizie passate.

                  Nel bilanciamento tra diritto all’oblio e diritto di cronaca, emerge la complessità di armonizzare l’interesse pubblico all’informazione con il diritto individuale alla dimenticanza. La prevalenza di uno sull’altro dipende dalla rilevanza attuale della notizia e dall’esistenza di un interesse pubblico nella sua rievocazione.

                  Nell’era della digitalizzazione, la nozione di privacy subisce una trasformazione radicale, evidenziando come la dimensione virtuale influenzi profondamente il concetto di spazio personale. È evidente come la rivoluzione elettronica e tecnologica abbia espanso lo schermo della vita personale oltre il personal computer, immergendola nell’intero spazio della rete. Questo cambio di paradigma solleva interrogativi significativi sulla possibile perdita di diritti in un contesto dove la privacy tradizionale, intesa come “diritto a essere lasciato solo”, non sembra più adeguata a tutelare l’individuo contro intrusioni non desiderate.

                  La trasformazione della “sfera privata” in un luogo di scambio e condivisione di dati personali richiede un’evoluzione verso la “protezione dei dati”, concetto elaborato nell’ambito europeo per rispondere alla necessità di una disciplina uniforme che regoli i nuovi spazi sconfinati e mobili della rete. Il contesto digitale, caratterizzato da un pluralismo di fonti e una molteplicità di giurisdizioni, presenta sfide significative nella risoluzione delle controversie e nel bilanciamento tra diritti personali e la libertà di informazione. La peculiarità dei diritti in rete, che non ammettono una gerarchizzazione a causa della natura intrinsecamente egualitaria della rete, richiede un approccio “multilevel” per la loro regolamentazione.

                  In questo scenario, il diritto all’oblio emerge come una necessità di governare la propria memoria digitale, offrendo a ciascuno la possibilità di reinventarsi e costruire una nuova identità personale, liberandosi dalle “gabbie” imposte da una memoria onnipresente e totalizzante. Tuttavia, la regolamentazione dei diritti in un dominio apparentemente anarchico come il web solleva interrogativi fondamentali sui meccanismi di governance, sul ruolo degli Stati e sulla capacità delle leggi di adattarsi a una realtà in continuo mutamento.

                  Il dibattito sulla regolamentazione del ciberspazio, evidenziato dalla Dichiarazione d’indipendenza del ciberspazio, mostra la tensione tra la necessità di tutelare i diritti umani in un contesto digitale e la resistenza a un controllo centralizzato. Le questioni su chi debba essere il legislatore e quale giudice debba applicare i diritti proclamati riflettono le sfide poste dalla nascita di nuovi diritti umani nell’era digitale, sottolineando l’urgenza di trovare soluzioni innovative per garantire la protezione della privacy e altri diritti fondamentali nell’ambito virtuale. La risposta a queste sfide passa attraverso un dialogo inclusivo tra diversi attori a vari livelli, che possano concorrere alla creazione di un quadro normativo adatto a regolare la complessità del ciberspazio, come dimostrato dagli sforzi dell’Unione Europea in materia di protezione dei dati.

                  L’articolo 17 del GDPR segna un punto di svolta nella protezione dei dati personali nell’Unione Europea, introducendo il “diritto alla cancellazione” dei dati personali, comunemente noto come “diritto all’oblio”. Questo diritto permette agli individui di richiedere la cancellazione dei propri dati personali dal titolare del trattamento senza ingiustificato ritardo, e impone al titolare del trattamento l’obbligo di cancellare tali dati quando sussistono specifiche condizioni.

                  Nonostante il termine “diritto all’oblio” non sia esplicitamente definito nel GDPR, l’articolo 17 stabilisce chiaramente i presupposti per l’esercizio di questo diritto, tra cui la non necessità dei dati per le finalità originali di raccolta o trattamento, la revoca del consenso da parte dell’interessato, e il trattamento illecito dei dati. Tuttavia, il regolamento ammette eccezioni al diritto alla cancellazione, ad esempio quando il trattamento è necessario per l’esercizio della libertà di espressione e di informazione, per l’adempimento di un obbligo legale, o per motivi di interesse pubblico.

                  La giurisprudenza e la dottrina hanno sollevato criticità riguardo all’assenza di una definizione precisa del diritto all’oblio e alla discrezionalità affidata alle corti e alle autorità nazionali nel bilanciamento tra i diritti dell’interessato e gli altri interessi in gioco. Inoltre, l’articolo 17 viene interpretato come uno tra i possibili rimedi per realizzare l’oblio, evidenziando come esistano diverse declinazioni di questo diritto, come la deindicizzazione, l’anonimizzazione dei dati, e la contestualizzazione delle informazioni non più attuali.

                  La giurisprudenza italiana ha affrontato questioni legate al diritto all’oblio, bilanciando il diritto di cronaca e il diritto alla privacy. Due casi significativi riguardano un noto cantautore italiano e una vicenda di uxoricidio, entrambi esemplificativi del dibattito sul diritto all’oblio rispetto alla libertà di espressione e al diritto di cronaca. La Suprema Corte di Cassazione ha delineato criteri per il bilanciamento tra questi diritti, sottolineando che la pubblicazione di informazioni relative a persone a distanza di tempo dai fatti deve rispettare specifici presupposti per non violare il diritto all’oblio.

                  La decisione delle Sezioni Unite del 2019 rappresenta un momento storico nella giurisprudenza italiana, identificando tre differenti declinazioni del diritto all’oblio e stabilendo che la rievocazione di fatti storici deve avvenire in forma anonima, a meno che non si tratti di figure pubbliche. Questa sentenza evidenzia l’importanza del diritto all’oblio nel contesto digitale, riconoscendo il diritto degli individui a non essere eternamente legati a informazioni del passato, favorendo così la possibilità di reinserimento sociale e la protezione della dignità personale.

                  La decisione del settembre 2019 della Corte di Giustizia dell’Unione Europea sul caso Google rappresenta un importante punto di riferimento nell’interpretazione e applicazione del diritto alla protezione dei dati personali, in particolare in relazione all’articolo 17 del GDPR. Questa sentenza ha affrontato questioni chiave riguardanti l’ammissibilità dell’esercizio del diritto alla deindicizzazione e la sua possibile estensione territoriale oltre i confini dell’Unione Europea.

                  La Corte è stata chiamata a risolvere due questioni principali: da un lato, il bilanciamento tra il diritto alla protezione dei dati personali e il diritto all’informazione dell’utente di Internet; dall’altro, la determinazione della portata territoriale del diritto alla deindicizzazione. Con particolare attenzione alla prima questione, è stato riconosciuto che, mentre l’Internet agisce come veicolo per la cura e l’aggiornamento dei dati personali attraverso i siti sorgente e la loro successiva indicizzazione e memorizzazione da parte dei motori di ricerca, l’articolo 17 del GDPR stabilisce le condizioni per cui un individuo può richiedere la cancellazione dei propri dati personali. In questo contesto, è emersa l’importanza non solo del diritto a essere informati ma anche del diritto di informare, sottolineando la necessità di proteggere l’informazione in tutte le sue forme per assicurare il pluralismo informativo e il diritto di ogni utente ad essere adeguatamente informato.

                  Riguardo alla seconda questione, relativa alla portata territoriale del diritto all’oblio, la Corte ha stabilito che il gestore di un motore di ricerca è tenuto a rimuovere i link dalle versioni del motore di ricerca corrispondenti a tutti gli Stati membri dell’UE, limitando così l’obbligo di deindicizzazione ai confini territoriali dell’Unione. Questa decisione riflette la complessità di estendere la protezione dei dati personali e il diritto alla cancellazione a livello globale, dato che molti paesi al di fuori dell’UE non riconoscono il diritto alla protezione dei dati personali o non lo regolano in modo simile. La sentenza del 2019 chiarisce dunque che la deindicizzazione, sebbene rappresenti un importante strumento di tutela dei diritti degli individui nell’ambito digitale, ha un ambito di applicazione geograficamente limitato all’UE. Questo implica che, nonostante le rigorose protezioni offerte all’interno dell’Unione, la capacità di garantire il diritto alla cancellazione dei dati su scala globale rimane una sfida significativa. La decisione sottolinea l’importanza di sviluppare meccanismi e strategie, come il blocco geografico, che permettano di adempiere efficacemente agli obblighi di deindicizzazione nel rispetto dei principi stabiliti dal GDPR, pur riconoscendo le limitazioni imposte dal contesto normativo e giuridico internazionale.

                  Negli ultimi anni si stanno sviluppando tuttavia altre forme di tutela, le quali demandano l’intera attività di raccolta di informazioni, nonché la fase decisionale, direttamente ai provider o ai soggetti che gestiscono il motore di ricerca. Nei paragrafi successivi saranno analizzati tali strumenti. Sarà altresì preso in considerazione il social network Facebook, il quale, secondo gli analisti anche alla luce della relativa diffusione nel medio e lungo periodo avrebbe l’intenzione di contrapporsi ai motori di ricerca (http://search.fb.com/), integrando un motore di ricerca interno e sfruttando i contenuti dei propri utenti ed avvalendosi di una standardizzazione dei dati particolarmente elevata. Facebook appare certamente così appartenere alla zona grigia della sentenza C-131, in quanto allo stato attuale appare difficile che esso sia considerato come un vero e proprio motore di ricerca, ma inizia già ora a svolgere, in tutto o in parte, la funzione tecnologica di ricerca delle informazioni, seppure in una rete ristretta.

                  La tematica della deindicizzazione e del diritto all’oblio su internet ha acquisito rilevanza crescente nell’era digitale, particolarmente con l’introduzione di meccanismi che permettono agli individui di richiedere la rimozione di contenuti dai motori di ricerca come Google. Questo fenomeno, evidenziato dalla rapida escalation delle richieste di rimozione subito dopo la disponibilità di un modulo online dedicato, mette in luce le sfide e le complessità intrinseche alla gestione del diritto alla privacy nell’ambiente online.

                  Google law: un form per l’esercizio dell’oblio

                    Google, in risposta alle esigenze normative e sociali, ha introdotto un modulo web[1] che consente agli individui di esercitare il diritto all’oblio, chiedendo la rimozione di specifici contenuti dalle pagine dei risultati di ricerca (SERP[2]). L’iter procedurale, nonostante la sua apparente semplicità, nasconde diverse complessità sia operative che etiche. La necessità di allegare una scansione di un documento d’identità, pur consentendo l’anonimizzazione di alcune parti, solleva questioni relative alla sicurezza dei dati personali e alla loro gestione da parte di un ente privato come Google.

                    La gestione delle richieste, affidata inizialmente al personale junior e poi, in casi più complessi, a consulenti senior e avvocati, denota un processo decisionale strutturato e mirato a valutare l’appropriatezza delle richieste di rimozione. Questo processo si articola in diverse fasi che includono la verifica dell’identità del richiedente, il collegamento con un Paese europeo, la pertinenza delle informazioni con il nome del richiedente e l’interesse pubblico delle informazioni richieste per la deindicizzazione.

                    Una delle criticità maggiori del sistema di deindicizzazione risiede nella sua applicabilità e conformità alle normative sui diritti alla privacy, in particolare rispetto al contesto europeo. La procedura di Google, pur essendo un passo verso il riconoscimento del diritto all’oblio, sembra limitare la sua applicazione ai cittadini o residenti europei, non allineandosi completamente alle disposizioni del codice della privacy italiano che estende la tutela dei dati personali a chiunque, indipendentemente dalla cittadinanza, purché il trattamento dei dati avvenga sul territorio italiano.

                    Inoltre, l’efficacia della deindicizzazione si limita alla rimozione dei contenuti basati su specifiche parole chiave, come il nome dell’interessato, senza impedire la reperibilità delle informazioni attraverso altre vie di ricerca. Questo limita sostanzialmente il diritto all’oblio, riducendolo a una mera deindicizzazione nominativa che non cancella la presenza online delle informazioni, ma ne riduce solo parzialmente l’accessibilità.

                    La gestione del diritto all’oblio da parte di Google pone in evidenza la necessità di un approccio più olistico e conforme alle diverse normative nazionali ed europee. Un sistema efficace di deindicizzazione dovrebbe non solo considerare le specificità legali di ogni Paese ma anche garantire una reale protezione del diritto alla privacy, estendendo la possibilità di rimozione a tutte le informazioni irrilevanti o obsolete, indipendentemente dalle parole chiave utilizzate nella ricerca.

                    In conclusione, mentre la procedura attuale rappresenta un importante passo avanti nella tutela della privacy online, rimangono significative sfide e opportunità per migliorare l’efficacia e la conformità del diritto all’oblio con le diverse normative sulla protezione dei dati. Sarà fondamentale continuare a monitorare e valutare l’evoluzione di queste pratiche per garantire un equilibrio tra il diritto alla privacy degli individui e l’interesse pubblico all’accesso alle informazioni.

                    Bing

                    Bing, il motore di ricerca di Microsoft Corporation, ha reso disponibile un proprio form[3] articolato in 4 parti, per richiedere la deindicizzazione dei contenuti.

                    Il modo in cui Bing gestisce le richieste di deindicizzazione offre spunti peculiari per un’analisi approfondita, soprattutto se confrontato con Google. Il form di richiesta di deindicizzazione proposto da Bing si distingue per il suo approccio analitico, richiedendo agli utenti di specificare non solo il contenuto da rimuovere ma anche il contesto e la posizione dell’interessato nella propria comunità. Questo dettaglio assume particolare rilevanza in quanto sottolinea l’importanza dell’impatto sociale e comunitario nell’analisi delle richieste, offrendo una tutela più affine alle dinamiche sociali reali.

                    Differenze significative emergono anche nella territorialità applicata alla procedura di deindicizzazione, con Google che estende la protezione non solo ai residenti ma anche agli individui domiciliati in Europa. Questa estensione rappresenta una sensibilità più ampia verso il diritto alla privacy, andando oltre le mere distinzioni legali tra residenza e domicilio.

                    Una peculiarità di Bing è la considerazione dello pseudonimo, allineandosi così alle tutele previste dal codice della privacy e dal diritto civile italiano. Questo aspetto è fondamentale in quanto riconosce l’importanza dell’identità digitale e la necessità di proteggerla con le stesse garanzie dell’identità anagrafica.

                    Per quanto riguarda i minori, Bing adotta una posizione progressista permettendo loro di inviare autonomamente il modulo di richiesta di deindicizzazione. Sebbene questa scelta rispecchi un riconoscimento del diritto al libero sviluppo della personalità del minore, solleva questioni delicate relative alla capacità dei minori di comprendere appieno le implicazioni del consenso al trattamento dei dati e dell’esercizio del diritto alla privacy. La decisione di Bing di consentire tale autonomia merita quindi un’analisi critica, considerando le diverse interpretazioni e le possibili implicazioni legali e sociali.

                    Inoltre, Bing esige che le richieste di deindicizzazione siano accompagnate da una descrizione dettagliata del contenuto e dalle motivazioni che sottendono alla richiesta. Tale processo riflette un tentativo di bilanciare il diritto all’oblio con la libertà di espressione e l’interesse pubblico all’accesso alle informazioni. Tuttavia, la categorizzazione delle ragioni per la richiesta di rimozione (informazioni inesatte, false, incomplete, inadeguate, non aggiornate, non pertinenti, eccessive o improprie) potrebbe introdurre ambiguità, in quanto confonde il diritto all’oblio con il diritto all’aggiornamento dei dati personali.

                    Yahoo!

                    Yahoo! ha predisposto un apposito form “Richieste di Blocco dei risultati della ricerca in Yahoo Ricerca:Risorse per i Residenti in Europa”[4]. In particolare il motore di ricerca specifica che la Corte di giustizia dell’Unione europea ha decretato che gli utenti residenti in Europa possono richiedere che URL specifici vengano deindicizzati rispetto a ricerche specifiche del loro nome, nel caso in cui la pagina contenga dati personali imprecisi, inadeguati, non più pertinenti o eccessivi, relativamente ai fini per i quali erano stati raccolti o elaborati. Gli utenti di Yahoo residenti in Europa possono utilizzare questo modulo per richiedere che un URL venga bloccato per una pagina, associata al loro nome, che rispetti questi criteri. Si ricorda che qualsiasi blocco verrà garantito solamente riguardo alla ricerca del nome specifico dell’utente in questione.

                    Libero search (Arianna) e gli altri motori italiani

                    Nel panorama dei motori di ricerca italiani, Arianna (Libero.it) emerge come un caso emblematico. Originariamente lanciato nel 1996 da ricercatori dell’Università di Pisa, Arianna ha modificato la sua strategia nel 2008 adottando i risultati di ricerca forniti da Google Inc., come indicato dalla dicitura “enhanced by Google” sul proprio box di ricerca. Questa scelta rispecchia un adattamento alle branding guidelines di Google, ma solleva questioni riguardanti l’autonomia e la gestione dei dati personali.

                    Una caratteristica distintiva di Arianna è l’offerta limitata alle funzioni di “ricerca correlata” ed “avanzata”, che mirano a migliorare l’esperienza dell’utente senza stravolgere la SERP (Search Engine Results Page) fornita da Google. Ciò solleva interrogativi sull’esercizio del diritto all’oblio da parte degli utenti italiani, dato che non sono presenti moduli specifici per la deindicizzazione dei contenuti o indicazioni chiare su come la rimozione dei dati da Google possa influire sui risultati di Arianna.

                    Contrastando con queste realtà, Istella[5] rappresenta un’iniziativa nata dalla collaborazione tra Tiscali, l’Università degli Studi di Pisa e il CNR. Lanciato il 19 marzo 2013, Istella si propone non come un diretto concorrente dei giganti della ricerca online, ma come un’alternativa focalizzata su fonti non indicizzate da altri motori. Nonostante l’approccio innovativo e la non conservazione dei dati degli utenti, anche Istella non fornisce indicazioni chiare sull’esercizio del diritto all’oblio. Rimane presente unicamente una informativa privacy[6] che non contiene alcuna informazione in merito all’esercizio di questo specifico diritto.

                    La questione del diritto all’oblio nei motori di ricerca italiani riflette la complessità delle interazioni tra normative sulla privacy, gestione dei dati personali e le tecnologie sottostanti. Mentre Arianna e Excite Italia mostrano le sfide poste dall’integrazione con tecnologie esterne, Istella offre una visione alternativa che tuttavia non chiarisce pienamente come viene gestito il diritto all’oblio. Questo panorama sottolinea la necessità di un quadro normativo e di pratiche aziendali che garantiscano trasparenza e controllo effettivo agli utenti sui loro dati personali nel contesto digitale.

                    Facebook (Meta) e gli altri social network

                    L’intersezione tra il diritto all’oblio e le piattaforme di social media, come Facebook, Twitter e LinkedIn, pone sfide uniche e complesse, che riflettono le tensioni tra privacy individuale, libertà di espressione e i confini della regolamentazione legale. La gestione dei dati personali e l’applicabilità del diritto all’oblio su queste piattaforme diventa particolarmente problematica alla luce delle diverse interpretazioni normative e delle politiche aziendali.

                    Le piattaforme social come Facebook, Twitter e LinkedIn hanno trasformato il modo in cui interagiamo, comunicando e condividendo informazioni su scala globale. Tuttavia, la persistenza digitale delle informazioni condivise online solleva questioni rilevanti riguardo al diritto all’oblio, un principio che mira a consentire agli individui di richiedere la rimozione di informazioni obsolete o irrilevanti su di loro da risultati di ricerca o database online.

                    Facebook, in particolare, ha affrontato critiche e sfide legali in Europa per il suo approccio alla privacy e alla gestione dei dati personali. Il conflitto con il Garante della privacy tedesco riguardante l’estensione del diritto all’oblio ai contenuti presenti sul social network sottolinea la difficoltà di definire i confini di applicabilità di questo diritto alle piattaforme di social media. La posizione di Facebook, basata sulla conformità alla normativa irlandese, riflette una strategia di minimizzazione delle responsabilità legali, ma solleva interrogativi sulla sua adeguazione alle esigenze di privacy degli utenti europei.

                    La legislazione italiana, attraverso l’intervento del Garante Privacy, ha tuttavia evidenziato come la presenza di una struttura organizzativa stabile all’interno del paese (Facebook Italy s.r.l.) imponga l’applicazione del diritto nazionale in materia di protezione dei dati, confermando così l’applicabilità del diritto all’oblio anche ai giganti del web con base in altri paesi dell’UE.

                    Analogamente, Twitter e LinkedIn presentano le loro politiche in materia di gestione dei dati personali, ma con una meno evidente attenzione al diritto all’oblio. Twitter, ad esempio, ha adottato misure per impedire l’eliminazione dei tweet di figure pubbliche, sottolineando la tensione tra il diritto alla privacy e l’interesse pubblico; tuttavia, il diritto all’oblio su Twitter è meno evidente poiché la piattaforma è più orientata verso il presente e la condivisione immediata di informazioni. LinkedIn, d’altra parte, offre un’informativa sulla privacy[7] dettagliata ma non fornisce indicazioni chiare sulla possibilità di esercitare il diritto all’oblio.

                    La questione del diritto all’oblio nei confronti dei social network evidenzia la complessità di applicare principi giuridici stabiliti a realtà tecnologiche e sociali in continua evoluzione. Mentre le piattaforme social si sforzano di bilanciare la protezione della privacy con la libertà di espressione e le esigenze commerciali, la definizione e l’attuazione del diritto all’oblio rimangono una sfida significativa.

                    Queste dinamiche richiedono un dialogo continuo tra legislatori, piattaforme social e società civile per sviluppare approcci che rispettino i diritti degli individui alla privacy e all’oblio digitale, pur garantendo il libero flusso di informazioni e la trasparenza. In ultima analisi, il diritto all’oblio nei social media solleva questioni fondamentali sulla nostra identità digitale e su come vogliamo che il nostro passato online influenzi il nostro futuro.

                    In ogni caso, Facebook assicura la possibilità di rimuovere contenuti che non rispettano la dichiarazione dei diritti e delle responsabilità di Facebook[8] – [9] e rinvia alla normativa sull’utilizzo dei dati[10]. È prevista la possibilità di eliminare l’account[11] in qualsiasi momento o, alternativamente, di disattivare l’account in maniera temporanea; questa opzione attribuisce la possibilità di non essere più visibile a sé stessi ed a terzi, ma di poter disporre nuovamente dell’intero complesso di informazioni, che saranno comunque nuovamente accessibili[12]. È previsto uno specifico modulo mediante il quale è possibile segnalare possibili violazioni della propria privacy[13].

                    Su Facebook, il diritto all’oblio si applica principalmente alle informazioni pubblicate dagli utenti stessi o da terze parti che possono influire sulla loro reputazione, vita personale o professionale. Questo può includere foto, post, commenti o altre informazioni che potrebbero non essere più rilevanti o che possono arrecare danno alla persona nel tempo[14].       

                    … ma in pratica?

                    Da un punto di vista pratico, bisogna evidenziare che le iniziative proposte dai principali motori di ricerca si sono rilevate nel tempo solo soluzioni di mera facciata più che di sostanza, in quanto:

                    • “de-indicizzazione” non significa “cancellazione”, cioè Google non potrà mai cancellare la pagina incriminata, ma farà solo in modo (o meglio, promette di fare in modo) di eliminare la possibilità che tale pagina figuri tra i risultati delle ricerche. In pratica, Google de-indicizzando il contenuto fa sì che lo stesso non possa essere “pescato” da chi scrive il nome e cognome dell’interessato sul motore (ma coi limiti, peraltro, che a breve vedremo). È ovvio, invece, che solo la totale cancellazione della pagina può garantire la certezza che l’informazione non venga mai più letta. Il fatto che la stessa continui a esistere nel web non esclude, infatti, la possibilità che essa venga trovata in modi alternativi rispetto alla ricerca su Google: per esempio, attraverso un link presente su un social network o su un’altra pagina di un diverso sito contenente notizia affine e mai de-indicizzata; una ricerca diretta all’interno dell’archivio del giornale online (per esempio, ricercando nel “motore di ricerca interno” al Corriere, Repubblica, ecc.);
                    • vi è una possibilità di “ripescaggio” della pagina al variare nel tempo degli algoritmi di indicizzazione. Nella causa davanti alla Corte di Giustizia, Google aveva fatto notare la possibilità che, una volta deindicizzata la pagina incriminata, la stessa potrebbe, in teoria, essere sempre ripescata in un momento successivo, dallo stesso “crawler” automatico di Google. Anche in questo caso, se la pagina continua a esistere, nulla toglie che, in futuro, possa rispuntare grazie all’algoritmo di BigG che, ogni giorno, scandaglia le notizie presenti in Rete;
                    • la sentenza era vincolante di fatto solo nei confronti di Google. Pertanto, ammesso che la notizia venga cancellata da Google, la stessa sarà agevolmente reperibile attraverso altri motori di ricerca (Bing, Yahoo, Virgilio, Tiscali, ecc.);
                    • l’attuazione della “de-indicizzazione” è subordinata non tanto alla volontà del Giudice, quanto a quella di un soggetto privato (es. Google), ossia a una company che il più delle volte non è assoggettata alla legislazione europea e che fa della circolazione dei contenuti il proprio core business. Tale situazione determina di fatto un’arbitrarietà della scelta da parte dei provider e che quindi funge da deus ex machina nel bilanciamento tra l’interesse legittimo del privato cittadino e le altre motivazioni contrapposte: il diritto di cronaca, l’interesse pubblico alla diffusione della notizia (valutata sulla base dell’indice di lettura della pagina), ecc. ;
                    • Google ha già fatto sapere tutta una serie di casi nei quali, comunque, non procederà mai alla de-indicizzazione della notizia. Si tratta dei casi in cui la notizia riguarda:
                      1. frodi finanziarie (per es.: l’amministratore di una società colpevole di bancarotta fraudolenta, oppure che ha nascosto gli utili agli azionisti; casi di insider trading, ecc.);
                      2. negligenza professionale (per es.: un medico processato per una morte sospetta; un avvocato che ha perso una causa per un errore grave; un ingegnere che ha costruito un palazzo poi crollato, ecc.);
                      3. condotta pubblica di funzionari statali (per es.: un caso di concussione o di corruzione);
                      4. condanne penali. È proprio questo il punto più dolente: parlare di “condanne penali” (concetto che racchiude già tutti i casi appena elencati) è così generico da ricomprendere quasi tutte le richieste di diritto all’oblio (quasi sempre legate a processi di carattere penale, indagini della magistratura, ecc.). Va da sé che se Google escluderà, a priori, proprio queste istanze, il “modulo automatico” è praticamente inutile.
                    • la sentenza della Corte di Giustizia si applica solo in Europa e non nel resto del mondo, dove Google potrà continuerà a rendere indicizzato il contenuto. Così, chi comunque faccia la ricerca su Google.com anziché su Google.it o su Google.fr troverà ugualmente la “pagina incriminata”. È anche questa l’ennesima (negativa) conseguenza del fatto che il contenuto incriminato non è stato cancellato ma solo rimosso dalle ricerche;
                    • l’applicazione del diritto all’oblio in un contesto globale: prendendo ad esempio Facebook sono evidenti le molteplici sfide legate alla natura transnazionale della piattaforma e alla vastità della sua rete utenti, ad esempio:
                      1. diversità di leggi sulla privacy: Facebook opera in numerosi paesi, ognuno con la propria legislazione in materia di protezione dei dati e privacy. Mentre in Europa il GDPR (Regolamento Generale sulla Protezione dei Dati) fornisce una cornice abbastanza omogenea che include il diritto all’oblio, in altre regioni del mondo tale diritto potrebbe non essere riconosciuto o potrebbe essere interpretato in modi diversi. Questo pone la sfida di come applicare coerentemente una politica di privacy su scala globale;
                      2. implementazione tecnica: la struttura tecnologica di Facebook è complessa e altamente distribuita, con server e centri dati dislocati in diverse parti del mondo. Quando un utente richiede la rimozione di contenuti basandosi sul diritto all’oblio, Facebook deve essere in grado di identificare e rimuovere efficacemente tali contenuti in tutte le sue infrastrutture, il che può essere tecnologicamente impegnativo;
                      3. ambito di applicazione territoriale: c’è stata una notevole discussione sui confini territoriali dell’applicazione del diritto all’oblio. Ad esempio, se un utente in Francia chiede la rimozione di un contenuto, Facebook deve rimuovere quel contenuto solo per gli utenti nell’UE o globalmente? Le interpretazioni e le sentenze dei tribunali europei hanno variato nel tempo, aumentando la complessità della conformità.

                    Marketing

                    Il GDPR amplia il diritto all’oblio, comunemente associato al diritto di interrompere la diffusione di private informazioni, alla sfera dei dati con finalità di marketing. Come già affrontato fin qui, la cancellazione di dati personali è solitamente volta ad impedire l’espansione di informazioni obsolete e nocive per la propria nomea.

                    Allargando tale concetto al contesto di marketing, anche qui il GDPR attribuisce all’utente, la facoltà di cancellazione dei propri dati sensibili, qualora questi non siano stati cancellati autonomamente alla cessazione dei termini per cui essi sono stati acquisiti. Qualora infatti dati acquisiti con finalità di marketing, fossero ancora presenti al termine del loro reale scopo per cui sono stati acquisiti, l’interessato potrà fare richiesta di cancellazione degli stessi senza la necessità di fornire valide motivazioni. Ulteriormente, tale diritto si applica anche qualora i dati siano stati acquisiti in modo illecito senza il consenso dell’interessato. Pertanto allorché quest’ultimo ne venisse a conoscenza, può far valere il diritto all’oblio e i propri dati dovranno essere eliminati, onde evitare sanzioni da parte dell’autorità garante, in quanto il loro trattamento non è conforme al GDPR.

                    Ma allora: è possibile un diritto all’oblio in ambito digitale?

                    La riflessione sulla natura e l’applicazione del diritto all’oblio nel contesto digitale apre un dibattito complesso e articolato che interroga direttamente i limiti delle tecnologie attuali e le loro implicazioni etiche e giuridiche. La questione centrale riguarda la possibilità di controllare e, in certi casi, limitare la persistenza delle informazioni personali nell’ecosistema digitale, in particolare nei motori di ricerca e nelle SERP (Search Engine Results Pages).

                    Il diritto all’oblio è stato interpretato come la capacità di influenzare l’accessibilità delle informazioni digitali, volto a rendere più difficile il recupero di specifici dati personali, con l’obiettivo ultimo di preservare l’autonomia dell’individuo sulla propria identità digitale. Tale concetto si scontra però con la natura intrinsecamente transattiva e distribuita della memoria digitale, che fonde insieme capacità computazionali e interazioni umane in un processo di memorizzazione unificato e di difficile regolamentazione.

                    Una possibile via d’uscita potrebbe consistere nell’adottare una concezione di “pseudo-deindicizzazione”, analogamente alla distinzione tra pseudo-anonimizzazione e anonimizzazione, che contempli diritti come la rettifica, l’aggiornamento e la cancellazione dei dati in modo più specifico e operativo.

                    L’idea di un diritto all’Habeas SERP, ossia il controllo individuale sui risultati di ricerca legati al proprio nome, solleva questioni critiche relative alla libertà di espressione e al diritto di cronaca, ponendo l’identità digitale in una posizione potenzialmente predominante rispetto ad altri diritti fondamentali.

                    La proposta di rendere pubblici gli algoritmi di ricerca potrebbe democratizzare l’accesso a tecniche di ottimizzazione SEO, ma comporterebbe al contempo rischi di manipolazione informativa e alterazioni degli equilibri di mercato, soprattutto per quanto riguarda i motori di ricerca dominanti. In definitiva, qualsiasi tentativo di normare il diritto all’oblio digitale richiederebbe un accordo internazionale, per evitare disparità di trattamento e digital divide. Tuttavia, l’adeguamento sociale e tecnologico all’evoluzione della memoria digitale potrebbe offrire un terreno fertile per nuove soluzioni che bilancino privacy, diritto all’informazione e libertà di espressione.

                    Già dagli anni 2000, il Garante italiano per la protezione dei dati personali ha affrontato la questione della “gogna elettronica”, sottolineando la necessità di un diritto all’oblio che consentisse agli individui di richiedere la rimozione di notizie online non più attuali o rilevanti. Questa preoccupazione ha portato alla richiesta ai motori di ricerca di aggiornare periodicamente i dati online per riflettere situazioni attuali, sottolineando l’importanza dell’accuratezza e della pertinenza delle informazioni disponibili sul web.

                    Con provvedimenti successivi, l’Autorità Garante ha ribadito l’importanza dell’aggiornamento degli archivi giornalistici online, offrendo la possibilità di aggiungere note o link che forniscano contesto aggiuntivo, garantendo così una rappresentazione completa e aggiornata delle notizie riguardanti individui specifici.

                    L’intervento del Garante nel 2019, in relazione a una richiesta di cancellazione di articoli giudiziari, ha sottolineato il delicato bilanciamento tra il diritto alla privacy e la libertà di cronaca. L’Autorità ha riconosciuto la legittimità del trattamento dei dati personali per finalità giornalistiche, anche senza il consenso degli interessati, a condizione che tale trattamento rispetti la libertà e la dignità dell’individuo e si basi su fatti di rilevanza pubblica. In questo caso, l’interesse pubblico prevaleva sulla richiesta di esercizio del diritto all’oblio, data la rilevanza della vicenda giudiziaria e il ruolo pubblico di uno dei soggetti coinvolti.

                    La “riforma Cartabia” del 2021 rappresenta un ulteriore passo avanti, delegando il governo a regolamentare la deindicizzazione di dati personali in caso di archiviazione o assoluzione in procedimenti giudiziari, rafforzando così il diritto all’oblio degli individui coinvolti in indagini o processi. Questa legislazione stabilisce criteri specifici per garantire la rimozione efficace di informazioni obsolete o non più rilevanti dai motori di ricerca, sottolineando l’importanza di una pronta reazione in caso di mancato adempimento.

                    Queste evoluzioni normative e giurisprudenziali evidenziano la crescente consapevolezza della necessità di bilanciare la libertà dell’informazione con i diritti fondamentali degli individui nell’era digitale. Tuttavia, la rapidità dell’innovazione tecnologica e la sua influenza sulla diffusione delle informazioni sollevano questioni complesse relative alla regolamentazione dell’informazione online. La definizione di una “etica del cybernauta” e l’elaborazione di principi per una “cittadinanza digitale” responsabile sono fondamentali per garantire che la libertà di espressione non diventi un veicolo per l’offesa o la diffamazione, sottolineando la necessità di un equilibrio tra i diritti individuali e l’accesso pubblico all’informazione in un contesto sempre più dominato da realtà virtuali e piattaforme digitali.

                    Nel contesto della “società digitale”, dove le informazioni sono facilmente registrate, archiviate e accessibili online, il diritto all’oblio è diventato un tema centrale nei dibattiti sulla privacy e sulla gestione delle informazioni personali. Le persone possono essere danneggiate o discriminate a causa di informazioni obsolete o imprecise che rimangono online e il diritto all’oblio può offrire una forma di protezione in questi casi.

                    Tuttavia, implementare effettivamente il diritto all’oblio è complicato, poiché coinvolge un delicato equilibrio tra la protezione della privacy individuale e la libertà di informazione. Le piattaforme online devono trovare modi per rispettare le richieste di rimozione delle informazioni senza compromettere la disponibilità di informazioni legittime e importanti.

                    In definitiva, il diritto all’oblio rappresenta una sfida importante per la società digitale, poiché cerca di trovare un equilibrio tra la protezione della privacy individuale e la libertà di informazione in un ambiente online in continua evoluzione.

                    La complessa relazione tra la tutela del diritto all’oblio nell’era digitale e la natura globale della rete Internet solleva questioni significative circa l’efficacia e l’applicabilità della legislazione in materia di protezione dei dati personali, come dimostrato dal GDPR e dalla giurisprudenza relativa. Il caso Google del 2019 presso la Corte di giustizia dell’Unione Europea ha messo in evidenza i limiti territoriali del diritto all’oblio, stabilendo che la deindicizzazione dei dati personali richiesta in base all’articolo 17 del GDPR debba essere attuata solo all’interno dell’Unione Europea, senza imporre obblighi di cancellazione globale ai gestori dei motori di ricerca.

                    Questa decisione sottolinea l’inadeguatezza di un quadro normativo che non contempla un’effettiva tutela dell’oblio su scala mondiale, evidenziando le difficoltà nell’armonizzare la protezione dei dati personali con il carattere intrinsecamente senza confini della rete. Sebbene il GDPR rappresenti un avanzamento significativo nella protezione dei diritti degli individui nell’ambito digitale, la sua portata limitata territorialmente lascia aperte questioni relative alla gestione dei dati personali su piattaforme accessibili globalmente. In conclusione, la tutela dell’oblio in Internet rimane un ambito di notevole complessità, dove le normative esistenti si scontrano con la natura decentralizzata e globale della rete. La ricerca di un equilibrio tra la dignità della persona e la libertà di espressione si manifesta come una sfida continua, resa ancora più ardua dai rapidi sviluppi tecnologici. Il dibattito sull’adeguatezza delle normative in questo contesto è aperto, richiedendo agli interpreti un costante sforzo ermeneutico per navigare tra le incertezze disciplinari e le dinamiche in evoluzione del mondo digitale. In questo scenario, l’imperativo di trovare soluzioni che riflettano i valori fondamentali della società nell’era dell’informazione si affianca alla consapevolezza che soluzioni universalmente applicabili possono essere difficili, se non impossibili, da realizzare in un ambiente caratterizzato da un “algoritmo sovrano” che continua a ridefinire le modalità di interazione e di espressione nell’ambito virtuale.


                    [1] https://reportcontent.google.com/forms/rtbf

                    [2]  La locuzione inglese Search Engine Results Page, più semplicemente “SERP”, indica comunemente la pagina dei risultati di un motore di ricerca.

                    [3] https://www.bing.com/webmaster/tools/eu-privacy-request

                    [4] https://io.help.yahoo.com/contact/index?page=contactform&locale=it_IT&token=Zh%2FBBVqXzLHlIbokbUqVWTUbuuQeXGkGzJ%2FxkLsJP07Zgk%2B%2B1eFwBr5d5R9oF0htO%2BBvaT6%2BQLZMo4%2BSEICbjKW0zsv%2BqoEY6hjokP5ca3%2FIpyH1fp5qSukQCRifkLYrh8vWbODAAU3Jgf9Mu86t7Q%3D%3D&selectedChannel=email-icon&yid=

                    [5] www.istella.it

                    [6] https://www.istella.it/it/privacy

                    [7] https://www.linkedin.com/help/linkedin/topic/a65?trk=hc-hp-recommendedTopics

                    [8] https://it-it.facebook.com/legal/terms/previous

                    [9] https://www.facebook.com/legal/terms/update?ref=old_policy

                    [10] https://www.facebook.com/privacy/policy/?entry_point=data_policy_redirect&entry=0

                    [11] https://www.facebook.com/help/125338004213029

                    [12] In caso di eliminazione permanente dell’account, Facebook. garantisce l’eliminazione di tutti i contenuti, anche quelli memorizzati sui propri sistemi di backup, entro novanta giorni successivi alla relativa richiesta, ad eccezione di alcuni contenuti al cui presenza sia reputata necessaria per motivi tecnici. Alcune informazioni rimarranno tuttavia ancora presenti nei sistemi di Facebook Inc. nonostante l’eliminazione.

                    [13] https://www.facebook.com/help/contact/144059062408922

                    [14] https://www.facebook.com/help/contact/319149701968527

                    Bibliografia

                    ASSONIME – Associazione fra le società italiane per azioni. “Diritto all’oblio e deindicizzazione dai motori di ricerca: la giurisprudenza della Corte di giustizia”. Note e Studi 1/2020.

                    Direzione della Comunicazione Unità Stampa e informazione. Comunicato stampa n. 197/22. Lussemburgo, 8 dicembre 2022. Sentenza della Corte nella causa C-460/20 | Google (Deindicizzazione di contenuti asseritamente inesatti). “Diritto alla cancellazione («diritto all’oblio»): il gestore di un motore di ricerca deve deindicizzare le informazioni incluse nel contenuto indicizzato quando il richiedente dimostri che sono manifestamente inesatte”.

                    EDPB – European Data Protection Board. “Linee guida 5/2019 sui criteri per l’esercizio del diritto all’oblio nel caso dei motori di ricerca, ai sensi del RGPD” (parte 1 – versione 2.0, adottate il 7 luglio 2020.

                    GPDP – Garante per la Protezione dei Dati Personali. “Diritto all’oblio”. https://www.garanteprivacy.it/i-miei-diritti/diritti/oblio.

                    Agostini A., De Nardis A., La tua reputazione su Google ei social media: prevenire, monitorare, curare, Hoepli, Milano, 2013.

                    Alpa G., Resta G., “Le persone e la famiglia. Le persone fisiche e i diritti della personalità”, in Trattato di diritto civile, 2006

                    Ambrose M. L., Ausloos J., “The right to be forgotten across the pond”, in Journal of Information Policy, 2013.

                    Arieta G., “Una nuova impostazione dei rapporti tra informazione e tutela della vita privata?”, in Temi.

                    Ausloos J., “The Right to be Forgotten – Worth remembering?”, in Computer Law and Security Review, 2012.

                    Barchiesi A., “La tentazione dell’oblio. Vuoi subire o costruire la tua identità digitale?”, Franco Angeli, Milano, 2016.

                    Bartolini C., Siry L., “The right to be forgotten in the light of the consent of the data subject”, in Computer Law and Security Review, 2016.

                    Bassoli E., “Come difendersi dalla violazione dei dati su Internet. Diritti e responsabilità”, Maggioli Editore, Rimini, 2012.

                    Bitetto A., “Cronaca, oblio e memoria: prospettive comparate tra riservatezza e identità”. Dipartimento Jonico in Sistemi Giuridici ed Economici del Mediterraneo: Società, Ambiente, Culture. Quaderni del Dipartimento Jonico, 21/2023.

                    Ciani Sciolla J., “Diritto all’oblio e cooperazione internazionale: problemi e prospettive”, Rivista Italiana di Informatica e Diritto. Periodico Internazionale e del CNR-IGSG, fascicolo 1-2022.

                    Di Ciommo F., “Diritto all’oblio. Quello che il diritto non dice. Internet e oblio”. Da Opinioni Libere professioni. Danno e responsabilità.

                    Di Ciommo F., “Il diritto all’oblio (oblito) nel regolamento Ue 2016/679 sul trattamento dei dati personali”. Il Foro Italiano, V 6 fasc. 9/2017.

                    Finocchiaro G., “Il diritto all’oblio nel quadro dei diritti della personalità”. Il diritto dell’informazione e dell’informatica, Anno XXIX Fasc.4-5 – 2014.

                    Leucci S., “Diritto all’oblio, verità, design tecnologico: una prospettiva di ricerca Right to Be Forgotten, Truth and Technological Design”, Media Laws – Rivista di diritto dei media, Saggi – Sezione Monografica “fake news, pluralismo informativo e responsabilità in rete” Articles – Fake News, Pluralism and ISP Liability.

                    Ligresti A., “Il diritto all’oblio nella “rete” senza regole”, Amministrazione In Cammino, Rivista elettronica di diritto pubblico, di diritto dell’economia e di sicurezza e di scienza dell’amministrazione, 2022.

                    Martinelli S., “Diritto all’oblio e motori di ricerca. Memoria e privacy nell’era digitale”. Informatica Giuridica – Collana diretta da Giovanni Ziccardi e Pierluigi Perri. Estratto_024198827.

                    Messina D., “Le prospettive del diritto all’oblio nella società dell’informazione e della comunicazione”. Informatica e diritto, XXXV annata, Vol. XVIII, 2009.

                    Pardolesi R., “L’ombra del tempo e (il diritto al)l’oblio”. Obiettivo 1. Il diritto di crono. Questione Giustizia 1/2017.

                    Pisapia M, Cherchi C., “Diritto all’oblio. Prime riflessioni sull’introduzione dell’art. 64-ter disp. att. c.p.p.”. Media Laws – Rivista di diritto dei media, cronache 02/2023.

                    Tullio L., “Tracce evolutive del «right to be forgotten» tra esigenze di anonimato e richieste di deindicizzazione”, Ianus Rivista di Studi Giuridici n.22 – dicembre 2020.

                    Vesto A. “La tutela dell’oblio tra intimità e condivisione senza filtri”, Media Laws – Rivista di diritto dei media. 2/2018. Zanichelli M. “Il diritto all’oblio tra privacy e identità digitale”. Informatica e diritto, XLII annata, Vol. XXV, 2016.

                    Mobile analysis per la rilevazione di virus e malware su Android e iOS

                    La sicurezza dei dispositivi mobile è diventata una preoccupazione critica nell’era digitale. Con oltre 6 miliardi di utenti di smartphone in tutto il mondo, questi dispositivi sono diventati un obiettivo primario per i criminali informatici. Gli smartphone contengono una vasta quantità di dati personali e aziendali sensibili, rendendo l’analisi malware su questi dispositivi un aspetto fondamentale della cybersecurity moderna.

                    Android e iOS presentano approcci diversi in termini di architettura e sicurezza. Android, essendo un sistema più aperto, consente maggiore flessibilità agli utenti ma anche una maggiore esposizione alle minacce. Al contrario, iOS adotta un modello più chiuso, con rigidi controlli su app e accessi, il che rende più difficile compromettere il sistema, ma non lo esclude.

                    L’analisi malware su smartphone è il processo di esaminare un dispositivo mobile per rilevare, identificare e comprendere software malevoli che potrebbero comprometterne la sicurezza. Questa pratica è essenziale per:

                    • proteggere le informazioni personali degli utenti;
                    • salvaguardare i dati aziendali su dispositivi BYOD (Bring Your Own Device)[1];
                    • mantenere l’integrità delle reti mobili;
                    • prevenire frodi finanziarie e furti di identità.

                    I malware per smartphone si sono evoluti in diverse forme, ciascuna con obiettivi e metodi di attacco specifici:

                    • Spyware: raccoglie informazioni sull’utente senza il suo consenso;
                    • Ransomware: estorce denaro bloccando l’accesso ai dati o al dispositivo crittografando i file;
                    • Adware: genera ricavi attraverso pubblicità invasive, mostra annunci non richiesti, reindirizza a siti web malevoli;
                    • Trojan: si nasconde come app legittima per eseguire azioni malevole in background;
                    • Rootkit: ottiene l’accesso privilegiato al sistema operativo modificando il kernel del sistema per nascondere la propria presenza.

                    I malware possono infettare gli smartphone attraverso vari vettori:

                    • download di app da fonti non ufficiali;
                    • phishing attraverso SMS, email o messaggi sui social media con link malevoli;
                    • exploit di vulnerabilità del sistema operativo sfruttando bug o falle di sicurezza non corrette nel sistema operativo;
                    • connessioni Wi-Fi non sicure: intercettazione dei dati su reti pubbliche non protette.

                    L’analisi del malware per smartphone richiede un approccio multifaceted che combina diverse tecniche per ottenere una comprensione completa della minaccia. In tal senso, personale specializzato di questa articolazione Anticrimine ha implementato procedure e tecniche informatiche orientate all’analisi:

                    • del traffico di rete: una delle tecniche principali per identificare la presenza di malware su un dispositivo mobile è l’analisi del traffico di rete. Il comportamento delle app e dei processi in background può rivelare informazioni cruciali riguardanti attività malevole. Attraverso tecniche di sniffing del traffico, è possibile catturare il flusso di pacchetti di rete, analizzare la destinazione e il contenuto dei dati scambiati, nonché rilevare anomalie nei pattern di traffico[2];
                    • del comportamento delle applicazioni: le applicazioni malevole spesso richiedono più autorizzazioni di quelle strettamente necessarie al loro funzionamento;
                    • attraverso scansione antivirus: la scansione antivirus è una tecnica fondamentale e ampiamente utilizzata per l’analisi preliminare e la rilevazione di malware su smartphone. Questa metodologia si basa principalmente su un approccio di riconoscimento delle firme[3], integrato con tecniche euristiche e di rilevamento comportamentale[4];
                    • delle tracce di compromissione: è particolarmente utile analizzare tracce di compromissione (Indicators of Compromise, IoC), come quelle identificate tramite lo “Structured Threat Information Expression” (STIX)[5], che possono rivelare la presenza di malware o altre attività dannose. L’utilizzo di STIX nell’analisi di malware su smartphone rappresenta un approccio avanzato che combina standardizzazione, condivisione di intelligence e analisi strutturata. Mentre richiede un certo expertise, offre benefici significativi in termini di comprensione approfondita delle minacce e integrazione con l’ecosistema più ampio della cybersecurity.

                    [1] Espressione usata per riferirsi alle politiche aziendali che permettono di portare i propri dispositivi personali nel posto di lavoro e usarli per avere gli accessi privilegiati alle informazioni aziendali e alle loro applicazioni.

                    [2] L’analisi dei pattern di comunicazione, come connessioni frequenti a server esterni sconosciuti o trasferimenti di grandi quantità di dati senza autorizzazione dell’utente, può suggerire la presenza di malware.

                    [3] Gli antivirus confrontano i file presenti nel sistema con un database di firme di malware conosciuti. Ogni virus o malware ha una propria “firma”, una sorta di impronta digitale unica che lo identifica. Se l’antivirus rileva una corrispondenza, segnala il file come dannoso.

                    [4] Questa tecnica si basa sull’analisi del comportamento dei file e delle applicazioni. Piuttosto che cercare solo firme conosciute, il rilevamento euristico osserva i comportamenti anomali, come l’accesso non autorizzato ai dati sensibili o l’invio di pacchetti di dati a server remoti. Ciò permette all’antivirus di identificare anche malware sconosciuti, basandosi sulle azioni che essi tentano di compiere.

                    [5] Lo Structured Threat Information Expression (STIX) è un linguaggio standardizzato per la rappresentazione di informazioni sulle minacce informatiche. Nel contesto dell’analisi di malware su smartphone, STIX fornisce un framework strutturato per identificare, catalogare e analizzare le tracce di compromissione (Indicators of Compromise, IoC).

                    Tor contro VPN

                    TOR (The Onion Router) e VPN (Virtual Private Network) sono entrambi strumenti che possono essere utilizzati per proteggere la privacy e la sicurezza online. Sebbene entrambi abbiano alcune somiglianze, presentano anche differenze fondamentali che li rendono più adatti a diversi tipi di utenti e a diversi tipi di attività online.

                    TOR (abbreviazione di The Onion Router) è un software gratuito e open source che consente agli utenti di navigare in Internet in modo anonimo. È stato sviluppato a metà degli anni ‘90 dal Laboratorio di Ricerca Navale statunitense come modo per proteggere le comunicazioni governative. Oggi TOR è utilizzato da una vasta gamma di persone, da giornalisti e attivisti a individui comuni che desiderano proteggere la propria privacy online.

                    TOR funziona crittografando il traffico Internet di un utente e instradandolo attraverso una rete di server gestiti da volontari, noti come “nodi”, prima di raggiungere la sua destinazione. Questo processo rende difficile per chiunque monitorare l’attività online di un utente o determinarne la posizione fisica.

                    Per utilizzare TOR, un utente deve semplicemente scaricare e installare il browser TOR, basato sul popolare browser Web Firefox. Una volta installato, il browser TOR consente all’utente di accedere a Internet proprio come farebbe con qualsiasi altro browser Web, ma con l’ulteriore protezione dell’anonimato.

                    Uno dei principali vantaggi dell’utilizzo di TOR è che fornisce un elevato livello di privacy e sicurezza. Poiché il traffico Internet dell’utente è crittografato e instradato attraverso più nodi, è molto difficile per chiunque monitorare la propria attività online o determinare la propria posizione. Ciò rende TOR uno strumento popolare per giornalisti e attivisti che potrebbero operare in paesi con governi repressivi, poiché consente loro di comunicare e condividere informazioni senza timore di essere monitorati o puniti.

                    Un altro vantaggio di TOR è che può aiutare gli utenti a aggirare la censura di Internet. In molti paesi, i governi censurano determinati siti Web o tipi di contenuti, rendendo impossibile agli utenti l’accesso. Ma con TOR, gli utenti possono accedere a questi siti web instradando il loro traffico attraverso nodi in altri paesi dove non si applica la censura.

                    Tuttavia, il TOR non è privo di inconvenienti. Poiché la rete fa affidamento su volontari per gestire i nodi, a volte può essere lenta e inaffidabile. Inoltre, poiché TOR è spesso associato ad attività criminali, alcuni siti Web potrebbero bloccare gli utenti che vi accedono tramite la rete TOR.

                    Una VPN, o rete privata virtuale, è uno strumento che aiuta a mantenere la tua attività online privata e sicura. Lo fa crittografando il tuo traffico Internet e instradandolo attraverso un server remoto sicuro prima che raggiunga la sua destinazione. Ciò rende difficile per chiunque vedere cosa si sta facendo online o monitorare le attività online.

                    Ci sono molte situazioni per cui un utente potrebbe voler utilizzare una VPN. Ad esempio, superare una rigorosa censura di Internet di alcuni Paesi per accedere a siti Web o servizi bloccati. Oppure connettersi su una rete Wi-Fi pubblica e voler proteggere i propri dati dall’intercettazione da parte di altri sulla stessa rete o da altre minacce crittografando il traffico Internet e instradandolo attraverso un server sicuro: quando ci si connette a una rete Wi-Fi pubblica, si espone potenzialmente il proprio dispositivo e i propri dati a una serie di minacce, come hacking o malware.

                    L’uso di una VPN può anche aiutare a proteggere la privacy online. Molti siti Web e servizi monitorano le attività online e raccolgono dati personali, che possono essere utilizzati per pubblicità mirata o addirittura venduti a terzi. Una VPN crittografa il traffico Internet, rendendo molto più difficile per queste aziende tracciare e raccogliere i dati.

                    Esistono molti provider VPN diversi tra cui scegliere: aspetti fondamentali da considerare quando si sceglie un provider VPN sono il livello di crittografia utilizzato, la posizione e il numero dei server, nonché le politiche sulla privacy e sulla registrazione.

                    Una delle principali differenze tra TOR e VPN è il modo in cui instradano il traffico Internet. TOR instrada il traffico attraverso più livelli di server, o “router a cipolla”, prima che raggiunga la destinazione. Ciò rende difficile per chiunque monitorare le attività online o determinare il vero indirizzo IP mittente.

                    D’altro canto, una VPN instrada il traffico attraverso un unico server sicuro. Questo server crittografa il traffico e assegna un nuovo indirizzo IP temporaneo, rendendo difficile per chiunque vedere cosa si sta facendo online o tracciare il vero indirizzo IP.

                    Un’altra differenza fondamentale tra TOR e VPN è il livello di crittografia che forniscono. TOR crittografa il traffico più volte mentre passa attraverso i router Onion, fornendo un livello di sicurezza molto elevato. Tuttavia, ciò significa anche che TOR può essere più lento della VPN, poiché il traffico deve passare attraverso più livelli di crittografia. D’altra parte, la VPN crittografa il traffico solo una volta, rendendolo più veloce di TOR. Tuttavia, ciò significa anche che la VPN potrebbe[1] fornire un livello di sicurezza inferiore rispetto a TOR, poiché il traffico viene crittografato solo una volta.


                    [1] Dipende dalla complessità della crittografia.

                    Individuazione dell’account ID

                    Breve raccolta di  procedure per l’individuazione dell’account ID

                    Il social network Facebook distingue tre tipologie di account:

                    • Profilo
                    • Pagina
                    • Gruppo

                    Per individuare l’ID associato all’account Facebook occorre:

                    • visualizzare la home dell’account, cliccare sulla stessa con il tasto destro del mouse e selezionare l’opzione “Visualizza sorgente pagina”;
                    • cliccare CTRL+F e inserire le parole chiave “userID” (in caso di profilo), “pageID” (in caso di una pagina) e “groupID” (in caso di un gruppo);
                    • cercare, nella pagina aperta CTRL + F,una delle parole chiave che sarà seguita da un codice numerico che rappresenta l’ID del profilo;

                    Per ulteriore conferma – una volta ricavato l’ID – provare su una nuova pagina l’url così composto: www.facebook.com/ID (inserire il numerico ricavato).

                    Per individuare l’ID associato all’account Tik Tok occorre:

                    • visualizzare la home dell’account, cliccare sulla stessa con il tasto destro del mouse e selezionare l’opzione “Visualizza sorgente pagina”;
                    • cliccare CTRL+F e inserire le parole chiave “uID”
                    • cercare, nella pagina aperta CTRL + F,una delle parole chiave che sarà seguita da un codice numerico che rappresenta l’ID del profilo;

                    Accedere nell’account che – per Telegram – vengono distinti in:

                    • utente
                    • gruppo
                    • supergruppo
                    • canale privato

                    Andare in Search chats e inserire get_id_bot avendo come risposta: Your Chat ID is=ID (numerico ricavato).

                    Per individuare l’ID associato ad un profilo twitter si può utilizzare il link https://tweeterid.com

                    Inserire nel campo di ricerca l’handle, cliccare convert e l’applicazione restituirà un codice numerico che rappresenta l’ID del profilo twitter.

                    Analogamente, se si conosce l’ID, inserendolo e cliccando convert si otterrà l’handle dell’account twitter.

                    Per individuare l’ID associato all’account Instagram occorre:

                    • visualizzare la pagina del profilo di interesse, cliccare sulla stessa con il tasto destro del mouse e selezionare l’opzione “Visualizza sorgente pagina”;
                    • cliccare CTRL+F e inserire le parole chiave “profilePage”;
                    • cercare, nella pagina aperta CTRL + F,le parole chiave che saranno seguite come segue (page_id: profilePage_: ID) da un codice numerico che rappresenta l’identificativo del profilo.

                     Link per trovare da ID a USERNAME https://commentpicker.com/instagram-username.php?utm_content=cmp-true

                    Link per trovare da  USERNAME a ID  https://commentpicker.com/instagram-user-id.php

                    Telegram e l’Internet libero

                    Telegram è un’applicazione di messaggistica focalizzata su velocità e sicurezza, è semplice e gratuita.

                    Telegram è sostenuto da Pavel Durov[1] e suo fratello Nikolai. Pavel supporta Telegram finanziariamente e ideologicamente, mentre il contributo di Nikolai è tecnologico.

                    Il team di sviluppo di Telegram ha la sua sede a Dubai e la maggior parte degli sviluppatori viene da San Pietroburgo. Il team di Telegram ha dovuto lasciare la Russia a causa delle normative legate al mondo IT, e ha cercato posizioni diverse come base, incluse Berlino, Londra e Singapore.

                    • Una delle caratteristiche distintive di Telegram è la sua filosofia orientata alla privacy e alla sicurezza.
                    • Supporta due livelli di crittografia[2]:
                    •  crittografia server-client che è usata nelle Chat Cloud (chat private e di gruppo);
                    • crittografia end-to-end: opzionale per le chat segrete che garantisce che solo mittente e il destinatario possano leggere i messaggi scambiati in una chat segreta. Non è abilitata di default.

                    Tutti i dati, a prescindere dal tipo, sono crittografati nella stessa maniera, sia che siano testi, media o altro tipo.

                    • Chat segrete: le chat segrete sono chat cifrate end-to-end, che offrono una maggiore sicurezza per le conversazioni. In queste chat, i messaggi possono essere autodistrutti dopo un certo periodo di tempo o dopo la lettura e non permettono l’inoltro.  Un messaggio eliminato nella conversazione, viene eliminato anche “dall’altra parte”. Inoltre, per garantire una maggiore privacy, i messaggi scambiati non lasciano tracce sui server Telegram, non fanno parte del cloud di Telegram e vi si può accedere solo dal dispositivo di origine[3].
                    • Cloud storage illimitato: offre uno spazio di archiviazione cloud gratuito e illimitato, rendendo facile il recupero dei dati in caso di perdita del dispositivo.
                    • È basato sul cloud con sincronizzazione istantanea. Ciò consente di accedere ai propri messaggi da diversi dispositivi contemporaneamente e condividere un numero illimitato di file fino a 2 GB ciascuno.
                    • Gruppi di chat: è possibile creare gruppi di chat fino a 200.000 partecipanti e condividerli con il mondo o mantenerli privati. Gli amministratori di gruppo hanno il controllo su chi può unirsi al gruppo e quali azioni possono essere seguite all’interno.
                    • Canali Telegram: i canali sono simili ai gruppi, ma consentono agli amministratori di inviare messaggi in un solo senso, a un pubblico illimitato. Sono spesso usati per diffondere notizie, aggiornamenti e contenuti a un pubblico vasto.
                    • Multi-piattaforma: Telegram è disponibile su diverse piattaforme, tra cui iOS, Android, Windows, macOS e anche come versione web.
                    • Chiamate vocali e video: supporta chiamate vocali e video. Supporta inoltre le chiamate vocali con crittografia end-to-end.
                    • Bot Telegram: è possibile aggiungere bot di terze parti alle proprie chat o ai propri gruppi per svolgere una varietà di compiti, come ricevere aggiornamenti meteo, notizie o eseguire attività automatizzate.
                    • L’infrastruttura con più data center e la crittografia implementata, permette a Telegram di essere più veloce e molto più sicuro.
                    • È possibile eliminare tutti i messaggi inviati o ricevuti in una chat individuale, mentre nei gruppi eliminare solo i propri messaggi. È possibile anche cancellare l’intera cronologia della chat individuale e del gruppo: i messaggi eliminati non lasciano traccia nella chat.

                    Gruppi e canali, le differenze

                    Sono entrambi strumenti di comunicazione che consentono agli utenti di condividere messaggi, contenuti e comunicare con altri membri. Tuttavia, ci sono alcune differenze chiave tra i due:

                    • Interazione bidirezionale nei gruppi, unidirezionale nei canali
                    • Gruppi: tutti i membri possono inviare messaggi e partecipare attivamente alla conversazione. Gli amministratori del gruppo possono moderare i messaggi e gestire i membri. È possibile attivare la cronologia permanente per consentire ai nuovi membri di accedere ai messaggi precedenti.
                    • Canali: la comunicazione è unidirezionale. Gli amministratori o i proprietari del canale possono inviare messaggi, ma i membri possono solo leggere e reagire ai messaggi inviati.
                    • Privacy e visibilità
                    • Gruppi: possono essere pubblici o privati. Nei gruppi pubblici, chiunque può cercare e unirsi al gruppo, mentre nei gruppi privati, è necessario un invito da parte di un amministratore per partecipare (solitamente un link).
                    • Canali: possono essere pubblici, il che significa che chiunque può iscriversi al canale senza bisogno di un invito. Per i canali privati occorre essere aggiunto dal creatore o avere un link di invito per unirsi.
                    • Numeri di partecipanti
                    • Gruppi: possono ospitare fino a 200.000 membri.
                    • Canali: possono ospitare un numero virtualmente illimitato di iscritti.
                    • Moderazione:
                    • Gruppi: gli amministratori di gruppo hanno il controllo su chi può unirsi al gruppo, chi può inviare messaggi e quali azioni possono essere eseguite all’interno del gruppo. Possono rimuovere o bandire membri inappropriati o disturbatori.
                    • Canali: gli amministratori dei canali possono moderare i commenti nei messaggi, ma non possono impedire a nessuno di iscriversi o di visualizzare i messaggi del canale.

                    Gli utenti

                    Gli utentiÈ possibile contattare un utente su Telegram attraverso il suo numero di telefono[4], altrimenti:

                    • quando si è membri dello stesso gruppo;
                    • se viene impostato un username pubblico altri utenti potranno usare la “ricerca globale” in base a quell’username;
                    • se si sceglie di comparire nella sezione “Persone vicine”[5] (questa opzione è disattivata di default).

                    Inoltre:

                    • non è necessario avere un username di Telegram e averne uno serve solamente perché le persone possano trovare quell’utente nella ricerca globale senza conoscere il numero telefonico;
                    • è possibile avere solo un username di base e un numero qualsiasi di username collezionabili contemporaneamente. Questo vale anche per i gruppi pubblici e i canali pubblici. Gli username collezionabili[6] funzionano esattamente come gli username base, appaiono nei risultati della “ricerca globale”, e hanno i propri link dedicati che possono essere usati al di fuori di Telegram[7];
                    • nessuno degli interlocutori vedrà gli altrui numeri telefonici a meno che questo non sia permesso nelle impostazioni della privacy;
                    • è possibile eliminare l’account dalla pagina di disattivazione[8]. L’operazione rimuoverà permanentemente tutti i propri messaggi, i propri gruppi e i propri contatti. Tale azione deve essere confermata dal proprio account Telegram[9] e non può essere annullata. Infine, l’account Telegram viene eliminato dopo 6 mesi di inutilizzo[10].

                    Telegram ha due principi fondamentali quando si tratta di raccogliere ed elaborare dati privati:

                    • non utilizza i dati personali per mostrare annunci pubblicitari;
                    • conserva solo i dati di cui ha bisogno per funzionare come servizio di messaggistica sicuro e funzionale.

                    Nella fattispecie Telegram:

                    • ai fini della legislazione applicabile sulla protezione dei dati, è il titolare del trattamento dei dati, responsabile dei dati personali quando si utilizzano i suoi servizi;
                    • per i paesi dello Spazio Economico Europeo (SEE), poiché si trova al di fuori dello SEE, Telegram ha designato una terza parte: l’Ufficio Europeo per la Protezione dei Dati (EDPO) come rappresentante ai sensi dell’articolo 27 del GDPR. È possibile indirizzare all’EDPO qualsiasi domanda relativa al GDPR utilizzando il modulo di richiesta online all’indirizzo https://edpo.com/gdpr-data-request/ oppure scrivendo all’EDPO in Avenue Huart Hamoir 71, 1030 Bruxelles, Belgio;
                    • tratta i dati personali sulla base del fatto che tale trattamento è necessario per garantire i propri interessi legittimi (tra cui: (1) fornire servizi efficaci e innovativi agli utenti; (2) rilevare, prevenire o altrimenti affrontare frodi o problemi di sicurezza in relazione alla fornitura di servizi), a meno che tali interessi non siano superati dall’interesse o dai diritti e libertà fondamentali che richiedono la protezione dei dati personali dell’utente.

                    Di seguito come Telegram utilizza e gestisce dati personali dell’utente:

                    • dati dell’account di base: utilizza il numero di cellulare e i dati di base dell’account (ovvero: nome del profilo, immagine del profilo e informazioni), ma specifica che “…non vogliamo sapere il tuo vero nome, sesso, età o cosa ti piace” e non è necessario che il nickname sia il vero nome[11];
                    • l’indirizzo di posta elettronica: quando si abilita la verifica in due passaggi per l’account o si archivia documenti utilizzando la funzione Telegram Passport, è possibile scegliere di impostare un’e-mail di recupero password. Questo indirizzo verrà utilizzato solo per l’invio di un codice di recupero password. In caso di accesso con Google o Apple, Telegram potrebbe chiedere ad alcuni utenti di fornire un indirizzo email per ricevere i codici di accesso via email anziché via SMS, in questo caso tale indirizzo email verrà archiviato separatamente dall’email di recupero e verrà utilizzato solo per l’invio dei codici di autenticazione per l’accesso all’account;
                    • i messaggi: Telegram è un servizio cloud sul quale tutti i dati (messaggi, foto, video e documenti delle chat cloud), vengono archiviati e fortemente crittografati e le chiavi di crittografia sono archiviate in diversi altri data center in diverse giurisdizioni. In questo modo nessuno può accedere ai dati dell’utente.

                    Le chat segrete utilizzano la crittografia end-to-end, ciò significa che tutti i dati vengono crittografati con una chiave che solo mittente e destinatario conoscono. Non c’è modo per Telegram o chiunque altro senza accesso diretto al dispositivo di conoscere quei messaggi. Telegram non memorizza le chat segrete sui server e per tanto le chat segrete non sono disponibili nel cloud: è possibile accedere a quei messaggi solo dal dispositivo a o da cui sono stati inviati[12].

                    Oltre ai messaggi privati, Telegram supporta anche canali pubblici e gruppi pubblici. Tutte le chat pubbliche sono chat cloud e sono crittografate, sia in archiviazione che in transito;

                    • numero di telefono e contatti: Telegram utilizza i numeri di telefono come identificatori univoci in modo che sia facile passare dagli SMS e da altre app di messaggistica e mantenere così la rete sociale. Telegram chiede il consenso prima di sincronizzare i contatti (solo numero e nome e cognome)[13];
                    • dati sulla posizione: se si condivide una posizione in una chat, questi dati sulla posizione vengono trattati rispettivamente come altri messaggi nel cloud o nelle chat segrete;cookies: vengono utilizzati solo quelli necessari per operare e fornire i servizi sul web[14];
                    • memorizzazione dei dati: per iscritti a Telegram dal Regno Unito o dallo Spazio Economico Europeo, i dati vengono archiviati in data center nei Paesi Bassi[15]. Tutti i dati vengono archiviati pesantemente crittografati in modo che nessuno possa accedere al loro contenuto.

                    In quanto un servizio cloud, Telegram elabora i dati per fornire la cronologia della chat cloud, inclusi messaggi, contenuti multimediali e file, a qualsiasi dispositivo di a scelta dell’utente senza la necessità di utilizzo di backup di terze parti.

                     

                    • Sicurezza e protezione: data l’enorme popolarità, per migliorare la sicurezza dell’account utente, nonché per prevenire spam, abusi e altre violazioni ai termini di servizio, Telegram potrebbe raccogliere metadati come l’indirizzo IP, i dispositivi e le app Telegram utilizzate, la cronologia delle modifiche al nome utente, ecc. Se raccolti, questi metadati possono essere conservati per un massimo di 12 mesi. I moderatori possono controllare i messaggi che sono stati segnalati loro dai loro destinatari, in caso accertata violazione su un messaggio inviato l’account mittente potrebbe essere limitato dal contattare estranei, temporaneamente o permanentemente. In caso di violazioni più gravi, l’account potrebbe essere bannato. Telegram può anche utilizzare algoritmi automatizzati per analizzare i messaggi nelle chat cloud per bloccare spam e phishing.
                    • Nessuna pubblicità basata sui dati dell’utente: Telegram non utilizza i dati utente per il targeting degli annunci o altri scopi commerciali.I bot: Telegram ha un’API che consente agli sviluppatori di terze parti di creare bot, utilizzandoli, l’utente invierà alcuni dei propri dati dell’account pubblico ai rispettivi sviluppatori di bot di terze parti: nome utente e immagine/i del profilo.
                    • I diritti riguardo ai dati personali forniti: ai sensi della legislazione applicabile sulla protezione dei dati, in determinate circostanze, l’utente ha i il diritto di:richiedere una copia di tutti i propri dati personali conservati e di trasmettere tale copia a un altro titolare del trattamento;cancellare o modificare i dati personali;limitare o opporsi al trattamento dei propri dati personali;correggere eventuali dati personali inesatti o incompleti.

                    Se Telegram riceve un’ordinanza del tribunale che conferma che un utente è sospettato di terrorismo, potrebbe divulgare l’indirizzo IP e numero di telefono alle autorità competenti. In tal caso, l’esecuzione di tale ordinanza verrà inclusa in un rapporto semestrale sulla trasparenza pubblicato all’indirizzo: https://t.me/transparency. Alla data di redazione di questo documento, 26/08/2024, non vi sono report per l’Italia:

                    Nota: affinché una decisione giudiziaria sia rilevante, deve provenire da un paese con un indice di democrazia sufficientemente alto per essere considerato una democrazia (https://en.wikipedia.org/wiki/Democracy_Index). Possono essere condivisi solo l’indirizzo IP e il numero di telefono.

                    Account

                    L’eliminazione di un account è possibile nella pagina di disattivazione. L’eliminazione dell’account rimuove tutti i messaggi, i contenuti multimediali, i contatti e ogni altro dato archiviato nel cloud di Telegram. Questa azione deve essere confermata tramite l’account Telegram e non può essere annullata. Per impostazione predefinita, se si smette di usare Telegram e non si è online per almeno 6 mesi, l’account verrà eliminato insieme a tutti i messaggi, i media, i contatti e ogni altro dato nel cloud di Telegram. Su Impostazioni è possibile modificare tale periodo;

                    Messaggi

                    • nelle chat segrete, l’eliminazione di un messaggio indica sempre all’app dall’altra parte di eliminarlo;
                    • nelle chat individuali qualsiasi parte può scegliere di eliminare qualsiasi messaggio, sia inviati che ricevuti, per entrambe le parti. Non c’è limite di tempo. Qualsiasi parte può anche scegliere di cancellare l’intera cronologia della chat per entrambe le parti, nel qual caso alle app verrà richiesto di rimuovere tutti i messaggi in quella chat, indipendentemente dal numero di messaggi conservati da uno dei partecipanti;
                    • nei supergruppi e nei canali, l’eliminazione di un messaggio lo rimuove per tutti i partecipanti. I messaggi eliminati e le versioni originali dei messaggi modificati dei supergruppi vengono archiviati per 48 ore dopo l’eliminazione per poter essere visualizzati nel registro degli amministratori;
                    • è possibile ordinare ai messaggi nelle chat segrete di autodistruggersi non appena viene letto. Allo scadere del timer, ad entrambi i dispositivi che partecipano ad una chat segreta viene richiesto di eliminare il messaggio (foto, video, ecc.).
                    • Informativa sulla Privacy
                    • @EURegulation per richiedere una copia di tutti i propri dati archiviati da Telegram o altre info sulla privacy dei dati;
                    • contenuto illegale su Telegram[17]: i set di sticker, i canali e i bot su Telegram sono disponibili pubblicamente, se ritenuti illegali o pornografici è possibile segnalarli a abuse@telegram.org;
                    • set di sticker che violano i diritti di proprietà intellettuale: dmca@telegram.org;
                    • inviare una richiesta relativa al Regolamento UE 2021/784: il Regolamento (UE) 2021/784 del Parlamento europeo e del Consiglio, del 29 aprile 2021, relativo al contrasto della diffusione di contenuti terroristici online (Terrorist Content Online Regulation, o regolamento TCO), consente alle autorità dei Paesi dell’UE di inviare richieste di rimozione di contenuti terroristici, se scoperti sulla piattaforma pubblica di Telegram; quest’ultimo inoltre ha designato una terza parte, l’European Digital Services Representative (EDSR), per assistere nelle comunicazioni relative al TCO. Gli utenti le cui pubblicazioni sono state rimosse in seguito al regolamento TCO possono richiedere dettagli sul motivo per cui le loro pubblicazioni sono state considerate terroristiche e su come contestare la rimozione:
                      • scrivendo a EDSR, Avenue Huart Hamoir 71, 1030 Bruxelles, Belgio;
                      • contattando il bot @EURegulation su Telegram e usando il comando /tco_ask.
                    • stopCA@telegram.org: per segnalare abusi sui minori. Mentre t.me/stopCA è il canale che pubblica aggiornamenti giornalieri sui contenuti vietati relativi alle CA – Child Abuse.

                    [1] https://it.wikipedia.org/wiki/Pavel_Durov

                    [2] Basata sulla crittografia AES simmetrica a 256-bit, sulla crittografia RSA 2048 e sullo scambio di chiavi di sicurezza Diffie-Hellman.

                    [3] Tutte le chat segrete su Telegram sono specifiche del dispositivo e non fanno parte del cloud di Telegram. Questo significa che vi si può accedere solo dal dispositivo di origine.

                    [4] Il numero di telefono è l’unico modo per identificare un utente Telegram. Telegram non raccoglie ulteriori informazioni sull’utente, quindi chi ha il numero ha l’account.

                    [5] Persone vicine è una funzione opzionale che permette agli utenti di Telegram di scoprire i gruppi locali, trovare amici con cui chattare nella loro zona, o scambiare rapidamente contatti con chi si trova nelle vicinanze. Nota: Persone vicine non è mai attivo di default – gli utenti devono abilitarlo manualmente.

                    [6] Gli username collezionabili possono essere acquistati e venduti attraverso la piattaforma d’asta Fragment, uno strumento per acquisire e scambiare domini Telegram di valore. L’acquisto di un username tramite la piattaforma conferisce una proprietà permanente, verificata dalla blockchain TON. I proprietari di username collezionabili possono liberamente assegnarli alle chat, venderli ad altri o conservarli per un uso successivo.

                    [7] username.t.me e t.me/username.

                    [8] https://my.telegram.org/auth?to=delete

                    [9] Verrà ricevuto un codice via Telegram e non via SMS,

                    [10] Assieme a tutti i messaggi, media, contatti e ogni altro dato archiviato nel cloud di Telegram. È possibile cambiare tale periodo.

                    [11] Tieni presente che gli utenti che ti hanno tra i loro contatti ti vedranno con il nome che hanno salvato e non con il tuo nickname. In questo modo tua madre può avere il nome pubblico “Johnny Depp” mentre appare come “mamma” per te.

                    [12] I media nelle chat segrete: prima di essere caricato, ogni elemento viene crittografato con una chiave separata, non nota al server. Questa chiave e la posizione del file vengono quindi nuovamente crittografate, questa volta con la chiave della chat segreta e inviate al destinatario. Ciò significa che tecnicamente il file si trova su uno dei server di Telegram, ma a tutti tranne che al mittente e al destinatario sembra un pezzo di spazzatura indecifrabile e casuale. Telegram elimina periodicamente questi dati casuali dai server per risparmiare spazio.

                    [13] È possibile interrompere la sincronizzazione dei contatti o eliminarli dai server Telegram: Impostazioni > Privacy e sicurezza > Contatti.

                    [14] Il browser utilizzato dall’utente, inoltre, consente di controllare questi cookie, incluso se accettarli o meno e come rimuoverli.

                    [15] Si tratta di data center forniti da terze parti in cui Telegram affitta uno spazio designato, tuttavia, i server e le reti che si trovano all’interno di questi data center e su cui sono archiviati i dati personali sono di proprietà di Telegram. Pertanto, non vengono condivisi i dati personali con tali data center.

                    [16] https://telegram.org/privacy/eu

                    [17] Tutte le chat e i gruppi di Telegram sono territorio privato dei loro rispettivi partecipanti. Telegram non eseguirà alcuna richiesta relativa ad esse.