NonAbbocco
Estensione Chrome e Firefox · open source

L'indirizzo sembra giusto. Non lo è.

Il phishing non ti frega perché sei distratto. Ti frega perché il tuo occhio legge l'inizio di un indirizzo e smette lì.

barra degli indirizzi
https://paypal.com questo leggi .verifica-account.xyz questo è il sito /login

Il dominio è verifica-account.xyz, registrato da chiunque per pochi euro. “paypal.com” è soltanto testo che gli sta davanti. NonAbbocco fa questa lettura su ogni pagina che apri, prima che tu digiti qualcosa.

Come decide

Quattro domande, non un punteggio

La prima versione del motore sommava punti. Dava 55 a paypal-secure.xyz/login e 55 anche a posteitaliane.it: un attacco da manuale e il sito vero di Poste, stesso verdetto. Il problema non erano i pesi, era sommare fra grandezze che non si sommano.

identity

Chi dice di essere questo sito?

credentials

Cosa ti sta chiedendo?

transport

Come lo trasmette?

reputation

Cosa ne sanno gli altri?

rank 5veto — solo un riscontro di Safe Browsing
rank 4identity ≥ 2 E credentials ≥ 1
rank 3identity ≥ 2 O (identity ≥ 1 E credentials ≥ 1) O (transport ≥ 2 E credentials ≥ 1)
rank 2identity ≥ 1 O transport ≥ 1 O reputation ≥ 1
rank 1nessuna evidenza

Guarda cosa manca: credentials non compare mai da sola. Una pagina che chiede una password non è per questo sospetta — è la cosa più normale del web. Se bastasse da sola, ogni login di ogni banca sarebbe un allarme e disinstalleresti l'estensione in due giorni.

È questa scelta che ha eliminato i falsi positivi su posteitaliane.it e login.microsoftonline.com, e che impedisce di bloccarti il router di casa su 192.168.1.1.

Il percorso

Dai segnali al numero, in sei passi

  1. 1
    La pagina finisce di caricarsi

    content.js legge il DOM e si ferma lì: quanti campi password ci sono, come si chiamano i campi, verso quale host punta il form, il titolo, il testo visibile. Non decide nulla. Gira su ogni pagina che apri, cioè anche dentro quella dell'attaccante, e lì non si tengono né segreti né giudizi.

    campi passwordnomi dei campidestinazione dei formtitolotesto visibile
  2. 2
    I segnali arrivano a background.js

    background.js è l'unico contesto che può importare il motore come modulo, quindi è l'unico posto dove le euristiche esistono. Dall'indirizzo ricava quello che il DOM non dice.

    punycode → Unicodedominio registrabile (PSL)tokenizzazioneskeleton dei confondibili
  3. 3
    Le regole scattano in ordine

    Prima le esenzioni, che azzerano categorie intere: nessun punteggio sopravvive a un'esenzione, ed è così che il router di casa non diventa un allarme. Poi il veto. Poi le regole forti (2 livelli) e deboli (1 livello, e da sole non superano il livello 1).

    23 regoleesenzioni → veto → forti → deboli
  4. 4
    Ogni regola alimenta una categoria

    Non un totale unico: quattro accumulatori separati, ciascuno saturato a 3. Sommare fra categorie incommensurabili è l'errore che il primo motore faceva.

    identitycredentialstransportreputation
  5. 5
    La tupla dei livelli entra in una tabella

    Il rank non è una soglia su una somma: è una lettura della quaterna dei livelli. Due pagine con lo stesso totale ma categorie diverse ricevono risposte diverse — che è tutto il punto.

  6. 6
    Esce il rank, e con lui cosa vedi

    Sopra la soglia che hai scelto, l'interstiziale. Sotto, la pillola. In entrambi i casi il verdetto finisce in storage.session, ed è quello che il popup della barra ti rilegge: un solo numero, non due calcoli che si somigliano.

    12345
1
Nessun segnale noto

Non abbiamo rilevato segnali di phishing. Non è una garanzia che il sito sia sicuro.

2
Qualche anomalia

Qualcosa non torna, ma potrebbe essere legittimo. Controlla l'indirizzo.

3
Sospetto moderato

Diversi elementi sospetti insieme. Non inserire dati se non sei certo.

4
Rischio elevato

Il sito imita un servizio noto e chiede dati. Molto probabilmente è una truffa.

5
Minaccia confermata

Sito segnalato come pericoloso. Non inserire alcun dato.

Provalo

Costruisci una pagina falsa e guarda cosa succede

I verdetti li produce lo stesso codice che gira nell'estensione: questa pagina importa src/scoring.js. Niente naviga davvero, è tutto simulato qui dentro.

La pagina finta
1/5

Verifica necessaria entro 24 ore.

email
password
Accedi

23 regole · 50 marchi · 151 domini legittimi

Cosa guarda, esattamente

Ogni regola alimenta una delle quattro categorie. Questo elenco è generato da src/rules.js: non può descrivere qualcosa che il motore non fa. Il testo di ciascuna è la frase che leggeresti davvero nell'avviso.

Identità del sito

