У сучасному світі технологій антифрод-системи використовують дедалі складніші методи для виявлення шахрайської активності. Одним із важливих параметрів для унікалізації користувачів та аналізу їхніх пристроїв є шрифти, встановлені в системі. Розглянемо, як шрифти можуть бути використані в антифроді, їхню роль в ідентифікації пристроїв, способи підміни та методи виявлення підробок. ###### Історія та роль шрифтів у браузерах Шрифти, використовувані пристроями, є ключовою характеристикою, що впливає на відображення веб-сторінок. Браузери надають інформацію про доступні шрифти через CSS і JavaScript API, що дає змогу веб-сайтам адаптувати відображення контенту під систему користувача. В антифрод-системах шрифти використовуються для унікалізації, оскільки набір встановлених шрифтів може істотно відрізнятися залежно від пристрою, операційної системи, версії та встановлених застосунків. ###### Методи отримання даних про шрифти 1. **CSS Font-Family Fallback** Використовується стиль font-family, щоб визначити, чи відображається текст із використанням зазначеного шрифту. Якщо браузер не підтримує шрифт, він використовує шрифт за замовчуванням. 2. **Canvas Fingerprinting** За допомогою API CanvasRenderingContext2D можна намалювати текст і виміряти його розміри, щоб визначити наявність шрифту. Це популярний метод для створення «відбитка» пристрою. 3. **CSS Queries for Font Support** Використовуючи [@font-face](# «@font-face») і властивості CSS, можна перевірити доступність шрифту. 4. **JavaScript-based Font Enumeration** JavaScript дає змогу перевірити наявність шрифту шляхом вимірювання ширини та висоти тексту з використанням різних шрифтів. ###### Як шрифти використовуються в антифроді 1. **Унікалізація користувачів**. Встановлені шрифти можуть відрізнятися залежно від операційної системи, встановленого ПЗ і налаштувань користувача. Це створює унікальний «відбиток» пристрою. 2. **Виявлення підробок** Якщо шахраї використовують антидетект-браузери, набір доступних шрифтів може не відповідати платформі, заявленій у User-Agent. 3. **Порівняння з іншими параметрами** Наприклад, антифрод-системи можуть звіряти набір доступних шрифтів із даними Canvas або WebGL, щоб знайти невідповідності. ###### Методи підміни шрифтів та їх виявлення 1. **Емуляція або підміна набору шрифтів** Зловмисники можуть використовувати програми для зміни списку доступних шрифтів. Однак такі підміни можна виявити, аналізуючи розміри відмальованого тексту або поведінку інших API. 2. **Блокування шрифтів** Деякі браузери або плагіни можуть приховувати список шрифтів, щоб ускладнити ідентифікацію. Але такі спроби теж створюють підозрілі патерни. 3. **Виявлення підміни** Антифрод-системи використовують кореляцію між наборами шрифтів та іншими характеристиками системи, наприклад, платформою або архітектурою процесора. Розглянемо на прикладах, яким чином системи отримують інформацію про шрифти. Відкриємо сторінку browserleaks.com/fonts  У розділі Font Metrics: Fingerprint сайт показує MD5-хеш метрик усіх знайдених шрифтів у нашому браузері. Сайт виявив 146 шрифтів, з яких 112 містять унікальні розміри. У розділі Report ми бачимо розміри, ширину і висоту рядка, що перевіряється, із символами «mmmMMMmmmmmllllllllllllllllllllllllllllllllllllllllllllLLLLL₹▁₺₸ẞॿmmmiiimmmIIImmmwwwmmmWWW» для кожного зі шрифтів. Сайт перевіряє понад 1400 відомих шрифтів і шукає їх у браузері користувача. У розділі Unicode Glyphs: Fingerprints сайт показує MD5-хеш, отриманий на основі результатів рендерингу спеціальних символів Unicode. Нижче наведено детальну інформацію про розміри кожного з символів, що перевіряються, для різних сімейств шрифтів. Розглянемо приклад отримання шрифтів на нашій тестовій сторінці test-webapi.tech/glyph відкриємо сторінку в браузері Chrome і дочекаємося результатів тесту:  Ця сторінка відтворює велику кількість знаків і символів для кожного зі шрифтів і формує MD5-хеш для кожного з виявлених шрифтів, після цього формується загальний MD5-хеш (Overall MD5) з хеш усіх шрифтів і кількості знайдених у браузері користувача шрифтів. Так само на сторінці для прикладу представлений тестовий варіант визначення системи користувача і браузера, який полягає в оцінці значень MD5-хеш деяких шрифтів. У нашому прикладі сайт виявив уже не 146, а 227 шрифтів, визначив, що ми використовуємо ОС Windows і браузер із движком Chromium. Повторимо тест у нашому антидетект-браузері без підміни шрифтів:  У результаті ми отримали відмінний від справжнього браузера MD5-хеш, меншу кількість шрифтів, сайт визначив нашу систему як Windows Server і браузер із движком Chromium. Спробуємо підмінити набір шрифтів в антидетект-браузері та повторимо тест:  У цьому тесті антидетект-браузер підмінив набір шрифтів, кількість шрифтів відповідає оригінальному браузеру Chrome, але Overall MD5-хеш відрізняється від оригінального браузера, це означає, що розміри символів для деяких шрифтів відрізняються. Таким чином можна досить точно ідентифікувати користувачів за набором шрифтів та їхніми метриками. Спробуємо відкрити нашу сторінку в браузері Firefox:  Наша тестова сторінка за накресленням шрифтів визначила, що ми використовуємо браузер Firefox. Зауважимо, що розміри символів шрифту Arial у браузері Firefox відрізняються від розмірів символів цього ж шрифту в браузері Chrome. Повторимо тест на мобільних пристроях:  Звернемо увагу, що мобільний браузер Chrome для більшості шрифтів повертає однакові значення. Так само зазначимо, що на однакових пристроях і в браузерах однакової версії відтворення шрифтів відрізняється, що дає змогу досить точно унікалізувати відвідувачів, особливо використовуючи додаткові дані, про які ми говорили в наших попередніх статтях. Спробуємо перевірити антидетект-браузер, використовуючи профіль мобільного пристрою:  У результаті цього тесту ми бачимо, що антидетект-браузер додає шрифти, що відповідають шрифтам мобільного пристрою, але при цьому значення метрик деяких шрифтів збігаються з десктоп-версією браузера. Сайт визначив, що ми використовуємо Windows Server, що ніяк не відповідає мобільному пристрою Android. Так само Антифрод-системи можуть отримувати інформацію про системні шрифти в браузері. Розглянемо на прикладах браузерів Chrome, Firefox на десктоп і мобільних пристроях: **Десктоп Chrome**  **Десктоп Firefox**  **Андроїд Chrome**  **Android Firefox**  У результаті цього тесту ми бачимо, що сімейства системних шрифтів браузера та їхні розміри відрізняються один від одного на різних пристроях у різних браузерах. Таким чином сайти можуть визначати тип пристрою і використовуваний движок браузера. ###### Висновок Шрифти в браузерах - це потужний інструмент для антифрод-систем. Вони використовуються для створення унікальних «відбитків» пристроїв і виявлення шахрайських дій. Їхній аналіз у поєднанні з іншими параметрами, як-от Canvas і WebGL, робить алгоритми антифрод-систем надійнішими. *Bannykh M.V.*