SaveSaveSaveSave ← Prima di agire
Italiano

Traduzione assistita da macchina, non revisionata da madrelingua. In caso di dubbio fa fede la versione inglese.

Trasparenza tecnica · Settembre 2026

Come funziona davvero

Ogni affermazione di «Prima di agire», con il dettaglio che la sostiene.

Non ti serve questo documento per usare il prodotto. Esiste perché chiunque voglia verificare le affermazioni possa farlo, comprese quelle poco lusinghiere.

Motore di analisi v0.2.0 · modello dei risultati v1.0.0.

1. Copertura delle chain

EcosistemaCopertura
EVM: 14 chainEthereum, BNB Smart Chain, Polygon, Arbitrum, Optimism, Base, Avalanche, Fantom, zkSync Era, Linea, Scroll, Blast, Mantle, Gnosis. Controlli di token e wallet.
SolanaModello di sicurezza nativo (autorità di creazione, autorità di congelamento, mutabilità dei metadati, transfer hook) più dati di liquidità (numero di pool, valore totale bloccato, stato di blocco degli LP) mostrati come contesto e non come elemento del verdetto. Controlli dei wallet inclusi.
SuiSolo sicurezza dei token. Il fornitore di dati non restituisce dati di liquidità né di detentori per Sui, quindi la portata corrisponde a ciò che è davvero disponibile invece che a ciò che farebbe più bella figura.
TRONControlli di sicurezza di token e indirizzi. Si è verificato, invece di presumerlo, che la risposta del fornitore per TRON condivida lo schema EVM.
Bitcoin, Cosmos, Cardano e altriNon coperti. Non esiste alcun adattatore, e l’estrattore di indirizzi si rifiuta di proposito di offrire un’analisi che non può fare.

Aptos è stato valutato e non realizzato. Compare nel materiale commerciale del fornitore di dati, ma non è stato possibile confermare alcun endpoint tecnico verificabile, quindi non è dichiarato come supportato.

Collisioni di formato degli indirizzi

Il tipo di indirizzo viene rilevato automaticamente. Per costruzione, i quattro formati supportati non si sovrappongono, ma valeva la pena calcolare due collisioni invece di presumerle:

Esclusi di proposito anche: gli indirizzi bech32 come bc1… (fuori dall’alfabeto base58), gli identificativi di contenuto IPFS, gli hash di transazione di 64 caratteri che contengono al loro interno un indirizzo EVM di 40 caratteri esadecimali dall’aspetto valido e i nomi ENS come vitalik.eth, che si risolvono in un indirizzo ma solo tramite una consultazione che questa pagina non fa mai.

2. Fornitori di dati

ServizioRiceveScopo
GoPlus SecurityL’indirizzo e l’identificativo della chainDati di rischio di token e wallet
Il nostro Worker CloudflareL’indirizzo e l’identificativo della chainProxy per le chain in cui una chiamata diretta dal browser è bloccata; consultazioni di sanzioni e controparti
Nodi blockchain pubbliciL’indirizzo, tramite il WorkerRichieste all’oracolo delle sanzioni e sulle controparti
Cloudflare Web AnalyticsURL della pagina e metadati standard della richiestaConteggio delle visite, senza cookie
Google AdSenseURL della pagina e metadati standard della richiestaPubblicità nelle colonne laterali, sulle cinque pagine che la mostrano

Nessuno di questi richiede un account. Nessuno riceve il testo inviato per l’analisi, un risultato, un verdetto o un indirizzo estratto da un messaggio.

