Атака-гомограф реєструє домен, побудований із символів, які виглядають ідентично тим, що є в справжньому домені, але насправді ними не є - наприклад, кирилична "а" замість латинської "a", - тож адреса, яку читає людина, і адреса, яку розпізнає браузер, це дві різні речі. Трюк працює тому, що система доменних імен розуміє лише ASCII, тож кожен домен поза ASCII перекладається в ASCII-форму під назвою punycode, позначену префіксом xn--, ще до того, як він взагалі торкається DNS. Браузери розкодовують це назад у читабельну версію для показу, і саме на цьому кроці розкодування й ховається обман.
Сучасні браузери тепер відловлюють очевидні випадки й показують необроблений punycode, коли мітка підозріло змішує писемності, закриваючи більшість простих атак, які спрацьовували десять років тому. Але цей захист не виходить за межі адресного рядка браузера.
Я за фахом розбираю випадки підробки брендів, і вдалі підробки й досі на півсекунди затримують мій погляд, перш ніж я помічаю викривальну деталь. У цій статті - як працює атака-гомограф, де закінчується захист браузера і що з цим робити: незалежно від того, чи ви збираєтеся клацнути по посиланню, чи є власником домену, який підробляють. Ширше питання про те, чи можна довіряти самим коротким посиланням, розглянуто в статті чи безпечні сервіси скорочення посилань; ця ж стаття - про домен, що стоїть за посиланням.
Що таке punycode і навіщо він потрібен
DNS створювали для ASCII, і крапка. У нього немає власного способу зберігати літери з діакритикою, кирилицю, арабицю чи китайські ієрогліфи, з яких складається більшість писемностей світу, - і це стало реальною проблемою в ту ж мить, коли реєстрація доменів відкрилася за межами англомовних ринків.
Punycode - це рішення: оборотне кодування, стандартизоване як RFC 3492, яке перетворює мітку Unicode на латинські літери, цифри й дефіси, які DNS може переносити без жодних змін у самому протоколі передавання. Німецька пекарня, що реєструє домен з умлаутом, або український рітейлер, що реєструє домен кирилицею, отримують робочу інтернаціоналізовану доменну назву, яка розпізнається так само, як і будь-яка інша, бо під капотом це просто ще одна мітка ASCII. Закодована форма завжди починається з xn--, сигналізуючи: "це punycode, розкодуй, перш ніж показати людині".
Усе це саме по собі не є вразливістю - інтернаціоналізовані доменні назви є справжньою, необхідною функцією, а не обхідним рішенням, яке комусь варто вимикати. Проблема починається на рівень вище - у момент, коли браузер вирішує, як показати вам ту розкодовану назву назад.
Як працює атака-гомограф
Атака-гомограф експлуатує розрив між тим, що міститься в домені, і тим, як він виглядає після відображення. У реальному світі трапляються два варіанти, і вони не однаково поширені.
Варіант із цілою іншою писемністю реєструє весь домен у нелатинській писемності, форми літер якої нагадують назву бренду-цілі. Його помітно будувати, і його легше відловити тим, хто захищається, бо вся мітка є "чужою".
Варіант зі змішаними писемностями - той, який реально використовують, бо потребує лише однієї заміни. Візьмімо домен на кшталт novacloud.com. Замініть латинську "o" на візуально ідентичну кириличну "о" (U+043E) - і отримаєте nоvacloud.com: та сама форма, та сама довжина, інша кодова точка, а домен кодується як xn--nvacloud-nbh.com. Усе інше в мітці лишається незмінним, тож оку майже нема за що зачепитися. Дослідники з безпеки називають таку пару двійників "confusable" (візуально сплутуваний символ), і кілька таких пар покривають більшість латинського алфавіту.
Щойно домен зареєстровано, решта атаки - звичайний фішинг: сторінка входу, скопійована піксель у піксель, термінове повідомлення з посиланням на підроблену адресу і ціль, у якої немає причин сумніватися в адресі, що виглядає абсолютно правильно.
Що браузери роблять із цим сьогодні
Розробники браузерів роками тому закрили більшість простих версій цієї атаки за допомогою правила про те, які писемності дозволено змішувати в одній мітці. Політика Chrome, задокументована в його гіді з обробки IDN, перевіряє, чи кожен символ мітки правдоподібно належить до однієї писемності або до невеликого набору комбінацій писемностей, які законно трапляються разом, як-от японські кандзі з хіраганою. Якщо змішати писемності поза цим дозволеним набором, браузер покаже необроблену форму xn-- замість того, щоб її розкодувати - найкращий актив атаки, домен, що виглядає цілком нормально, знову перетворюється на очевидно закодований рядок. Firefox виконує подібну перевірку, описану в алгоритмі показу IDN від Mozilla, а Safari застосовує власну версію.
Це не повний захист. Мітка зі змішаними писемностями, побудована лише із символів однієї дозволеної комбінації, усе одно може прослизнути як читабельна оманлива назва, а правило застосовується окремо кожним браузером, без єдиного органу, який вирішує, що вважати безпечним.
Де цей захист закінчується
Перевірка на змішування писемностей живе в коді відображення адресного рядка браузера. Вона не подорожує разом з URL нікуди більше, і саме в цьому розриві підроблений домен усе ще завдає реальної шкоди.
Поштові клієнти - найбільша зона ризику: повідомлення може показувати будь-який текст посилання поверх адреси незалежно від фактичного призначення, і більшість поштових застосунків взагалі не перевіряють на "confusable"-символи. Чат-застосунки розгортають надіслане посилання в картку попереднього перегляду, побудовану з метаданих сторінки, а не за допомогою рендерера, що розуміє punycode. QR-коди повністю прибирають текстовий крок - цей розрив ми розглядаємо в статті чи безпечні QR-коди, - а в друкованих матеріалах між оком і обманом взагалі немає програмного шару.
| Канал | Показує реальний напрямок до дії | Типовий ризик |
|---|---|---|
| Сучасний десктопний браузер | Зазвичай, завдяки правилам змішування писемностей | Низький для поширених браузерів, за умови оновлень |
| Поштовий клієнт | Рідко - текст посилання може говорити що завгодно | Високий, особливо в мобільних поштових застосунках |
| Чати та месенджери | Рідко - попередній перегляд посилань використовує метадані сторінки | Високий, розгорнуті посилання виглядають ідентично |
| QR-код | Ні - нічого не показується до сканування | Високий, рішення ухвалюється за частку секунди |
| Друковані матеріали | Ніколи - програмного забезпечення взагалі немає | Найвищий, технічна перевірка неможлива |
Якщо ваша команда надсилає посилання під доменом, який клієнти вже впізнають, підробленому двійнику залишається набагато менше простору, щоб переконливо імітувати вас одразу в усіх цих каналах. Дивіться, як працює власний брендований домен в Elido, якщо ви й досі надсилаєте посилання зі спільного або загального домену.
Чому брендований домен - ваш найкращий захист
Атака-гомограф працює, експлуатуючи впізнаваність - їй потрібен визнаваний бренд, щоб його підробити. Це звучить як аргумент проти створення власного впізнаваного домену, але насправді все навпаки. Помітне брендоване коротке посилання, яке ваша аудиторія вже асоціює з вами, - це те, з чим вона може порівняти підозріле повідомлення; загальний або запозичений домен сервісу скорочення все одно дає зловмиснику шаблон, який клієнти не можуть відрізнити від справжнього провайдера, бо жоден із них не виглядає як "ви".
Налаштування власного домену для коротких посилань означає, що кожне надіслане вами посилання несе назву, яку впізнають одержувачі, що піднімає планку для будь-кого, хто намагається її підробити. Варто відрізняти це від маскування посилань і підміни URL - свідомого, розкритого рішення спрямовувати посилання через власний домен. Атака-гомограф - це протилежний хід: приховування особи зловмисника під час імітації вашої, - і захистом тут є прозорість щодо того, який домен насправді ваш.
Механізми контролю реєстратора, які справді мають значення
Коли у вас є домен, вартий захисту, основну реальну роботу виконують два механізми контролю, і працюють вони на різних рівнях стека.
Registrar lock - це щоденний механізм: статусний прапорець, часто показаний як clientTransferProhibited, який блокує рутинні автоматизовані запити на передавання всередині панелі вашого реєстратора. Він має бути увімкнений на кожному домені, яким ви активно користуєтеся; це нічого не коштує. Registry lock працює на рівень вище, залучаючи безпосередньо оператора реєстру, тож будь-яка зміна, передавання чи видалення потребує ручного підтвердження поза основним каналом зв'язку - телефонного дзвінка чи захищеної кодової фрази - перш ніж набуде чинності. Ця додаткова перешкода варта того на одному-двох доменах, де несанкціонована зміна обійшлася б справді дорого, а для більшості компаній це означає щонайменше основний домен бренду.
Жодне з цих блокувань не завадить комусь зареєструвати домен-двійник поруч із вашим. Для цього потрібен активний моніторинг: спостереження за новими реєстраціями доменів і публічними журналами прозорості сертифікатів на предмет назв, візуально близьких до вашого бренду, щоб ви могли повідомити про це реєстратора або попередити клієнтів, перш ніж кампанія з використанням такого домену досягне бодай когось.
Що включити в політику захисту бренду
Якщо у вас є домен, який варто підробляти, розділ безпеки вашої політики захисту бренду має бути настільки конкретним, щоб новачок у команді міг виконати його, не питаючи вас спершу.
- Блокування передавання реєстратора на кожному домені, яким володіє компанія, з додаванням registry lock на основному домені бренду та на всьому, що обробляє платежі чи входи в систему.
- Регулярний графік сканування нових реєстрацій доменів і журналів прозорості сертифікатів на предмет назв, візуально близьких до вашого бренду, а не одноразова перевірка.
- Захисна реєстрація міток-двійників із найвищим ризиком і сплутуваних доменів верхнього рівня, які ви можете обґрунтувати, у порядку пріоритету за тим, наскільки близько вони збігаються з вашим основним доменом.
- Призначений відповідальний і шлях ескалації для повідомлення про виявлений домен-двійник його реєстратору, а також внутрішні інструкції, щоб персонал підтримки розпізнавав цю схему, коли про неї повідомляє клієнт. Чекліст безпеки для вибору провайдера посилань охоплює суміжні механізми контролю постачальників.
Рецепт перевірки, який може виконати будь-хто
Вам не потрібно розуміти punycode, щоб безпечно перевірити посилання. Чотири кроки, виконані по порядку, вловлюють майже все, на що покладається атака-гомограф.
- Спершу розгорніть посилання, замість того щоб клацати по ньому напряму. У статті як побачити, куди веде коротке посилання розглянуто інструменти для цього, а власний перевірник посилань від Elido робить те саме, не вимагаючи спершу довіряти адресі призначення.
- Читайте домен, який підлягає реєстрації, - частину безпосередньо перед доменом верхнього рівня, - а не будь-що, що стоїть перед нею. Саме цю частину зловмисник має повністю контролювати.
- Перевіряйте наявність префікса xn-- - як у необробленому розгорнутому URL, так і в адресному рядку браузера. Якщо ви бачите його там, де очікували звичайну назву бренду, зупиніться і вважайте це двійником, доки не доведено протилежне.
- Перевірте ім'я в сертифікаті сайту призначення. Сертифікат відображає те, що справді було видано власнику домену, а це підробити переконливо набагато складніше, ніж відображену мітку.
Жоден із цих кроків не займає більш ніж кілька секунд, коли вони стають звичкою, і всі чотири можна навчити нетехнічного колегу за той час, який потрібен, щоб один раз прочитати цей розділ.
Атака-гомограф - це проблема відображення, вбрана в костюм проблеми безпеки. Punycode робить рівно те, для чого й був створений; обман відбувається в розриві між тим, чим домен є насправді, і тим, що замість цього показує вам якась програма. Браузери закрили більшість цього розриву для адресного рядка. Усюди більше він досі відкритий, і саме тому розгортання посилання та читання домену, який підлягає реєстрації, лишається звичкою, що працює незалежно від того, який канал показав вам посилання.
Пов'язане в блозі
Поширені запитання
Що таке IDN-атака-гомограф?
IDN-атака-гомограф реєструє домен із символами іншої писемності, які виглядають ідентично або майже ідентично тим, що є в справжньому домені, тож читач не може відрізнити їх на вигляд. Класичний випадок - заміна однієї латинської літери на кириличний або грецький двійник, наприклад кирилична а замість латинської a, тоді як усе інше в домені лишається без змін. Оскільки символ-замінник має іншу базову кодову точку, ці два домени технічно є різними й можуть бути зареєстровані та контрольовані різними власниками. Атака спрацьовує суто завдяки зовнішньому вигляду, тому й націлена на впізнавані, довірені бренди, а не на невідомі.
Що таке punycode і навіщо він існує?
Punycode - це кодування, яке перетворює доменні мітки поза ASCII на ASCII-рядок, що його система доменних імен може зберігати й обробляти; визначене в RFC 3492. Воно існує тому, що DNS розуміє лише обмежений набір символів ASCII, тож домен, написаний кирилицею, арабицею, китайськими ієрогліфами чи з латинськими літерами з діакритикою, потрібно перекласти в цю форму, перш ніж його можна буде знайти. Закодована мітка завжди починається з префіксу xn--, який повідомляє резолверам і браузерам, що далі йде рядок, закодований за допомогою punycode, а не звичайне ASCII-ім'я. Далі браузери розкодовують його назад у вихідну писемність для показу - це легітимна й необхідна функція, а не вразливість сама по собі.
Що означає префікс xn-- в URL?
Префікс xn-- позначає доменну мітку як ASCII Compatible Encoding, отриману за допомогою punycode, і сигналізує, що читабельне ім'я було перекладено із символів поза ASCII. Усе, що йде після префікса, - це закодована форма вихідної мітки: наприклад, xn--nvacloud-nbh.com розкодовується в домен, який виглядає як novacloud.com з однією літерою, заміненою на двійник. Побачити форму xn-- там, де ви очікували звичайну назву бренду, - це саме та ознака, яку браузери використовують, щоб вас попередити, бо вона означає, що мітка змішує писемності таким чином, який браузер не вважав безпечним для відображення як гарну версію. Домен без жодного символу поза ASCII ніколи не дає форми xn--, тож якщо ви її бачите, це завжди привід придивитися ще раз.
Чи захищають браузери від атак-гомографів?
Сучасні браузери застосовують правила щодо змішування писемностей, які відловлюють більшість спроб гомограф-атак і замість оманливого вигляду показують необроблену форму punycode. І Chrome, і Firefox перевіряють, чи символи доменної мітки правдоподібно належать до однієї писемності або невеликого набору писемностей, які зазвичай використовуються разом, і якщо ні - показують версію xn--, а не розкодовують її в те, що могло б зійти за знайому назву. Це закриває найпростіші атаки з використанням цілої іншої писемності від показу як переконливих підробок, хоча зловмисники й далі можуть знаходити в дозволених наборах символи, візуально схожі на латинські літери. Такий захист також суворо обмежений адресним рядком браузера - більше ніщо в стеку не успадковує його автоматично.
Як зрозуміти, що посилання веде на домен-двійник, ще до того, як я по ньому клацну?
Спершу розгорніть посилання, щоб побачити повну адресу призначення, а не скорочену чи обрізану версію, а потім прочитайте домен, який підлягає реєстрації, а не будь-що, що стоїть перед ним. Якщо адресний рядок або сервіс розгортання показує префікс xn-- там, де ви очікували звичайну назву бренду, вважайте це доменом-двійником, доки не доведено протилежне. Перевірка імені в сертифікаті сайту призначення - корисний фінальний крок, адже сертифікат відображає те, що справді було видано, а не те, що просто показується. Для всього цього не потрібне спеціальне програмне забезпечення - лише звичка робити це перед тим, як ввести пароль чи номер картки.
Що таке registry lock і чи потрібен він моєму домену?
Registry lock - це механізм контролю, встановлений на рівні реєстру доменних імен, який блокує будь-яку зміну, передавання чи видалення домену, доки її не підтверджено вручну поза основним каналом зв'язку - зазвичай телефонним дзвінком або захищеною кодовою фразою, - що зупиняє навіть скомпрометований акаунт реєстратора від перенесення домену. Це надійніша гарантія, ніж більш поширений registrar lock, який лише запобігає рутинним автоматизованим передаванням у вашій власній панелі реєстратора. Registry lock вартий своєї скромної річної вартості для будь-якого домену, простій чи викрадення якого обійшлися б дорого, а для більшості компаній це означає щонайменше основний домен бренду. Він не завадить комусь зареєструвати схожий на вигляд домен поруч із вашим - це окрема проблема, яку розв'язує моніторинг, а не блокування.
Спробуйте Elido
Вставте URL - отримайте коротке посилання
Без реєстрації. Посилання живе 30 днів. Зареєструйтесь, щоб зберегти назавжди.
Безкоштовно, без реєстрації · 2 на день