Irriterende Unicode-drillerier kan bruges til både godt og ondt

Phishing-mails har brugt teknikken til at forklæde ondsindede links, men findes der et let værktøj til at drive dine programmør-kolleger til vanvid.

Visse tegn ser identiske ud, men har forskellig betydning eller oprindelse og har derfor forskellige Unicode-værdier. Eksempelvis er det svært med det blotte øje at se forskel på et semikolon og et græsk spørgsmålstegn. Hvis man blot har skrevet et par linjers kode i Java eller C#, så kan man måske fornemme, hvad softwareudvikler Greg Toombs har frigivet på Github.

Med det lille program Mimic, opkaldt efter blandt andet et frustrerende monster fra Dungeons & Dragons, er det nu let at erstatte helt almindelige latinske tegn med noget, der ligner, men ikke er det samme.

Hvis man blot skulle læse en tekst på papir, ville det ikke gøre nogen forskel, om der var tale om et X eller et græsk chi eller det kyrilliske kha. Men når det er programkode, der skal fortolkes af en compiler, så er det Unicode-værdien og ikke udseendet, der tæller.

Metoden har været brugt i spammails til at forklæde et ondsindet domæne som et velkendt, legitimt domæne i linkform ved eksempelvis at udskifte enkelte tegn med kyrilliske.

Fejler, når koden skal fortolkes,

Pudser man Mimic-programmet på en kollegas kode, så vil udskiftningen af de kritiske semikoloner med græske spørgsmålstegn resultere i fejl, når koden skal fortolkes, og med de mange muligheder for tegnudskiftninger, Unicode giver mulighed for, så vil det være svært umiddelbart at gennemskue, hvad der er galt.

Mimic-programmet vil også kunne misbruges til netop at lave falske links eller skrive bandeord på forummer, der automatisk censurerer den slags. Men Greg Toombs påpeger også, at Mimic vil kunne vendes mod den ondsindede brug af tegnudskiftninger til at opdage, når de eksempelvis bliver brugt i spammails.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Ole Kaas

Windows har en vane med at lade brugernavnet blive stående i login feltet - så man slipper for at taste det nå man kommer tilbage til sin pc. Det bliver også stående efter fejlede loginforsøg. En kollega fik den djævelske ide at ud skifte "h" i brugernavnet med "b" hos en anden kollega - mens denne var væk til en coffee-refill. Det blev til adskillige fejlede loginforsøg, bandeord, forhøjet blodtryk og fare alvorlig uoprettelig skade på på hardwaren inden kollegaen - skraldgrinende - påpegede årsagen til problemerne...

Rune Jensen

At indsætte en ‏ fra Tegnoversigten i en kommentar... Der er funktioner i unikode, det er ikke kun bogstaver og tegn. Giv en tak til sprog, som læses omvendt.
https://en.wikipedia.org/wiki/Right-to-left_mark

Disse virker også i rå HTML kode, hvis man gemmer som UTF-8 og serveren sender som UTF-8. Man kan få ret interessant kode i "Vis kilde" på den måde (hvis man kan få HTML-editoren til at lege med, når man gemmer).

Iøvrigt, idéen med at udskifte kendte tegn med tegn som ligner er hele årsagen til at discuss forummer er så smæk fyldt med spam. At skulle lave en regex, som fanger alle alternativer af spamord, vil være ganske omfattende. Det er en gammel nyhed iøvrigt.

Torben Mogensen Blogger

Ordet "minic" betyder "efterligne" eller "efterligner" på engelsk og er væsentligt ældre end det D&D-monster, som Jesper henviser til.

Problemet fandtes i øvrigt før Unicode. PÅ den svenske ABC-80 computer, var O og 0 to helt identiske tegn på skærmen, og da de ligger tæt ved hinanden på tastaturet, kunne det give anledning til fejl, der var svære at opdage. Det er også velkendt, at I, 1 og l ligner hinanden (jvf. Oles kommentar).

Med Unicodes koder for græske og kyrilliske bogstaver kan man i øvrigt dække en stor del af det latinske alfabet. Dog primært kapitaler, da små bogstaver ofte ser anderledes ud, f.eks. M og µ i det græske alfabet.

Hvis man er i tvivl, kan man skifte sit skriftsnit til et, der ikke har græske tegn osv., og som ser markant anderledes ud end det standardskriftsnit, som bruges til at tegne Unicode-tegn, der ikke findes i det valgte skriftsnit.

Log ind eller Opret konto for at kommentere