Il codice pubblicitario è la voce più recente e quella da descrivere con precisione. Viene caricato su cinque delle undici pagine. Nelle sei senza pubblicità (le quattro guide che spiegano gli inganni via messaggio, più l’informativa sulla privacy e le condizioni) gli host pubblicitari sono rimossi sia dalla loro Content-Security-Policy sia dal markup. Poiché il browser combina la policy meta di una pagina con l’header di risposta e applica l’intersezione, quelle pagine non possono caricare annunci anche se l’header generale del sito consente ancora quegli host per le pagine che li mostrano. L’elenco delle route e il motivo di ogni voce sono in apply-ads.js. Riceve l’indirizzo della pagina e nient’altro. Gli spazi pubblicitari sono position: fixed nei margini della pagina, quindi non sono nel markup dei risultati e non vengono mostrati affatto sotto i 1280 px. Un test della suite dell’interfaccia verifica che nessun elemento pubblicitario compaia nel contenitore dei risultati, che i due spazi non contengano interpolazione di template e che a nessuna variabile globale pubblicitaria venga mai assegnato testo analizzato.

Instradamento dei fornitori

Prima la chiamata diretta, poi il proxy, chain per chain. Una risposta limitata per quota non viene mai ritentata tramite il proxy condiviso: farlo consumerebbe una quota condivisa per una richiesta già rifiutata e alla fine farebbe limitare il proxy per tutti. Sedici test fissano questo ordine.

3. L’oracolo delle sanzioni

Il Chainalysis Sanctions Oracle è uno smart contract gratuito, richiamabile pubblicamente, che risponde se un indirizzo è attualmente in una lista di sanzioni. Nessun account, nessuna chiave API.

È stato verificato invece che dato per buono: l’indirizzo del contratto è stato confrontato direttamente su Etherscan, e il selettore della funzione è stato calcolato e confermato sul bytecode distribuito. Qui è attivo su 8 delle sue 9 chain.

Il limite onesto. Una revisione indipendente ha trovato ritardi reali tra l’entrata in vigore di una designazione e il suo recepimento nell’oracolo, oltre 90 giorni in un caso documentato. Una corrispondenza è riportata come corrispondenza con l’oracolo al momento della richiesta. Non è una garanzia incondizionata dello stato attuale delle sanzioni, e questo prodotto non la descrive così.

Essere esposti non è essere colpevoli. Gli indirizzi sono pseudonimi, i fondi vi passano senza il consenso del proprietario, e interagire con un indirizzo segnalato non dimostra che qualcuno abbia agito male.

4. Controllo delle controparti recenti

Una finestra limitata e dichiarata di trasferimenti recenti di token, confrontata con lo stesso oracolo.

Cosa non è: una cronologia delle transazioni. Questa capacità non esiste a livello di protocollo su nessuna chain senza un servizio di indicizzazione, e questo prodotto non ne gestisce uno. Non vede nemmeno i trasferimenti dell’asset nativo, solo quelli di token.

Una controparte sanzionata porta il risultato a CAUTION. Non forza un FAIL. Quell’esito resta riservato al caso in cui l’indirizzo del wallet stesso è designato direttamente, perché confondere «questo wallet è designato» con «questo wallet ha ricevuto qualcosa da un indirizzo designato» è l’errore che più probabilmente verrebbe letto come un’accusa a una persona reale.

Un errore del Worker qui restituisce INSUFFICIENT DATA. Non viene mai scartato in silenzio e non viene mai mostrato come riga pulita.

5. Categorie di rilevamento nei messaggi

Ventisette regole deterministiche in sei famiglie. Non viene chiamato alcun modello linguistico, e niente del testo inviato viene mai eseguito: il motore lo legge come farebbe un correttore ortografico.

  1. Caratteri nascosti e invisibili. Caratteri a larghezza zero, override bidirezionali che riordinano ciò che viene mostrato e il blocco Unicode Tags: punti di codice che non vengono mostrati affatto e possono portare un’intera istruzione nascosta dentro una frase innocua. La sostituzione con omoglifi viene rilevata nella stessa passata.
  2. Markup nascosto. Istruzioni celate in commenti, in elementi stilizzati per essere invisibili o in attributi che chi legge non vede mai.
  3. Contenuto codificato. Base64 e codifiche simili che portano testo mai pensato per essere letto da chi lo incolla.
  4. Scavalcamento delle istruzioni. Prompt injection: testo rivolto a un sistema di IA invece che a chi legge. Include i tentativi rivolti a questo stesso scanner, che vengono segnalati come il risultato più forte invece che come un errore.
  5. Richiesta di credenziali. Richieste di seed phrase, parole di recupero, chiave privata, password o codice di autenticazione a due fattori, nelle formulazioni usate per farle sembrare di routine.
  6. Struttura dei link. Destinazioni nascoste prima di un segno @, host con IP nudo, domini punycode che appaiono come un nome del tutto diverso, abbreviatori, nomi di marchi affidabili messi dove non hanno autorità, domini scritti per essere letti come un marchio, domini che portano un marchio di wallet con altre parole attaccate e lunghi contenuti codificati nella query.

