Przewodnik · Wiadomość o ryzyku · · Stefan Tsezarov · aktualizacja
Tekst, którego nie widać
Dwie wiadomości mogą wyglądać dokładnie tak samo i zawierać zupełnie różne znaki.
Kopiujesz wiadomość.
Wygląda normalnie.
Trzy zwykłe zdania. Nic dziwnego.
Wklejasz go do dokumentu, strony internetowej, portfela lub asystenta AI.
I nagle dzieje się coś, czego wiadomość, jak ją widziałeś, nigdy nie wydawała się zawierać.
Jak?
Ponieważ to, co widzisz na ekranie, niekoniecznie jest wszystkim, co znajduje się w tekście.
Niektóre znaki w ogóle nie zajmują widocznej przestrzeni.
Nadal tam są.
Można je nadal kopiować, wklejać, przechowywać i przetwarzać.
Po prostu ich nie widać.
Twój komputer nie widzi liter tak jak Ty
Kiedy patrzysz na zdanie, widzisz kształty.
Twój komputer widzi dane.
Na przykład litera A jest reprezentowana przez znak Unicode z określonym punktem kodowym. Spacja to kolejny znak. Każda litera, cyfra, znak interpunkcyjny i wiele innych symboli ma swoją własną reprezentację.
Jednak nie każdy znak daje widoczny kształt.
Niektóre znaki informują oprogramowanie, jak powinien zachowywać się tekst.
Mogą powiedzieć programowi:
- połącz te znaki
- Nie przerywaj tutaj granicy
- wyświetl tę sekcję od prawej do lewej
- zmień sposób uporządkowania tych znaków
- lub, w niektórych przypadkach, po prostu zająć pozycję, nic nie rysując
Można więc mieć dwa fragmenty tekstu, które wyglądają identycznie, będąc jednocześnie różnymi sekwencjami znaków.
Ta różnica może mieć znaczenie.
Dużo.
Trzy rodzaje niewidzialnego tekstu, które warto znać
Istnieje kilka różnych mechanizmów, ale zrozumienie trzech jest szczególnie przydatne.
1. Znaki, które się nie pojawiają
Są one często nazywane znakami o zerowej szerokości.
Przykłady obejmują spację o zerowej szerokości, łącznik o zerowej szerokości i łącznik słów.
Zajmują miejsce w tekście, ale nie tworzą widocznych pikseli.
Na przykład te dwa słowa mogą wyglądać identycznie:
payment
payment
Wewnątrz drugiego znajduje się niewidoczny znak.
Prawdopodobnie tego nie widzisz.
Twój komputer może.
Oznacza to, że te dwa ciągi nie są w rzeczywistości identyczne.
Może to mieć wpływ na wyszukiwania, filtry, nazwy użytkowników, identyfikatory i inne systemy, które porównują znaki bazowe, a nie to, co widzi dana osoba.
Istnieje uzasadniony powód istnienia niektórych z tych znaków.
Wrócimy do tego.
2. Znaki zmieniające kolejność, którą widzisz
Niektóre niewidoczne znaki wpływają na kierunek tekstu.
Jest to konieczne, ponieważ języki takie jak arabski i hebrajski są pisane od prawej do lewej, podczas gdy angielski jest pisany od lewej do prawej.
Zdanie zawierające oba może wymagać instrukcji informujących oprogramowanie, w jaki sposób powinny być wyświetlane różne części.
Instrukcje te mogą być przydatne.
Można je jednak również nadużywać.
Znak sterujący kierunkiem może powodować, że znaki przechowywane przez komputer będą wyświetlane na ekranie w innej kolejności.
Stwarza to oczywisty problem bezpieczeństwa.
Na przykład nazwa pliku może wyglądać tak, jakby kończyła się jednym rozszerzeniem, podczas gdy leżąca u jej podstaw sekwencja znaków mówi coś innego.
Ta sama zasada może mieć znaczenie w kodzie źródłowym.
Recenzent widzi jedną rzecz.
Komputer przetwarza inny.
3. Znaki mogące przenosić niewidzialną wiadomość
To jest niezwykłe.
Unicode zawiera zakres znany jako blok Tagi.
Znaki te zostały zaprojektowane do celów znakowania i zwykle są niewidoczne podczas renderowania.
Interesujące jest to, że poszczególne znaki znacznika mogą reprezentować zwykłe znaki ASCII.
Wystarczy je zebrać i zakodować tekst.
Zdanie może zatem zawierać dodatkowy ciąg znaków, który nie pojawia się na ekranie.
W Twoich oczach wiadomość może wyglądać jak zupełnie zwyczajne powitanie.
Jeśli chodzi o oprogramowanie odczytujące podstawowe znaki, może być ich znacznie więcej.
To rozróżnienie staje się szczególnie interesujące, gdy miejscem docelowym jest asystent AI.
Sztuczna inteligencja nie postrzega Twojej wiadomości jako zdjęcia ekranu.
Przetwarza znaki.
Zatem coś, czego nie widać, może nadal stanowić część danych wejściowych.
Oto jak to wygląda
Weźmy to zdanie:
Send the payment to the address below.
Wygląda normalnie, prawda?
Wyobraź sobie teraz, że wstawiono do niego niewidoczne znaki.
Na Twoim ekranie może to nadal wyglądać tak — a to jest prawdziwa rzecz, przygotowana do przetestowania:
Send the payment to the address below.
Jednak pod spodem komputer może faktycznie przechowywać dodatkowe znaki.
Na przykład:
Co widzisz:
Wyślij płatność na poniższy adres.
Co otrzymuje komputer:
Wyślij niewidoczny płatność niewidoczny … TAGI
Widoczne zdanie nie uległo zmianie.
Podstawowy ciąg ma.
To jest ważny pomysł.
Ten sam wygląd. Różne dane.
Jeśli uruchomisz specjalnie przygotowany przykład poprzez i skaner , skaner będzie w stanie zidentyfikować te znaki, nawet jeśli Twoje oczy nie będą w stanie tego zrobić.
Wpisz ręcznie widoczne zdanie, a ukryte znaki nie zostaną uwzględnione.
Na tym polega cała sztuczka.
Litera, która nie jest literą
Niewidoczne znaki nie są jedynym problemem.
Czasami znak jest doskonale widoczny.
To po prostu nie jest postać, o której myślisz.
Rozważmy te dwa:
savesavesave
sаvesavesave
Wyglądają na prawie niemożliwe do rozróżnienia.
Ale przyjrzyj się uważnie temu drugiemu.
Drugi znak nie jest literą łacińską a.
Jest to cyrylica do .
Wyglądają podobnie.
Są to różne znaki.
Technika ta znana jest jako atak homoglifowy.
Ten sam pomysł można zastosować w przypadku nazw użytkowników, nazw domen, nazw tokenów i innych identyfikatorów.
Fałszywe konto może wykorzystywać podobny znak.
Fałszywa witryna internetowa może wykorzystywać podobną domenę.
Dla danej osoby imię może wydawać się znajome.
Dla komputera jest to zupełnie inny ciąg znaków.
Gdzie może to faktycznie powodować problemy?
To nie jest tylko dziwna sztuczka z Unicode.
Ma to znaczenie wszędzie tam, gdzie tekst jest kopiowany, porównywany lub przetwarzany.
Asystenci AI
Wklejasz wiadomość do asystenta AI.
Widzisz pytanie.
Tekst bazowy może zawierać znaki, które nie są dla Ciebie widoczne.
Ponieważ asystent przetwarza rzeczywisty tekst, a nie tylko jego wygląd, znaki te stają się częścią danych wejściowych.
Dlatego też sprawdzanie niewidocznych znaków może być przydatne przed wklejeniem niezaufanego tekstu do systemu, który może podejmować działania lub przetwarzać poufne informacje.
Nazwy użytkowników i nazwy kont
Dwa konta mogą wyglądać tak, jakby miały tę samą nazwę, choć zawierają różne znaki.
Może to sprawić, że podszywanie się będzie znacznie trudniejsze do zauważenia.
Linki i domeny
Łącze może zawierać znaki przypominające znane litery.
Nazwa, którą rozpoznajesz, niekoniecznie jest dokładnie tą domeną, którą myślisz.
Kod
Znaki sterujące kierunkiem i inne nietypowe znaki Unicode mogą utrudniać prawidłowe przeglądanie kodu źródłowego.
Programista widzi wyrenderowany tekst.
Kompilator widzi rzeczywiste znaki.
Wyszukiwanie i filtrowanie
Filtr zwykle porównuje ciągi znaków.
Wstaw niewidoczny znak, a ciąg znaków się zmieni.
Może to mieć wpływ na wyszukiwania, listy zablokowanych, systemy moderacji i inne narzędzia do przetwarzania tekstu.
Jak możesz sprawdzić?
Nie musisz zostać ekspertem Unicode.
Istnieje kilka prostych kontroli.
KONTROLA 1 — Zeskanuj tekst
Wklej podejrzany tekst do skanera bezpieczeństwa znaków.
Przydatny skaner powinien Ci powiedzieć:
- czy obecne są niewidoczne znaki
- ile zostało znalezionych
- jakie to znaki
- Do jakiej rodziny Unicode należą
- czy wykryto podobne znaki
Właśnie to ma pokazywać skaner na tej stronie .
Ważną częścią jest to, że powinien powiedzieć ci, co faktycznie znalazł, a nie po prostu dać ci tajemnicze zielone lub czerwone światło.
KONTROLA 2 — Porównaj liczbę znaków
Jest to szybka kontrola poprawności.
Jeśli zdanie zawiera 38 znaków, ale licznik znaków wskazuje 47, oznacza to, że warto zbadać różnicę.
Liczba znaków nie powie Ci, jakie są dodatkowe znaki.
Może jednak powiedzieć ci, że jest tam coś, czego nie widzisz.
SPRAWDŹ 3 — W razie potrzeby wpisz tekst ponownie
Jeśli ktoś prześle Ci krótką instrukcję i nie musisz zachowywać oryginalnego formatowania, ręczne wpisanie ważnej części może usunąć niewidoczne znaki z kopiowanego tekstu.
Ale pamiętaj:
Ponowne wpisanie nie czyni miejsca docelowego wiarygodnym.
Jeśli na przykład ktoś wyśle Ci podejrzany adres witryny internetowej, ręczne wpisanie go nie dowodzi, że witryna sama w sobie jest wiarygodna.
Jest to po prostu sposób na uniknięcie ukrytych znaków w kopiowanym tekście.
SPRAWDŹ 4 — Odczytaj rzeczywistą domenę
Nie polegaj wyłącznie na rozpoznaniu wyglądu domeny.
Jeśli link ma znaczenie, sprawdź rzeczywistą domenę.
W przypadku ważnych kont użyj już zapisanej zakładki lub wpisz znany adres samodzielnie, zamiast klikać nieoczekiwany link.
Ta sama zasada dotyczy nazw użytkowników i adresów portfeli:
Rozpoznanie kształtu to nie to samo, co weryfikacja znaków.
Nie panikuj, gdy znajdziesz niewidzialną postać
To jest ważne.
Niewidoczny nie oznacza automatycznie złośliwy.
Niektóre niewidoczne znaki Unicode istnieją, ponieważ ludzie naprawdę ich potrzebują.
Na przykład łączniki o zerowej szerokości mogą wpływać na sposób łączenia znaków w różnych systemach pisma.
Są one także wykorzystywane w sekwencjach emoji.
Znaki sterujące kierunkiem są niezbędne do prawidłowego wyświetlania tekstu będącego mieszanką skryptów pisanych od lewej do prawej i od prawej do lewej.
Zatem znalezienie niewidzialnego znaku nie oznacza automatycznie:
„To jest atak.”
Oznacza to:
Jest tu coś, czego nie widzę.
Znaczenie tego zależy od kontekstu.
Kto wysłał SMS-a?
O co prosi Cię tekst?
Gdzie zamierzasz to wkleić?
Czy trafia do asystenta AI, portfela, strony internetowej, terminala lub innego systemu, który będzie na nim działał?
Te pytania mają znaczenie.
Blok Tagi zasługuje na szczególną uwagę
Znaki znaczników są niezwykłe, ponieważ ich celem jest reprezentowanie informacji, pozostając niewidocznymi podczas normalnego renderowania tekstu.
Jeśli nieznajomy wyśle Ci wiadomość zawierającą nieoczekiwaną sekwencję wiadomości, warto to sprawdzić.
Skaner może wykryć, że znaki istnieją i, w stosownych przypadkach, odszyfrować tekst, który reprezentują.
Ale nawet wtedy wykrywanie nie informuje o zamiarach nadawcy.
Mówi ci, co jest w tekście.
To o wiele bardziej użyteczna i możliwa do obrony odpowiedź.
Co czysty skan mówi — a czego nie — mówi
To kolejny obszar, w którym narzędzia bezpieczeństwa muszą być uczciwe.
Skaner wykrywa znaki.
Nie czyta ludzi w myślach.
Jeśli skaner znajdzie niewidoczne znaki, może powiedzieć, jakie to są.
Nie może powiedzieć, kto je włożył.
Nie można udowodnić, dlaczego zostały one wstawione.
A jeśli nic nie znajdzie, nie oznacza to, że sama wiadomość jest godna zaufania.
Zupełnie normalnie wyglądające zdanie może nadal zawierać kłamstwo, złośliwy link lub niebezpieczną instrukcję.
Podobnie wiadomość zawierająca niewidoczny znak może być całkowicie nieszkodliwa.
Istnieją również ograniczenia automatycznego wykrywania homoglifów. Skaner może sprawdzać znane znaki podobne do siebie i znane zestawy znaków, ale żadnego pojedynczego sprawdzenia nie należy traktować jako gwarancji wykrycia wszystkich możliwych oszustw wizualnych.
Wynik informuje, co zostało wykryte.
Nadal musisz zdecydować, co oznacza tekst i czy ufasz jego źródłu.
Prosty nawyk, który warto zbudować
Nie musisz bać się kopiowania i wklejania.
Po prostu zwolnij, gdy kopiowany tekst ma spowodować, że coś się stanie.
Asystent AI.
Portfel.
Strona internetowa.
Wiersz poleceń.
Konto.
Transakcja finansowa.
Kawałek kodu.
Jeśli sam nie wpisałeś tekstu, niekoniecznie wiesz wszystko, co się w nim znajduje.
I nie musisz zgadywać.
Sprawdź postacie, zanim pozwolisz im działać.
Zajmuje to sekundy.
W wielu przypadkach sprawdzenie jest bezpłatny.
Artykuł ten służy wyłącznie celom edukacyjnym. Wyjaśnia, w jaki sposób niewidoczne znaki Unicode, elementy sterujące kierunkiem tekstu i znaki podobne mogą wpływać na tekst cyfrowy. Przykład na tej stronie zawiera celowo wstawione niewidoczne znaki, abyś mógł samodzielnie sprawdzić mechanizm. Ukryty tekst jest nieszkodliwy i istnieje wyłącznie w celach demonstracyjnych.
Niewidoczne znaki przetrwają kopiowanie i wklejanie, więc skaner widzi je w obu przypadkach. Aby pominąć wklejanie, użyj zakładki zeskanuj wybrany tekst .