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ì.
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.
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.
Chi dice di essere questo sito?
Cosa ti sta chiedendo?
Come lo trasmette?
Cosa ne sanno gli altri?
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.
Dai segnali al numero, in sei passi
-
1La pagina finisce di caricarsi
content.jslegge 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 -
2I 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 -
3Le 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 -
4Ogni 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 -
5La 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.
-
6Esce 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
Non abbiamo rilevato segnali di phishing. Non è una garanzia che il sito sia sicuro.
Qualcosa non torna, ma potrebbe essere legittimo. Controlla l'indirizzo.
Diversi elementi sospetti insieme. Non inserire dati se non sei certo.
Il sito imita un servizio noto e chiede dati. Molto probabilmente è una truffa.
Sito segnalato come pericoloso. Non inserire alcun dato.
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.
src/scoring.js come modulo ES, e i moduli non si caricano
con file://. Servi la cartella — per esempio con npx serve . — e
riapri da http://localhost.
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?Dati richiesti
Cosa ti sta chiedendo?Sicurezza della connessione
Come lo trasmette?Reputazione
Cosa ne sanno gli altri?Esenzioni
Valutate per prime. Nessun punteggio sopravvive a un'esenzione.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.
Non è ancora sugli store
Si carica in modalità sviluppatore a partire dai file del repository.
Chrome, Edge, Brave
- Clona il repository in una cartella locale.
- Apri
chrome://extensions. - Attiva in alto a destra la Modalità sviluppatore.
- Premi Carica estensione non pacchettizzata e scegli la cartella.
- Regola la soglia di blocco dalle Opzioni.
Firefox
- Apri
about:debugging#/runtime/this-firefox. - Premi Carica componente aggiuntivo temporaneo.
- 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è.