Due di questi erano difettosi fino al 19 settembre 2026, ed entrambi sono documentati qui invece di essere corretti in silenzio.

Il falso allarme. Per decidere se un marchio si trova nella posizione del vero proprietario bisogna sapere dove finisce il suffisso pubblico di un dominio. Il motore prendeva le ultime due etichette, il che fa leggere co.uk come proprietario di coinbase.co.uk: così un normale link legittimo produceva un risultato HIGH di impersonificazione del marchio.

Da dove viene il confine del suffisso

Ora il motore contiene una tabella di suffissi pubblici a più etichette. Quella tabella è un sottoinsieme datato della Public Suffix List, non la lista stessa, ed è indicata come tale nel codice. La lista originale ha circa quindicimila voci e cambia ogni poche settimane; includerne una copia congelata intera in una pagina che deve restare leggera sarebbe una dipendenza vecchia spacciata per autorevole. La tabella inclusa copre i secondi livelli dei codici paese usati dai siti comuni e omette del tutto le regole jolly e di eccezione della lista originale, che un semplice test di appartenenza non può esprimere.

build-suffixes.js rigenera la tabella dalla lista originale e vi scrive la data in cui è stata presa. Si rifiuta di scrivere una tabella che non ha potuto scaricare, e si rifiuta di scriverne una che non supera i propri controlli di coerenza: una tabella di suffissi sbagliata in silenzio è peggio di una visibilmente vecchia. I suffissi di hosting come github.io sono esclusi di proposito: lì l’etichetta è davvero registrata da chi l’ha chiesta, quindi un marchio di wallet su uno di essi merita di essere segnalato invece che giustificato.

Un confine non risolto non viene mai indovinato. È la parte che impedisce al bug originale di tornare in un’altra forma. Quando un host termina con un suffisso che la tabella non contiene e ha la forma di un registro di codice paese (un codice paese di due lettere preceduto da una breve etichetta amministrativa, come i reali msk.ru o nom.za), il confine viene dichiarato sconosciuto. Ogni giudizio sul marchio viene allora sospeso, e a chi legge si dice che non è stato possibile determinare la proprietà invece di dirgli che il sito sta impersonando qualcuno. Mancare un rilevamento su un suffisso insolito è un errore minore che dire a qualcuno che il vero sito della sua banca sta impersonando la sua banca.

Il punto cieco. Il trucco più diffuso con i link, registrare un dominio scritto per essere letto male (metarnask per metamask), non veniva rilevato affatto. Ora sì, provando tutti i modi in cui uno sguardo potrebbe leggere il nome invece di ridurlo a una sola grafia: la cifra 1 sta per l in un dominio e per i nel successivo, quindi una sola passata di normalizzazione ne prende uno e manca l’altro.

Cosa sfugge ancora. Un semplice errore di battitura senza caratteri confondibili, come metamsk.io, non viene rilevato. Un test della suite verifica che non lo sia, così la lacuna resta nota invece di diventare una sorpresa. Il motore inoltre non risolve mai un link abbreviato: seguire un indirizzo scelto da uno sconosciuto è proprio l’attacco, quindi un abbreviatore viene segnalato come non risolto invece di essere espanso.

Ogni risultato porta un identificativo di regola, una gravità, un’affidabilità, le posizioni esatte dei caratteri dove ha trovato la corrispondenza e una spiegazione in linguaggio semplice.

Spiegare non è eseguire

