Ghid · Risc mesaj · · de Stefan Tsezarov · actualizat
Textul pe care nu îl puteți vedea
Două mesaje pot arăta exact la fel și pot conține caractere complet diferite.
Copiați un mesaj.
Pare normal.
Trei propoziţii obişnuite. Nimic ciudat.
Îl inserați într-un document, un site web, un portofel sau un asistent AI.
Și deodată se întâmplă ceva pe care mesajul, așa cum l-ai văzut, nu părea să spună niciodată.
Cum?
Pentru că ceea ce vezi pe ecran nu este neapărat tot ceea ce se află în text.
Unele caractere nu ocupă deloc spațiu vizibil.
Ei sunt încă acolo.
Ele pot fi încă copiate, lipite, stocate şi procesate.
Pur și simplu nu le puteți vedea.
Computerul dumneavoastră nu vede literele așa cum vedeți dumneavoastră
Când te uiți la o propoziție, vezi forme.
Computerul dumneavoastră vede date.
Litera A, de exemplu, este reprezentată de un caracter Unicode cu un punct de cod specific. Un spațiu este un alt caracter. Fiecare literă, număr, semn de punctuație și multe alte simboluri au propria lor reprezentare.
Dar nu orice caracter produce o formă vizibilă.
Unele caractere spun software-ului cum ar trebui să se comporte textul.
Ei pot spune unui program:
- conectează aceste caractere
- nu rupe linia aici
- afişează această secţiune de la dreapta la stânga
- modificarea modului în care sunt ordonate aceste caractere
- sau, în unele cazuri, pur și simplu ocupă o poziție fără a desena nimic
Astfel, puteți avea două bucăți de text care arată identice în timp ce sunt secvențe diferite de caractere.
Această diferență poate conta.
Multe.
Trei tipuri de text invizibil care merită cunoscute
Există mai multe mecanisme diferite implicate, dar trei sunt deosebit de utile de înțeles.
1. Personaje care nu apar
Acestea sunt adesea numite caractere cu lăţime zero.
Exemplele includ spaţiul cu lăţime zero, unitorul cu lăţimea zero şi unitorul de cuvinte.
Aceștia ocupă o poziție în text, dar nu produc pixeli vizibili.
De exemplu, aceste două cuvinte pot părea identice:
payment
payment
Există un personaj invizibil în interiorul celui de-al doilea.
Probabil că nu o puteți vedea.
Computerul dumneavoastră poate.
Aceasta înseamnă că cele două șiruri nu sunt de fapt identice.
Acest lucru poate afecta căutările, filtrele, numele de utilizator, identificatorii și alte sisteme care compară caracterele subiacente mai degrabă decât ceea ce vede o persoană.
Și există un motiv legitim pentru care unele dintre aceste personaje există.
Vom reveni la asta.
2. Personaje care schimbă ordinea pe care o vedeți
Unele caractere invizibile afectează direcţia textului.
Acest lucru este necesar deoarece limbi precum arabă și ebraică sunt scrise de la dreapta la stânga, în timp ce engleza este scrisă de la stânga la dreapta.
O propoziţie care le conţine pe ambele poate necesita instrucţiuni care să spună software-ului cum ar trebui să fie afişate diferite părţi.
Aceste instrucţiuni pot fi utile.
Dar ele pot fi, de asemenea, abuzate.
Un caracter de control al direcţiei poate face ca caracterele stocate de un computer să apară într-o ordine diferită pe ecran.
Aceasta creează o problemă evidentă de securitate.
Un nume de fișier, de exemplu, ar putea arăta ca și cum se termină cu o extensie, în timp ce secvența de caractere subiacentă spune ceva diferit.
Acelaşi principiu poate conta în codul sursă.
Un recenzent vede un lucru.
Calculatorul prelucrează un altul.
3. Personaje care pot purta un mesaj invizibil
Acesta este cel neobișnuit.
Unicode conţine un interval cunoscut sub numele de blocul Etichete.
Aceste caractere au fost concepute pentru scopuri de etichetare și sunt în mod normal invizibile atunci când sunt redate.
Partea interesantă este că caracterele de etichetă individuale pot reprezenta caractere ASCII obişnuite.
Puneți destui dintre ele și pot codifica text.
Prin urmare, o propoziţie poate conţine un şir suplimentar de caractere care nu apare pe ecran.
Pentru ochii tăi, mesajul ar putea părea ca un salut complet obișnuit.
Pentru software-ul care citește caracterele de bază, pot exista mult mai multe acolo.
Și această distincție devine deosebit de interesantă atunci când destinația este un asistent AI.
Un AI nu vede mesajul dvs. ca pe o fotografie a ecranului.
Prelucrează caracterele.
Așadar, ceva ce nu puteți vedea poate face parte din intrare.
Iată cum arată
Luați această propoziție:
Send the payment to the address below.
Pare normal, nu?
Acum imaginaţi-vă că în el au fost introduse caractere invizibile.
Pe ecranul dvs., poate arăta în continuare așa - și acesta este lucrul real, pregătit pentru a fi testat:
Send the payment to the address below.
Dar dedesubt, computerul poate avea de fapt caractere suplimentare.
De exemplu:
Ce vezi:
Trimiteți plata la adresa de mai jos.
Ce primește computerul:
Trimiteți invizibil plata invizibil … TAGS
Propoziţia vizibilă nu s-a schimbat.
Şirul de bază are.
Aceasta este ideea importantă.
Acelaşi aspect. Date diferite.
Dacă rulați exemplul special pregătit prin un scaner , scanerul poate identifica acele caractere chiar dacă ochii dvs. nu pot.
Reintroduceţi manual propoziţia vizibilă şi acele caractere ascunse nu vin cu ea.
Acesta este întregul truc.
Scrisoarea care nu este scrisoarea
Caracterele invizibile nu sunt singura problemă.
Uneori personajul este perfect vizibil.
Pur și simplu nu este personajul pe care îl crezi.
Luați în considerare aceste două:
savesavesave
sаvesavesave
Ele par aproape imposibil de distins.
Dar uită-te la al doilea cu atenție.
Al doilea caracter nu este litera latină a.
Este un chirilic și .
Se aseamănă.
Sunt personaje diferite.
Această tehnică este cunoscută ca un atac homoglif.
Aceeaşi idee poate fi folosită cu nume de utilizator, nume de domenii, nume de simboluri şi alţi identificatori.
Un cont fals poate folosi un personaj asemănător.
Un site web fals poate folosi un domeniu asemănător.
Pentru o persoană, numele poate părea familiar.
Pentru un computer, este un șir complet diferit.
Unde poate cauza acest lucru de fapt probleme?
Acesta nu este doar un truc ciudat Unicode.
Contează oriunde este copiat, comparat sau acționat asupra textului.
asistenţi AI
Lipiți un mesaj într-un asistent AI.
Vedeți o întrebare.
Textul de bază poate conține caractere care nu sunt vizibile pentru dvs.
Deoarece asistentul prelucrează textul real, nu doar aspectul vizual, acele caractere devin parte a intrării.
De aceea, verificările caracterelor invizibile pot fi utile înainte de a lipi text neîncrezător într-un sistem care poate întreprinde acțiuni sau procesa informații sensibile.
Nume de utilizator și nume de cont
Două conturi pot arăta ca și cum ar avea același nume în timp ce conțin caractere diferite.
Acest lucru poate face uzurparea identității mult mai greu de observat.
Legături şi domenii
O legătură poate conţine caractere care seamănă cu litere familiare.
Numele pe care îl recunoașteți nu este neapărat domeniul exact pe care credeți că este.
Cod
Caracterele de control al direcţiei şi alte caractere Unicode neobişnuite pot face codul sursă mai greu de revizuit corect.
Un dezvoltator vede textul redat.
Compilatorul vede caracterele reale.
Căutare și filtrare
Un filtru compară de obicei șiruri.
Introduceţi un caracter invizibil şi şirul se schimbă.
Aceasta poate afecta căutările, listele de blocare, sistemele de moderare și alte instrumente de procesare a textului.
Cum poți verifica?
Nu trebuie să deveniți expert Unicode.
Există câteva verificări simple.
VERIFICAREA 1 — Scanați textul
Lipiți text suspect într-un scaner de securitate a caracterelor.
Un scaner util ar trebui să vă spună:
- dacă sunt prezente caractere invizibile
- câte au fost găsite
- care caractere sunt acestea
- ce familie Unicode aparţin
- dacă au fost detectate caractere asemănătoare
Asta este ceea ce scanerul de pe acest site este proiectat să arate.
Partea importantă este că ar trebui să vă spună ce a găsit de fapt, în loc să vă dea pur și simplu o lumină verde sau roșie misterioasă.
VERIFICAREA 2 — Comparați numărul de caractere
Aceasta este o verificare rapidă a stării de spirit.
Dacă o propoziţie pare să conţină 38 de caractere, dar un contor de caractere raportează 47, aveţi o diferenţă care merită investigată.
Numărul de caractere nu vă va spune care sunt caracterele suplimentare.
Dar vă poate spune că există ceva acolo pe care nu îl vedeți.
VERIFICAREA 3 — Reintroduceți textul când este cazul
Dacă cineva vă trimite o instrucțiune scurtă și nu aveți nevoie să păstrați formatarea originală, tastarea manuală a părții importante poate elimina caracterele invizibile din textul copiat.
Dar amintiți-vă:
Rescrierea nu face destinaţia demnă de încredere.
Dacă cineva vă trimite o adresă de site suspectă, de exemplu, tastarea manuală a acesteia nu dovedește că site-ul în sine este legitim.
Este pur și simplu o modalitate de a evita caracterele ascunse din textul pe care îl copiați.
VERIFICAREA 4 — Citiți domeniul actual
Nu vă bazați doar pe recunoașterea modului în care arată un domeniu.
Dacă o legătură contează, verificați domeniul real.
Pentru conturile importante, utilizați un marcaj pe care l-ați salvat deja sau introduceți singur adresa cunoscută în loc să urmați un link neașteptat.
Același principiu se aplică numelor de utilizator și adreselor portofel:
recunoașterea formei nu este același lucru cu verificarea caracterelor.
Nu intrați în panică când găsiți un personaj invizibil
Acest lucru este important.
Invizibil nu înseamnă automat rău intenționat.
Unele caractere Unicode invizibile există pentru că oamenii au cu adevărat nevoie de ele.
Tamplarii cu lăţime zero, de exemplu, pot afecta modul în care caracterele se conectează în diferite sisteme de scriere.
Ele sunt, de asemenea, utilizate în secvențele emoji.
Caracterele de control al direcției sunt necesare pentru afișarea corectă a textului care amestecă scripturi de la stânga la dreapta și de la dreapta la stânga.
Așadar, găsirea unui personaj invizibil nu înseamnă automat:
„Acesta este un atac”.
Înseamnă:
Există ceva aici pe care nu îl văd.
Ce înseamnă asta depinde de context.
Cine a trimis textul?
Ce vă cere textul să faceți?
Unde sunteți pe cale să-l lipiți?
Intră într-un asistent AI, un portofel, un site web, un terminal sau un alt sistem care va acționa asupra lui?
Aceste întrebări contează.
Blocul Etichete merită o atenție suplimentară
Caracterele etichetelor sunt neobișnuite deoarece scopul lor este de a reprezenta informații, rămânând în același timp invizibile în redarea normală a textului.
Dacă un străin vă trimite un mesaj care conține o secvență neașteptată a acestora, merită investigat.
Un scaner poate dezvălui că caracterele există și, acolo unde este cazul, poate decoda textul pe care îl reprezintă.
Dar chiar și atunci, detectarea nu vă spune intenția expeditorului.
Vă spune ce este în text.
Acesta este un răspuns mult mai util și mai susținut.
Ce vă spune – și ce nu – o scanare curată
Acesta este un alt loc în care instrumentele de securitate trebuie să fie sincere.
Un scaner detectează caractere.
Nu citește în mintea oamenilor.
Dacă scanerul găsește caractere invizibile, vă poate spune care sunt acestea.
Nu vă poate spune cine le-a introdus.
Nu poate dovedi de ce au fost introduse.
Și dacă nu găsește nimic, asta nu înseamnă că mesajul în sine este de încredere.
O propoziţie cu aspect complet normal poate conţine în continuare o minciună, o legătură rău intenţionată sau o instrucţiune periculoasă.
De asemenea, un mesaj care conţine un caracter invizibil poate fi complet inofensiv.
Există, de asemenea, limite pentru detectarea automată a homoglifelor. Un scaner poate verifica caractere asemănătoare cunoscute și seturi de caractere cunoscute, dar nicio verificare unică nu trebuie tratată ca o garanție că a fost găsită orice înșelăciune vizuală posibilă.
Rezultatul vă spune ce a fost detectat.
Încă trebuie să decideți ce înseamnă textul și dacă aveți încredere în sursa lui.
Simplul obicei care merită construit
Nu trebuie să vă fie frică de copiere și lipire.
Doar încetiniți când textul pe care îl copiați este pe cale să facă ceva să se întâmple.
Un asistent AI.
Un portofel.
Un site web.
O linie de comandă.
Un cont.
O tranzacţie financiară.
O bucată de cod.
Dacă nu ați tastat singur textul, nu știți neapărat tot ce se află în el.
Și nu trebuie să ghiciți.
Verificați personajele înainte de a le lăsa să acționeze.
Durează câteva secunde.
Și în multe cazuri, cecul este gratuit.
Acest articol este doar pentru scopuri educaționale. Acesta explică modul în care caracterele Unicode invizibile, controalele de direcție a textului și caracterele asemănătoare pot afecta textul digital. Exemplul de pe această pagină conține caractere invizibile introduse în mod deliberat, astfel încât să puteți inspecta singur mecanismul. Textul ascuns este inofensiv și există doar în scop demonstrativ.
Caracterele invizibile supravieţuiesc copierii şi lipirii, astfel încât scanerul le vede oricum. Pentru a sări peste lipire, utilizați marcajul de text selectat prin scanare marcajul pentru scanarea textului selectat .