# Attacco omografico

L'attacco omografico al nome di dominio internazionalizzato è una tipologia di attacco informatico in cui un utente malintenzionato può ingannare gli utenti di un computer riguardo al sistema remoto con il quale stanno comunicando, sfruttando il fatto che molti caratteri tipografici si assomigliano (ad esempio, sono omografi, da qui il nome dell'attacco). Per esempio, un utente abituale di esempio.com può essere indotto a fare clic su un link in cui il carattere dell'alfabeto latino "A" viene sostituito con il carattere "A" dell'alfabeto cirillico.
Questo tipo di spoofing è noto anche come script spoofing. La codifica Unicode incorpora numerosi sistemi di scrittura e, per una serie di motivi, caratteri simili come la O greca, la O latina e la O cirillica non sono stati assegnati allo stesso codice. Il loro uso scorretto o malevolo è quindi possibile per gli attacchi informatici.
La registrazione di nomi di dominio omografici è simile al typosquatting, in quanto entrambe le forme di attacco sfruttano un nome simile a un dominio più affermato per ingannare un utente. La principale differenza è che nel typosquatting il malintenzionato si basa su errori umani naturali, mentre nello spoofing omografico il malintenzionato inganna intenzionalmente il navigatore web con nomi visibilmente indistinguibili. In effetti, sarebbe un raro incidente per un utente che naviga sul Web digitare, ad esempio, una lettera cirillica all'interno di una parola. Ci sono casi in cui una registrazione può essere sia di typosquatting che di spoofing omografico; le coppie di caratteri l/I, i/j, e 0/O non solo sono formate da caratteri adiacenti sulla tastiera ma presentano anche una certa somiglianza tra loro.

## Storia

Un problema di questo tipo, prima dell'avvento di Internet e persino dei terminali testuali era la confusione tra "l" (lettera minuscola "L") / "1" (il numero "uno") e "O" (lettera maiuscola per vocale "o") / "0" (il numero "zero"). Alcune macchine da scrivere nell'era pre-computer utilizzavano lo stesso carattere per la lettera L minuscola e per il numero uno; gli utenti si ritrovavano a digitare la L minuscola quando volevano indicare numero uno. La confusione tra zero e la lettera O ha dato origine alla tradizione di barrare lo zero in modo che gli operatori dei computer li distinguessero correttamente. La codifica Unicode contribuisce notevolmente a questa confusione con i suoi caratteri combinati, accenti, trattini, ecc., spesso a causa di un supporto di rendering inadeguato, specialmente con dimensioni ridotte dei font e un'ampia varietà di degli stessi.
Ancor prima, la scrittura a mano offriva ricche opportunità di confusione. Un esempio notevole è l'etimologia della parola "zenith". La traduzione dall'arabo "samt" includeva l'errore dello scriba che ha confuso una "m" per "ni". Questo era comune nella scrittura gotica medievale, che non collegava le colonne verticali alle lettere i, m, n o u, rendendole difficili da distinguere quando queste si trovavano in sequenza. Sequenze di caratteri come "rn" / "m" / "rri" ("RN" / "M" / "RRI"), possono ingannare un occhio umano anche, al giorno d'oggi, con la moderna tecnologia informatica.
In diversi contesti è stata anche riconosciuta la sostituzione intenzionale di caratteri simili appartenenti a diversi alfabeti. Ad esempio, il Falso Cirillico che è stato usato come uno mezzo di intrattenimento e la "Codifica Volapuk", in cui il cirillico è rappresentato dai caratteri latini somiglianti, che è stata usata nei primi giorni di Internet come un modo per superare la mancanza di supporto per l'alfabeto cirillico.

## Omografie nel codice ASCII