«Non condividere mai la tua seed phrase con nessuno» e «mandami la tua seed phrase per verificare il wallet» contengono quasi le stesse parole. Uno scanner che segnala la prima è peggio che inutile: insegna alle persone a ignorarlo.

Il motore separa l’istruzione dalla spiegazione con un punteggio di direttiva più una gestione esplicita della negazione di avvertimento. La prima volta era sbagliato: una prima versione restituiva FAIL su un articolo di sicurezza legittimo sulla protezione della seed phrase. Il file di revisione avversariale che l’ha scoperto è ora parte permanente della suite.

Falsi positivi noti, mantenuti come test

6. La politica di combinazione

Un messaggio incollato non è una cosa sola. È testo, più link, più indirizzi, e ognuno riceve un controllo diverso con copertura e lacune diverse. Ridurli a un solo punteggio distrugge l’informazione che conta di più: quale parte è pericolosa.

PASS < INSUFFICIENT DATA < CAUTION < FAIL

Il componente peggiore decide l’indicazione, e niente lo mette in minoranza. Nessun punteggio, nessuna media ponderata, nessuna maggioranza.

INSUFFICIENT DATA sta sopra PASS perché non sapere non equivale a essere in regola. Sta sotto CAUTION perché un problema specifico osservato pesa più di una mancanza di informazioni. Non può mai mascherare un FAIL.

Conseguenze visibili nell’interfaccia:

Un indirizzo 0x non porta con sé la chain, quindi la riga usa Ethereum come predefinito, indica che la chain non era specificata nel testo e offre un selettore. Cambiare chain scarta il risultato precedente, perché un risultato per Ethereum non è un risultato per BNB Chain.

Tipi di analisi

Cinque tipi in produzione: crypto_address_scan, token_scan, wallet_scan, prompt_scan, message_scan. Ognuno ha un motore dietro.

file_scan è riservato e di proposito non costruibile. È rimasto una settimana nell’elenco di produzione senza niente dietro; non si è rotto nulla, perché nulla lo chiamava, ed è proprio per questo che è stato rimosso. Un nome è un’affermazione.

7. Dove è stato trovato ogni indirizzo

L’estrazione registra le posizioni dei caratteri, quindi ogni indirizzo viene mostrato con la riga in cui compariva e l’indirizzo evidenziato al suo interno. «Send 0.5 ETH to 0x…» e «the contract at 0x… was audited» sono situazioni diverse, e un indirizzo mostrato senza la sua frase è un’affermazione senza provenienza.

Le posizioni vengono registrate una volta al momento dell’analisi, non ricalcolate alla visualizzazione cercando la stringa; altrimenti un indirizzo che compare due volte evidenzierebbe due volte la stessa occorrenza.

I link ai block explorer vengono da una tabella fissa che copre 14 chain EVM, Solana e TRON. Una chain ha un explorer noto oppure la riga dice che non ne ha. Niente indovina un URL. Il link è un link, non una consultazione: non viene fatta alcuna richiesta finché non clicchi.

8. Verifica della privacy

L’affermazione sulla privacy dell’analisi dei messaggi non è dedotta dalla lettura del codice. È stata verificata sul sito distribuito, con l’acquisizione di rete attivata prima dell’azione.

Metodo. È stato incollato e analizzato un messaggio contenente una stringa testimone unica, un URL di phishing, una richiesta di seed phrase e un payload di injection.

Il test è stato ripetuto dopo l’aggiunta del contatore di visite, per confermare che il contatore non cambia il risultato.

Conservazione. Questo prodotto non conserva nulla. Non c’è database, né sistema di account, né log lato server dei contenuti inviati, né memorizzazione del testo analizzato nel browser. I terzi indicati nella sezione 2 tengono i propri registri secondo le proprie politiche, che non controlliamo e che non descriviamo al loro posto.

9. La suite di test

Un’affermazione di rigore vale esattamente quanto la suite che la sostiene. Queste coprono garanzie sostanzialmente diverse e per questo sono riportate separatamente.