Chi dice di essere questo sito?
brand-in-subdomainforte
Il nome "PayPal" compare nel sottodominio, ma il dominio reale è un altro: è una tecnica per far leggere un marchio dove non c'è.
brand-in-registrable-domainforte
Il dominio richiama il marchio "PayPal" senza appartenergli.
brand-typosquattingdebole
Il nome del sito somiglia a "PayPal" ma non è scritto uguale: è un errore di battitura registrato apposta, per chi lo legge di fretta.
homograph-brand-collisionforte
L'indirizzo usa caratteri di un altro alfabeto per somigliare a "PayPal". Scritto per esteso è: pаypal.com
mixed-script-labelforte
L'indirizzo mescola alfabeti diversi dentro la stessa parola (pаypal), cosa che nessuna lingua richiede.
userinfo-in-authorityforte
L'indirizzo mostra "pаypal.com" prima della chiocciola, ma il sito che stai visitando è in realtà evil-collector.xyz.
raw-ip-hostforte
Il sito è raggiunto tramite un indirizzo numerico (185.220.101.5) invece che con un nome di dominio.
ephemeral-hostingdebole
La pagina è ospitata su un servizio gratuito (pages.dev), dove chiunque può pubblicare in pochi minuti.
suspicious-tlddebole
L'estensione del dominio (.xyz) è tra quelle a basso costo più usate per le truffe.
deep-subdomain-nestingdebole
L'indirizzo ha 5 livelli di sottodominio, spesso usati per allontanare il dominio reale dalla vista.
brand-claimed-in-titledebole
La pagina si presenta come "PayPal", ma il dominio non appartiene a quel marchio.

Dati richiesti

Cosa ti sta chiedendo?
credential-surfacedebole
La pagina chiede una password.
sensitive-fieldsdebole
La pagina chiede dati particolarmente sensibili (codice OTP).
access-words-in-urldebole
L'indirizzo contiene parole tipiche delle pagine di accesso o di sollecito (login).
cross-origin-credential-formdebole
Il modulo invia i dati a un dominio diverso da quello che stai visitando (raccolta-dati.xyz).
urgency-languagedebole
Il testo insiste sull'urgenza, tecnica usata per farti agire senza riflettere.

Sicurezza della connessione

Come lo trasmette?
password-over-httpforte
La password viaggerebbe in chiaro: la connessione non è cifrata.
non-standard-portdebole
Il sito risponde su una porta non standard (8443).
opaque-top-level-documentforte
La pagina è caricata da uno schema senza origine verificabile (data:).

Reputazione

Cosa ne sanno gli altri?
safebrowsing-hitveto
Questo sito è segnalato da Google Safe Browsing come pericoloso (SOCIAL_ENGINEERING).

Esenzioni

Valutate per prime. Nessun punteggio sopravvive a un'esenzione.
trusted-brand-domainesenzione
Il dominio risulta appartenere davvero al marchio che rappresenta.
private-networkesenzione
Indirizzo su rete locale o privata: non è raggiungibile da Internet.
user-allowlistedesenzione
Sito che hai indicato come attendibile nelle impostazioni.
Limiti

Cosa non sa fare

Uno strumento di sicurezza che nasconde i propri limiti è peggio di uno che non li ha, perché ti fa abbassare la guardia dove non dovresti.

Il livello 1 significa «nessun segnale noto», non «sito sicuro». Un kit di phishing su un dominio pulito con certificato valido può non attivare nessuna regola. Nessuna schermata di NonAbbocco ti dirà mai che un sito è sicuro: sostituire la tua prudenza con una certezza falsa farebbe più danni che tacere.

La lista dei marchi non scala. Nessun elenco curato a mano coprirà i marchi che non abbiamo previsto. Per questo un marchio riconosciuto da solo non produce un rank alto — serve la congiunzione — e per questo la copertura ampia è compito di Safe Browsing, una lista che non manteniamo noi.

In Manifest V3 non esiste alcun modo di bloccare una richiesta di rete. NonAbbocco non impedisce il caricamento: lo sostituisce con un avviso entro poche centinaia di millisecondi. Il phishing richiede che tu legga e digiti, ed è quella finestra che si chiude.

Non intercetta l'invio via JavaScript. Servirebbe iniettare codice nel contesto della pagina, cioè in casa dell'attaccante: inaffidabile come rilevamento e una superficie d'attacco concreta in cambio. Scelta consapevole, non dimenticanza.

Installazione

Non è ancora sugli store

Si carica in modalità sviluppatore a partire dai file del repository.

Chrome, Edge, Brave

  1. Clona il repository in una cartella locale.
  2. Apri chrome://extensions.
  3. Attiva in alto a destra la Modalità sviluppatore.
  4. Premi Carica estensione non pacchettizzata e scegli la cartella.
  5. Regola la soglia di blocco dalle Opzioni.

Firefox

  1. Apri about:debugging#/runtime/this-firefox.
  2. Premi Carica componente aggiuntivo temporaneo.
  3. Seleziona manifest.json.

Il caricamento temporaneo si azzera alla chiusura del browser.

NonAbbocco è gratis e lo resterà

Nessuna telemetria da rivendere, nessuna versione a pagamento, nessun investitore da ripagare. Se ti ha risparmiato un guaio, offrimi un caffè.

Offrimi un caffè