Il codice ASCII presenta diversi caratteri o coppie di caratteri che si assomigliano, noti come omografi. Gli attacchi di spoofing basati su queste somiglianze sono noti come attacchi di spoofing omografici. Ad esempio, 0 (il numero) e O (la lettera), L minuscola "l" e I maiuscola "I".
In un esempio di attacco ipotetico, qualcuno potrebbe registrare un nome di dominio che sembra quasi identico a un dominio esistente ma che punta a un altro server. Ad esempio, il dominio "rnicrosoft.com" inizia con "r" e "n", non "m". Altri esempi sono G00GLE.COM, su wikierror.org. URL consultato il 25 luglio 2020 (archiviato dall'url originale il 23 agosto 2018). che somiglia molto a GOOGLE.COM in alcuni tipi di font. Usando un mix di caratteri maiuscoli e minuscoli, googIe.com (con la i maiuscola al posto della L minuscola) sembra molto simile all'originale google.com. In alcuni tipi di font con spazi ristretti come Tahoma (usato come predefinito nella barra degli indirizzi di Windows XP), posizionando una c davanti a j, l o i si possono ottenere caratteri omografi come cl cj ci (d g a).

## Omografie nei nomi di dominio internazionalizzati

Nei sistemi informatici multilingue, diversi caratteri possono apparire uguali alla vista. Ad esempio, il carattere Unicode U + 0430, lettera cirillica a ("A"), può sembrare identico al carattere Unicode U + 0061, lettera minuscola latina a ("a"). Questo fatto può portare a non distinguere wikipediа.org (la versione cirillica) da wikipedia.org (la versione latina).
Il problema deriva dal diverso trattamento dei caratteri nella mente dell'utente e nella programmazione del computer. Se l'utente vede un carattere cirillico "а" all'interno di una stringa latina lo scambia per una "a" latina; non c'è differenza nei glifi per questi caratteri nella maggior parte dei font. Tuttavia, il computer li tratta in modo diverso quando elabora la stringa come identificativo, viene quindi a mancare una corrispondenza uno-a-uno tra l'aspetto visivo di un carattere e l'entità che rappresenta.
Il nuovo standard, già ampiamente supportato, basato sui nomi di dominio internazionalizzati, utilizza il set di caratteri Unicode completo fornendo comunque una retrocompatibilità con le versioni precedenti. L'utilizzo del set di caratteri Unicode completo ha ampliato l'insieme dei caratteri da poche decine di un singolo alfabeto a molte migliaia appartenenti ad alfabeti diversi; ciò ha aumentato enormemente la portata degli attacchi omografi.
Gli attacchi omografici aprono una vasta gamma di opportunità per il phishing e altre varietà di frodi. Un utente malintenzionato potrebbe registrare un nome di dominio simile a quello di un sito Web legittimo, ma in cui alcune lettere sono state sostituite da omografi in un altro alfabeto. Esso potrebbe quindi inviare messaggi di posta elettronica che sembrano provenire dal sito originale, ma indirizzando le persone al sito fasullo. Il sito spoof potrebbe quindi registrare informazioni come password o dettagli dell'account mentre trasmette il traffico al sito reale. Le vittime potrebbero non notare mai la differenza, fino a quando non si verificano attività sospette o criminali con i loro account.
Nel dicembre 2001 Evgeniy Gabrilovich e Alex Gontmakher, entrambi di Technion, in Israele, pubblicarono un documento intitolato "The Homograph Attack", che descriveva un attacco che usava gli URL Unicode per falsificare un URL di un sito web. Per dimostrare la fattibilità di questo tipo di attacco, i ricercatori hanno registrato con successo una variante del nome di dominio microsoft.com che incorpora caratteri cirillici.
Il 7 febbraio 2005, Slashdot ha riferito che questo exploit è stato divulgato da 3ric Johanson alla conferenza hacker Shmoocon. I browser Web che supportano IDNA sembravano dirigere l'URL http://www.pаypal.com/, in cui il primo carattere è sostituito da una "а" cirillica, nel sito della nota piattaforma di pagamento Paypal, ma in realtà portavano a un sito web contraffatto con contenuti diversi. I browser più diffusi hanno continuato a presentare problemi con la corretta visualizzazione dei nomi di dominio internazionali fino ad aprile 2017.
I seguenti alfabeti hanno caratteri che possono essere usati per gli attacchi di spoofing (si prega di notare che questi sono solo i più ovvi e comuni; le possibilità sono molte di più di quelle qui elencate):

### Cirillico

Il cirillico è, di gran lunga, l'alfabeto più utilizzato per gli attacchi omografici, perché contiene 11 glifi in minuscolo identici o quasi identici a quelli latini.
Le lettere russe а, с, е, о, р, х e у somigliano alle seguenti lettere nell'alfabeto latino: a, c, e, o, p, x e y. I caratteri cirillici З, Ч e б assomigliano ai numeri 3, 4 e 6. Il corsivo genera altri casi di omografia: дтпи (normalmente дтпи), è simile a dmnu (in alcuni font д può essere usato, poiché la sua forma in corsivo assomiglia a un carattere g minuscolo; tuttavia nella maggior parte dei font, д invece assomiglia al simbolo di derivata parziale, ∂).
Se si contano le lettere maiuscole, АВСЕНІЈКМОРЅТХ possono sostituire ABCEHIJKMOPSTX.
Le lettere cirilliche non russe che causano comunque casi di omografia sono і e i, ј e j, ѕ e s, Ғ e F, Ԍ e G, Ү e Y.
Anche se Komi De (ԁ), shha (һ), páločka (Ӏ) e ižica (ѵ) hanno una forte somiglianza con il latino d, h, l e v, queste lettere sono rare o arcaiche e non sono supportate nella maggior parte dei font standard (non sono inclusi nella WGL-4). Il tentativo di usarli potrebbe causare il cosiddetto effetto messaggio di riscatto (ransom note effect).

### Greco

Dall'alfabeto greco, solo i caratteri omicron ο e talvolta nu ν appaiono identici a una lettera dell'alfabeto latino nella versione minuscola utilizzata per gli URL. Aggiungendo anche i caratteri corsivi l'alfa greca α sembra una lettera a latina.
Usando le lettere maiuscole, l'elenco si espande notevolmente. Il greco ΑΒΕΗΙΚΜΝΟΡΤΧΥΖ sembra identico al latino ABEHIKMNOPTXYZ. Il greco ΑΓΒΕΗΚΜΟΠΡΤΦΧ sembra simile al cirillico АГВЕНКМОПРТФХ (come il cirillico Л (Л) e il greco Λ in certi font sans-serif), le lettere greche κ e о hanno un aspetto simile al cirillico к e о. Oltre a questo i caratteri greci τ, φ possono essere simili al cirillico т, ф in alcuni font, il greco δ assomiglia al cirillico б nell'alfabeto serbo, e la a cirillica in corsivo, similmente a quanto avviene per la lettera a latina, rende possibile la sua sostituzione con alfa e viceversa. La forma a mezzaluna di sigma, Σς, assomiglia sia al latino Cc che al cirillico Сс.
Se un IDN stesso viene falsificato, la beta beta β può essere un sostituto del tedesco esszet ß in alcuni tipi di carattere (e in effetti la codifica code page 437 li considera equivalenti), come anche il greco sigma ς per ç; i sostituti greci accentati όίά di solito possono essere usati per óíá in molti tipi di font, con l'ultimo di questi (alfa) che, di nuovo, assomiglia al carattere a in corsivo.

### Armeno

Anche l'alfabeto armeno può contribuire ad introdurre caratteri critici: diversi caratteri armeni come օ, ո, ս, come anche il maiuscolo Տ e Լ sono spesso completamente identici ai caratteri latini nei font moderni. Simboli come ա possono assomigliare al cirillico ш. Oltre a ciò, ci sono simboli che si assomigliano. ցհոօզս che assomiglia a ghnoqu, յ che assomiglia a j (sebbene senza punto), e ք, che può assomigliare a p o f a seconda del font. Tuttavia, l'uso dell'Armeno è problematico. Non tutti i font standard presentano i glifi armeni (mentre i simboli greci e cirillici sono presenti nella maggior parte dei font standard). Per questo motivo, Windows prima di Windows 7 visualizzava l'armeno con un font distinto, Sylfaen, che supporta l'armeno, e il mix di armeno e latino sarebbe apparso differente se fosse stato usato un font diverso da Sylfaen o un font Unicode (effetto noto come ransom note effect). La versione corrente di Tahoma, usata in Windows 7, supporta l'armeno (le versioni precedenti non lo facevano). Inoltre, questo font differenzia il latino g dall'armeno ց.
Anche due lettere in armeno (Ձշ) possono assomigliare al numero 2, Յ è simile a 3, mentre վ a volte assomiglia al numero 4.

### Ebraico

Lo spoofing dell'ebraico è generalmente raro. Solo tre lettere da quell'alfabeto possono essere utilizzate in modo affidabile: samekh (ס), che a volte assomiglia a o, vav con diacritico (וֹ), che assomiglia ad un i, e heth (ח), che assomiglia alla lettera n. Si possono trovare anche somiglianze meno precise per alcuni altri caratteri alfanumerici. Inoltre, l'alfabeto ebraico è scritto da destra a sinistra e provare a mescolarlo con glifi utilizzati nella scrittura da sinistra a destra può causare problemi.

### Cinese

La lingua cinese può presentare molti casi di omografie in quanto molti caratteri esistono sia come caratteri tradizionali (scrittura tradizionale) sia come caratteri del cinese semplificato. Nel dominio .org, la registrazione di una delle due varianti rende non disponibile la registrazione dell'altra; in .biz una singola registrazione IDN in lingua cinese fornisce entrambe le varianti come domini attivi (che devono avere lo stesso DNS server e lo stesso registrante). La stessa politica è adottata anche dal dominio .hk (. 香港)

### Altre scritture

Altre scritture, basate su Unicode, in cui è possibile trovare omografie sono Number forms (numeri romani), CJK Compatibility e Enclosed CJK Letters and Months (alcune abbreviazioni), latino (determinati digrammi), Currency Symbols, Mathematical Alphanumeric Symbols e Alphabetic Presentation Forms (legature tipografiche). Nella maggior parte di questi casi, ICANN elabora domini con questi glifi come se fossero le loro lettere componenti (ad esempio, ㎞art.com e kmart.com restituiscono entrambi lo stesso indirizzo).

### Caratteri accentati

Due nomi che si differenziano solo per un accento su un carattere possono sembrare molto simili, ad esempio "wíkipedia.org" non è "wikipedia.org" poiché il punto sulla prima i è stato sostituito da un accento acuto. Nella maggior parte dei registri di dominio di primo livello, wíkipedia.tld (xn - wkipedia-c2a.tld) e wikipedia.tld sono due nomi diversi che possono essere detenuti da diversi registranti. Un'eccezione è .ca, dove riservare la versione ASCII semplice del dominio impedisce a un altro dichiarante di rivendicare una versione accentata con lo stesso nome.

### Caratteri non stampabili

Unicode include molti caratteri che non sono visualizzati di default, come lo spazio a larghezza zero. In generale, ICANN proibisce a qualsiasi dominio con questi caratteri di essere registrato, indipendentemente dal TLD.

## Attacchi omografici noti

Nel settembre 2017, il ricercatore di sicurezza informatica Ankit Anubhav ha scoperto un attacco omografo IDN in cui gli aggressori hanno registrato adoḅe.com per fornire betabot trojan.

## Difendersi dall'attacco

La difesa più semplice per i browser Web è non supportare IDNA o altri meccanismi simili, supporto che, eventualmente, può essere disattivato direttamente dagli utenti. Ciò potrebbe significare bloccare l'accesso ai siti IDNA, ma generalmente i browser consentono l'accesso e visualizzano semplicemente IDN in Punycode. Ad ogni modo, ciò equivale ad abbandonare i nomi di dominio non ASCII.
Opera visualizza Punycode per IDN a meno che il dominio di primo livello (ad esempio TLD come .ac o .museum) prevenga attacchi omografici limitando quali caratteri possono essere utilizzati nei nomi di dominio. Consente inoltre agli utenti di aggiungere manualmente TLD all'elenco di quelli consentiti.
Dalla versione 22 (2013), Firefox visualizza gli IDN se il TLD impedisce gli attacchi omografici limitando quali caratteri possono essere utilizzati nei nomi di dominio o se negli IDN non vengono mischiate scritture per lingue diverse. In caso contrario, gli IDN vengono visualizzati in Punycode.
Internet Explorer 7 consente IDN ad eccezione delle etichette che combinano scritture per lingue diverse. Le etichette che combinano le scritture sono visualizzate in Punycode. Ci sono eccezioni alle localizzazioni in cui i caratteri ASCII sono comunemente mescolati con scritture localizzate.
Come ulteriore difesa, Internet Explorer 7, Firefox 2.0 e versioni successive e Opera 9.10 includono filtri anti-phishing che tentano di avvisare gli utenti quando visitano siti Web potenzialmente pericolosi.
L'approccio di Safari è quello di visualizzare i set di caratteri problematici con Punycode. Questo può essere modificato alterando le impostazioni nei file di sistema di Mac OS X.
Google Chrome utilizza un algoritmo simile a quello utilizzato da Firefox dalla versione 51. Le versioni precedenti visualizzano un IDN solo se tutti i relativi caratteri appartengono a una (e solo una) delle lingue preferite dell'utente. Alcuni domini di primo livello con codice paese internazionalizzato sono limitati in modo da ostacolare gli attacchi omografici.
A partire da aprile 2017, diversi browser (tra cui Chrome, Firefox e Opera) stavano visualizzando IDN costituiti esclusivamente da caratteri cirillici normalmente (non come punycode), consentendo attacchi di spoofing. Chrome ha intensificato le restrizioni IDN nella versione 59 per prevenire questo attacco.
L'ICANN ha implementato una politica che proibisce a qualsiasi potenziale TLD internazionalizzato di scegliere lettere che potrebbero assomigliare a un TLD latino esistente e quindi essere utilizzate per attacchi di omografi. I TLD IDN proposti .бг (Bulgaria), .укр (Ucraina) e .ελ (Grecia) sono stati respinti o bloccati a causa della loro somiglianza con le lettere latine. Tutti e tre (compresi il serbo .срб e il mongolo .мон) sono stati successivamente accettati. TLD a tre lettere sono considerati più sicuri dei TLD a due lettere, poiché sono più difficili da abbinare ai normali domini latini ISO-3166, sebbene permanga il potenziale di corrispondere ai nuovi domini generici.
Questi metodi di difesa riguardano solamente i browser. Gli URL omografici che ospitano software dannoso possono ancora essere distribuiti, senza essere visualizzati come Punycode, tramite e-mail, social network o altri siti Web. Una volta aperto, il link falso apparirà in Punycode, ma a questo punto il caricamento della pagina sarà già iniziato e il software dannoso potrebbe essere già stato scaricato sul computer. La stazione televisiva KBOI-TV ha sollevato queste preoccupazioni quando una fonte sconosciuta (registrandosi sotto il nome "Completamente anonimo") ha registrato un nome di dominio omogeneo al proprio per diffondere uno scherzo per il giorno del pesce d'aprile riguardante il Governatore dell'Idaho che ha emesso un presunto divieto di vendita della musica di Justin Bieber.

## Indagini basate sulla ricerca

Nel loro studio del 2019, Suzuki et al. hanno presentato ShamFinder, un programma per riconoscere gli IDN, facendo luce sulla loro diffusione in scenari reali. Allo stesso modo, Chiba et al. (2019) hanno sviluppato DomainScouter, un sistema esperto nel rilevare diversi IDN omografi nei domini attraverso l'analisi di circa 4,4 milioni di IDN registrati in 570 domini di primo livello (TLD). È stato in grado di identificare con successo 8.284 omografi IDN, inclusi molti casi precedentemente non identificati che miravano a marchi in lingue diverse dall'inglese.