SuiteAsserzioniCosa garantisce
Motore dei messaggi176Ogni famiglia di rilevamento, il confine tra spiegare ed eseguire, l’estrazione degli indirizzi, gli estratti di contesto e i link agli explorer
Interfaccia / integrazione / XSS81Il codice effettivamente incorporato nella pagina, compresa una suite completa di test di cross-site scripting e i controlli di isolamento pubblicitario
Regressione del motore degli indirizzi61Le etichette dei verdetti con dati del fornitore malevoli, benigni, parziali, contraddittori e malformati
Modello di analisi57La politica di combinazione, in modo esaustivo, compreso il fatto che un componente che fallisce non viene mai diluito
Instradamento dei fornitori16Ordine diretto e poi proxy per chain; una chiamata limitata per quota non viene mai ritentata tramite un proxy condiviso
Revisione avversariale20L’output del motore valutato rispetto a una lettura umana attenta, casi benigni compresi
Pagine pubblicate51Ogni esempio commentato raggiunge ancora il verdetto dichiarato, ogni capacità dichiarata dalle guide è effettivamente svolta dal motore, nessuna guida mostra un indirizzo risolvibile e lo stato pubblicitario di ogni pagina corrisponde alla politica delle route sia nel markup sia nella sua Content-Security-Policy
Totale462

Rilevamento delle divergenze

Lo scanner è un unico file autonomo, quindi ogni motore esiste due volte: una come modulo a sé e una incorporato nella pagina. Un controllo di build li confronta e fallisce in modo evidente se non coincidono.

È stato aggiunto dopo che era successo proprio questo: una correzione viveva nel modulo che nessuno carica, e per una settimana è stato distribuito un percorso di instradamento delle chain rotto mentre i test del modulo continuavano a passare.

Rilevare la divergenza era solo metà del lavoro, perché l’altra metà dipendeva da qualcuno che si ricordasse di reincollare il codice. Dal 19 settembre 2026 un secondo script fa da solo la copia, dai moduli alla pagina, e si rifiuta di scrivere qualsiasi cosa se manca un punto di riferimento: una pagina scritta a metà è peggio di una vecchia, perché una vecchia funziona ancora.

Cross-site scripting

Questa funzione prende un testo ostile da uno sconosciuto e lo rimostra sulla pagina. Ogni valore viene sottoposto a escape, compreso il testo di risposta del fornitore di sicurezza, perché anche una risposta esterna falsificata o compromessa non deve diventare markup.

Gli unici gestori inline che il renderer emette sono letterali fissi più un indice intero, e un test verifica esattamente questo. L’unico elemento link che il risultato può contenere, il link al block explorer, viene verificato nella suite XSS con uno schema abbastanza stretto da essere esso stesso l’asserzione: solo https, un host della tabella fissa e un corpo dell’indirizzo senza virgolette, spazi o parentesi angolari.

10. Header di sicurezza

Impostati come header di risposta, non solo come meta tag. Una policy in un meta tag protegge solo quel documento HTML; lasciava robots.txt, sitemap.xml e le immagini senza alcuna policy.

Verificato su risposte reali con due metodi indipendenti, non presunto dalla presenza di un file di configurazione.

Cosa è costato il cambiamento pubblicitario

Vale la pena scriverlo chiaramente, perché è una riduzione reale e la versione precedente di questa pagina diceva il contrario.

Prima della pubblicità, connect-src era una garanzia strutturale: il browser stesso si sarebbe rifiutato di inviare dati dell’analisi ovunque tranne che a due host indicati, qualunque cosa facesse il codice della pagina, anche codice introdotto per errore o da un attaccante. Ora gli endpoint pubblicitari di Google sono in quell’elenco, quindi la garanzia non è più strutturale: dipende dal fatto che il codice della pagina non passi il contenuto analizzato allo script pubblicitario.

Questa proprietà è ora garantita da un test invece che dal browser. È una garanzia più debole e preferiamo dirlo invece di lasciare in piedi la vecchia frase, più forte, quando non è più vera. script-src ha anche guadagnato 'unsafe-inline' sulle pagine dei documenti, che prima non ne avevano bisogno.

