\\ Home Page : Storico : Software e Sicurezza (inverti l'ordine)
Di seguito gli interventi pubblicati in questa sezione, in ordine cronologico.
Di Alex (del 16/05/2026 @ 17:00:00, in Software e Sicurezza, letto 294 volte)
Interfaccia di Wireshark che mostra pacchetti malevoli evidenziati in rosso, con un occhio che si rifrange in pixel di codice.
Nel dominio delle reti telematiche, la visibilità assoluta è l'illusione prediletta dai sistemisti. Wireshark, lo sniffer open-source per l'analisi dei protocolli, opera commutando le interfacce di rete in "promiscuous mode", catturando l'intero traffico di transito. Ma lo strumento di analisi nasconde una contraddizione fatale: per dissezionare un pacchetto ostile, deve prima eseguirlo parzialmente. LEGGI TUTTO L'ARTICOLO
Bonus Video
L'architettura tecnica di Wireshark
Wireshark rappresenta lo strumento principe per l'analisi dei protocolli di rete, uno sniffer open-source che ha rivoluzionato il modo in cui gli amministratori di rete e i professionisti della sicurezza informatica diagnosticano problemi, analizzano il traffico e conducono indagini forensi. Il suo funzionamento si basa sulla capacità di commutare le interfacce di rete in una modalità operativa speciale chiamata "promiscuous mode", una configurazione che obbliga il sistema operativo a catturare e consegnare all'applicazione non solo i pacchetti destinati alla specifica macchina, ma l'intero traffico di transito visibile sul segmento di rete. In una rete Ethernet tradizionale basata su hub, questa modalità permette di intercettare tutte le comunicazioni tra tutti i dispositivi collegati, mentre in reti switched più moderne richiede tecniche aggiuntive come il port mirroring o gli ARP spoofing per reindirizzare il traffico verso l'interfaccia di analisi. Una volta catturato il flusso crudo di dati, Wireshark procede alla sua dissezione, decodificando i pacchetti binari strato dopo strato attraverso centinaia di parser specializzati chiamati "dissectors". Ogni dissector è un modulo software dedicato a un protocollo specifico, dall'HTTP/2 al SMBv3, dal TLS al DNS, fino ai codec audio-video come iLBC e le famiglie dei protocolli VoIP. Il dissector analizza la struttura binaria del pacchetto, estrae i campi significativi, li converte in rappresentazioni leggibili dall'uomo e costruisce una struttura gerarchica che riflette l'incapsulamento dei protocolli, dallo strato fisico fino al livello applicativo. L'approccio a dissectors modulari ha permesso a Wireshark di supportare centinaia di protocolli diversi, rendendolo lo strumento più completo e versatile per l'analisi di rete, utilizzato da milioni di professionisti in tutto il mondo. La capacità di Wireshark di decodificare in tempo reale il traffico di rete, di filtrare i pacchetti in base a criteri complessi, di ricostruire flussi TCP, di estrarre file trasferiti e di visualizzare statistiche dettagliate lo ha reso indispensabile per l'analisi forense di malware, per l'identificazione di pacchetti malformati potenzialmente pericolosi, e per la rilevazione di comunicazioni Command and Control tra malware e server di comando remoto. Nelle mani di un analista esperto, Wireshark offre una finestra senza precedenti sul traffico di rete, permettendo di vedere nel dettaglio quali dati stanno transitando, da dove provengono, dove sono diretti, e quali protocolli vengono utilizzati.
Le vulnerabilità intrinseche del linguaggio C
L'ispezione spassionata dell'architettura di Wireshark rivela però una contraddizione fatale alla base della sua stessa esistenza, una vulnerabilità sistemica che deriva dalle scelte di implementazione effettuate per garantire le prestazioni necessarie all'analisi di grandi volumi di traffico. Per garantire prestazioni eccellenti nel processare gigabit di traffico al secondo, Wireshark è scritto massicciamente in ANSI C, un linguaggio di programmazione scelto per la sua efficienza e il suo basso overhead, che permette un controllo fine della memoria e delle risorse di sistema. Questo linguaggio, a differenza di Java o C, è intrinsecamente privo di protezioni automatiche contro la corruzione della memoria, come il garbage collection automatico che libera la memoria non più utilizzata, o i controlli automatici sui limiti degli array che impediscono l'accesso a posizioni di memoria non autorizzate. La gestione della memoria in ANSI C è interamente demandata al programmatore, che deve allocare esplicitamente la memoria necessaria, verificare che le operazioni di copia non superino i limiti degli array, e liberare la memoria quando non è più necessaria. Questo controllo granulare permette prestazioni eccellenti, ma espone il software a una classe di vulnerabilità ben note e particolarmente insidiose: i buffer overflow, in cui un attaccante può scrivere dati oltre i limiti di un array sovrascrivendo aree di memoria adiacenti; i double free, in cui la stessa area di memoria viene liberata due volte causando corruzione delle strutture di gestione della memoria; i use-after-free, in cui si accede a memoria già liberata; e i dangling pointers, in cui un puntatore continua a fare riferimento a un'area di memoria non più valida. Queste vulnerabilità, note collettivamente come "memory corruption bugs", sono la causa principale delle falle di sicurezza nei software scritti in linguaggi senza gestione automatica della memoria. Nel caso di Wireshark, il problema è ulteriormente aggravato dalla modalità di esecuzione in promiscuous mode, che espone il software all'intero traffico di rete, compresi pacchetti potenzialmente malevoli costruiti appositamente per sfruttare vulnerabilità nei dissectors. Un attaccante con sufficiente conoscenza della struttura interna di Wireshark può confezionare pacchetti malformati che, quando processati dal dissector corrispondente, innescano una delle vulnerabilità di corruzione della memoria, causando un crash dell'applicazione o, nei casi più gravi, consentendo l'esecuzione di codice arbitrario sulla macchina dell'analista.
Il paradosso dell'osservatore nelle vulnerabilità CVE
Il paradosso fondamentale di Wireshark si palesa in tutta la sua drammatica evidenza quando il dissector è costretto ad assorbire l'oggetto ostile che dovrebbe esaminare, in una versione digitale del problema dell'osservatore in meccanica quantistica applicato alla sicurezza informatica. Per decodificare un pacchetto potenzialmente malevolo, per analizzarne la struttura, per determinarne la pericolosità, Wireshark deve inevitabilmente processarlo, eseguendo parzialmente il codice del dissector sull'input fornito dall'attaccante. Questo requisito funzionale trasforma lo strumento di analisi da scudo protettivo a vettore d'attacco principale, poiché la stessa operazione di ispezione può attivare la vulnerabilità che si sta cercando di identificare. L'analista che utilizza Wireshark per studiare un traffico sospetto si trova nella paradossale situazione di dover aprire il vaso di Pandora per vedere cosa c'è dentro, con il rischio che l'apertura stessa liberi il male che intendeva combattere. Un esempio emblematico e ben documentato di questa fragilità strutturale è la vulnerabilità identificata con il codice CVE-2026-5657, un difetto di tipo "Double Free" situato nel dissector del codec iLBC, utilizzato per la compressione audio nelle comunicazioni Voice over IP e in applicazioni di messaggistica istantanea. La vulnerabilità affligge tutte le versioni di Wireshark dalla 4.4.0 alla 4.6.4, un arco temporale di diversi anni durante i quali milioni di analisti hanno potenzialmente esposto i propri sistemi a questa falla. Un avversario esperto, dotato di conoscenze tecniche adeguate, può confezionare deliberatamente un pacchetto iLBC corrotto, costruito con cura per sfruttare la specifica vulnerabilità del double free, e iniettarlo nella rete che l'analista sta monitorando. Quando l'analista, inconsapevole della minaccia, apre il file di cattura che contiene il pacchetto malevolo o semplicemente monitora il traffico live sulla propria interfaccia di rete, Wireshark tenta la dissezione del pacchetto, incontrando la struttura corrotta e innescando un collasso dell'allocazione di memoria. Il risultato è un fatale arresto anomalo dell'applicazione, un Denial of Service che interrompe l'analisi e può causare la perdita di dati non salvati. In scenari più gravi, vulnerabilità di questo tipo possono consentire l'esecuzione di codice arbitrario, permettendo all'attaccante di prendere il controllo della macchina dell'analista, installare backdoor, rubare dati sensibili o utilizzare il sistema come trampolino per attacchi successivi. L'inganno è totale: il meccanismo di allerta viene sfruttato per assassinare l'osservatore, e lo strumento progettato per proteggere la rete diventa il cavallo di Troia che la compromette. I professionisti della sicurezza informatica tendono a considerare lo sniffer come un pannello di vetro trasparente dietro cui osservare i leoni della rete, dimenticando che in informatica l'atto stesso dell'osservazione esige l'esecuzione parziale del predatore, con tutti i rischi che questa esposizione comporta.
Mantenere permessi di root o esecutivi mentre un software intrinsecamente fragile mastica dati malevoli equivale a spalancare la porta della cittadella per ispezionare le lame del nemico, confidando che l'ispezione non trasformi la lama in una freccia avvelenata. Il paradosso di Wireshark è il paradosso di ogni strumento di analisi che deve eseguire per comprendere: un limite epistemologico della sicurezza informatica, destinato a rimanere irrisolto finché i linguaggi di programmazione sicuri non raggiungeranno le prestazioni dei loro antenati insicuri.
Algoritmi LZMA e LZMA2: Il compromesso tecnico tra elaborazione parallela e massima compressione dei
Di Alex (del 13/05/2026 @ 15:00:00, in Software e Sicurezza, letto 324 volte)
Rappresentazione di L'Entropia dello Spazio: L'Illusione del Vuoto negli Algoritmi LZMA e LZMA2
La gestione strutturale dei dati digitali obbedisce alle inflessibili leggi della teoria dell'informazione formulate da Claude Shannon: il processo di compressione non è altro che l'identificazione spietata e l'eliminazione della ridondanza entropica, mantenendo intatto il significato originario. Il software gratuito 7-Zip, strutturato attorno al formato contenitore nativo .7z, si è storicamente imposto come vertice analitico in questo processo termodinamico dell'informazione, prevalentemente grazie all'impiego dell'algoritmo LZMA (Lempel-Ziv-Markov chain-Algorithm) e della sua successiva iterazione evolutiva, l'LZMA2. Dietro la banale operazione utente di "creare un archivio" si cela una complessa architettura di codifica a dizionario scorrevole (sliding window) che disseziona il dato alla ricerca di simmetrie storiche.
Video Approfondimento AI
Contesto e Dinamiche
Il nucleo matematico dell'algoritmo LZMA risiede nella sua vorace capacità di mantenere un dizionario in memoria le cui dimensioni possono raggiungere limiti massicci (originariamente configurabile, spinto fino a quattro gigabyte nelle architetture moderne a sessantaquattro bit). L'algoritmo osserva il flusso dei byte in ingresso e, ogni volta che rileva una sequenza già transitata in precedenza, non la riscrive; la sostituisce chirurgicamente con un riferimento spaziale (la distanza a ritroso nel dizionario) e un parametro quantitativo (la lunghezza della sequenza ripetuta). Maggiori sono le dimensioni assegnate a questo dizionario, più a ritroso nel tempo l'algoritmo può estendere il suo "sguardo" per rintracciare specularità e annientare bit superflui, consentendo velocità di decompressione asimmetricamente rapide (da trenta a cento megabyte al secondo su singoli thread di processori moderni a quattro gigahertz) pur con requisiti di codice minimi (da due a otto kilobyte).
| Metodo di Compressione | Struttura del Flusso | Impatto sull'Hardware | Efficienza Entropica |
|---|---|---|---|
| LZMA (Puro) | Flusso Singolo Continuo | Limita l'uso della CPU a 1-2 Thread | Massima individuazione delle ridondanze globali. |
| LZMA2 (Chunking) | Suddiviso in Blocchi (Chunks) | Ottimizzato per Multithreading (Thread > 2) | Rischio di mancata compressione per ripetizioni cross-blocco. |
| Deflate / BZip2 | Modelli standard precedenti | Veloce, basso uso di RAM | Scarsa compressione volumetrica rispetto a LZMA. |
Analisi Strutturale
La crepa strutturale in questa logica matematica, che sfugge all'utente focalizzato unicamente sulla fretta operativa, è che la ricerca dell'efficienza temporale si contrappone ferocemente all'ottimizzazione volumetrica assoluta. LZMA puro garantisce una compressione estrema poiché valuta il flusso di dati come un'entità continua e ininterrotta; tuttavia, questo lo vincola a un collo di bottiglia elaborativo, non potendo spalmare i calcoli storici su più di uno o due thread del processore simultaneamente.
Per aggirare questo ostacolo cinetico sui file di enormi dimensioni, lo sviluppo di LZMA2 (originariamente concepito per il formato XZ) ha introdotto una cesura metodologica. Se forzato a utilizzare più di due thread, l'LZMA2 seziona brutalmente i dati in blocchi separati (chunk), assegnando l'elaborazione di ogni frammento a thread indipendenti per parallelizzare il lavoro sui moderni processori multi-core (fino a oltre sessantaquattro thread supportati in versioni recenti come la venticinque).
Implicazioni e Rischio
L'analisi rivela l'inganno latente: confinando la compressione all'interno di blocchi isolati nel tempo e nello spazio di memoria, l'algoritmo diviene cieco alle ridondanze che attraversano i confini dei chunk. Un blocco non può attingere al dizionario storico del blocco adiacente elaborato da un altro thread. Sebbene LZMA2 permetta genialmente blocchi "non compressi" per non peggiorare i dati già compressi intrinsecamente , se si presenta una ridondanza che supera le dimensioni del blocco LZMA2, la compressione sarà matematicamente inferiore a quella ottenibile con il vecchio LZMA puro su un singolo flusso. L'algoritmo LZMA2 rappresenta quindi un algido compromesso termodinamico tra la voracità spaziale dell'hardware moderno (tempi di calcolo paralleli) e la densità entropica assoluta del dato. Inoltre, la sicurezza integrata con crittografia forte AES-duecentocinquantasei e derivazione chiave SHA-duecentocinquantasei blinda il contenitore .7z, ma non risolve il paradosso intrinseco: per comprimere più velocemente, bisogna smettere di osservare il quadro completo.




Microsmeta Podcast
Feed Atom 0.3








(p)Link
Commenti
Storico
Stampa