Regole di cache

L’HTML deve essere riconvalidato a ogni caricamento. Senza questo, un visitatore che torna terrebbe il motore di ieri dopo un deploy, il che per uno strumento di sicurezza significa eseguire regole di rilevamento già corrette. Le immagini vengono messe in cache a lungo. I file per i crawler hanno un’ora, abbastanza poco perché una correzione venga recepita in giornata.

11. Capacità rinviate

Indicate qui perché restino scelte e non sorprese. Nessuna esiste oggi:

Prossimi passi: analisi statica di Markdown e HTML e, dopo, una valutazione su come offrire in sicurezza un triage JavaScript limitato.

12. Lacune note

13. Cronologia delle versioni

v1
Controllo di indirizzi e token sulle chain EVM, un solo fornitore.
v2
Adattatori per Solana, Sui e TRON. Oracolo delle sanzioni verificato e integrato. Instradamento dei fornitori con ripiego sul proxy. Rilevamento delle divergenze aggiunto dopo una regressione silenziosa durata una settimana.
v3.0
Analisi di messaggi e prompt nel browser. Il modello dei risultati unificato e la politica di combinazione. Controllo delle controparti recenti. Pagine legali, statistiche senza cookie e la sezione delle guide.
Motore di analisi v0.2.0
Ventisette regole. Aggiunto il rilevamento di un cambio di destinatario a metà messaggio, dell’enumerazione delle capacità e delle formulazioni di scavalcamento che prima un possessivo o un aggettivo facevano fallire. Tutte e tre le lacune sono state trovate analizzando il nostro esempio pubblicato e ottenendo un risultato più debole di quanto dichiarato dall’articolo.
Modello dei risultati v1.0.0
Cinque tipi di analisi in produzione, la scala dei verdetti e la regola per cui vince il componente peggiore.

14. Glossario

Wallet
Contiene le chiavi che controllano le tue crypto; ti permette di inviarle, riceverle o interagire con esse.
Chiave privata / seed phrase
Un segreto che dimostra la proprietà e sposta i fondi. Non condividerlo mai: né con SaveSaveSaveSave né con nessuno. Niente di legittimo ne ha mai bisogno.
Smart contract
Codice autoeseguibile su una blockchain che definisce come si comporta un token o un’app.
Honeypot
Un token costruito in modo da poter essere comprato ma non venduto.
Autorità di creazione
La capacità di creare nuova offerta dopo il lancio. Non è automaticamente pericolosa, ma è bene saperlo.
Prompt injection
Testo scritto per essere letto da un sistema di IA invece che da te, che gli ordina di ignorare le sue regole o di agire contro il tuo interesse. Funziona che tu lo noti o no.
Omoglifo
Un carattere di un alfabeto identico a uno di un altro, usato per far sembrare vero un nome falso.
Punycode
Un modo di scrivere un nome di dominio che nel browser può apparire come un nome completamente diverso. Il metodo classico per imitare un dominio noto.
Oracolo delle sanzioni
Uno smart contract richiamabile pubblicamente che risponde se un indirizzo è attualmente sanzionato: gratuito, sulla chain, senza account.
Controparte
Un indirizzo con cui un wallet ha fatto transazioni direttamente. L’esposizione a una controparte rischiosa non equivale ad affermare che il wallet stesso sia rischioso.
INSUFFICIENT DATA
Un risultato a sé, non un PASS di ripiego. Il controllo non è stato completato: non si sa nulla, né in un senso né nell’altro.
Accesso in sola lettura
Il permesso di vedere, mai di modificare, spostare o spendere.

Le correzioni sono benvenute nel tracker delle issue del progetto o via e-mail a savesavesavesave@tuta.io. Se qualcosa qui è sbagliato, dirlo pubblicamente è lo scopo stesso del documento. Un’affermazione di questo documento che si è allontanata dal codice è un bug, e merita di essere segnalata come tale.