JSON Hijacking (викрадення JSON) відноситься до вразливості безпеки, що зловживає політиками крос-доменного доступу веб-браузерів для викрадення чутливих даних з JSON-відповіді. JSON, що означає JavaScript Object Notation, — це легковаговий формат обміну даними, який зазвичай використовується для клієнт-серверної комунікації у веб-застосунках.
JSON Hijacking працює за наступними кроками:
Отримання даних з іншого домену: Коли веб-застосунок отримує дані з іншого домену за допомогою JavaScript, він зазвичай робить запит до API-енпоінта, що відповідає JSON-даними.
Крос-доменні запити: Для захисту від атак підробки міжсайтових запитів (CSRF) багато веб-застосунків дозволяють крос-доменні запити для JSON-даних.
Маніпулювання браузером: Зловмисник використовує цю політику крос-доменного доступу, вводячи браузер жертви в оману і змушуючи його зробити запит до цільового домену. Цей запит включає аутентифікаційні облікові дані жертви, такі як кукі.
Перехоплення і доступ до даних: Сервер зловмисника перехоплює запит і отримує доступ до JSON-даних, які часто містять чутливу інформацію.
Щоб зменшити ризик JSON Hijacking, можна дотримуватися наступних порад щодо запобігання:
Реалізуйте Cross-Origin Resource Sharing (CORS) на сервері: CORS дозволяє вам вказати, які домени можуть отримувати доступ до JSON-даних. Налаштувавши CORS правильно, ви можете обмежити доступ лише для довірених і авторизованих доменів.
Уникайте включення чутливих даних у JSON-відповіді: Вкрай важливо переконатися, що чутлива інформація, така як токени аутентифікації чи особисто ідентифікована інформація (PII), не включається в JSON-відповіді. Уникнення чутливих даних у JSON-відповідях знижує ризик їх доступу зловмисниками.
Захищайте чутливі дані за допомогою шифрування і токенізації: Шифрування чутливих даних перед їх передачею в JSON-відповідях додає додатковий рівень захисту. Токенізація також може використовуватися для заміни чутливих даних токенами, що ще більше зменшує ризик доступу до даних.
Уникайте використання методу document.write
для обробки JSON-відповідей: Метод document.write
може ввести вразливості безпеки, дозволяючи зловмиснику вставити шкідливий контент у сторінку. Розгляньте можливість використання більш безпечних методів для динамічного рендерингу JSON-даних у вашому веб-застосунку.
У 2007 році була виявлена вразливість JSON Hijacking на сайті Twitter. Ця вразливість дозволяла зловмиснику викрасти особисті повідомлення користувача, маніпулюючи JSON-відповіддю сервера.
Атака включала в оману зловмисника, вводячи жертву на спеціально створену веб-сторінку, яка робила крос-доменні запити JSON до API Twitter. Після отримання відповіді, JavaScript-код зловмисника міг отримати доступ до JSON-даних, включно із особистими повідомленнями користувача.
Twitter швидко виправив цю вразливість, реалізувавши заходи щодо протидії, такі як використання префікса while(1);
для запобігання атакам JSON Hijacking.
JSON with Padding (JSONP) є альтернативним підходом до обміну даними на основі JSON, який вразливий до JSON Hijacking.
JSONP дозволяє включення зовнішнього файлу JavaScript, що обслуговується з іншого домену. Зловмисник може зловживати цим механізмом, вставляючи шкідливий код у JSONP-відповідь, що потенційно може скомпрометувати безпеку браузера і даних користувача.
Для зменшення ризиків, пов'язаних з JSONP, важливо перевіряти і санітизувати JSONP-відповідь на стороні сервера та переконатися, що лише довірені джерела можуть надавати виклики JSONP.
JSON Hijacking є переважно проблемою безпеки на стороні клієнта і вимагає комбінації вразливостей для успішної експлуатації. У останні роки покращення безпеки браузерів, такі як SameSite cookies і більш суворі політики CORS, ускладнили зловмисникам проведення таких атак.
Варто зазначити, що термін "JSON Hijacking" не є загальновживаним у спільноті безпеки. Замість цього атаку зазвичай називають "JSONP Hijacking" або "Cross-Domain JSON Hijacking."
Деякі вважають, що тягар запобігання JSON Hijacking не має виключно лежати на розробниках веб-застосунків. Веб-браузери та веб-стандарти теж повинні відігравати роль у впровадженні суворіших заходів безпеки для зменшення цієї вразливості.
Міжсайтовий скриптинг (XSS): Тип атаки, при якій шкідливі скрипти вставляються в веб-сторінки, що переглядаються іншими користувачами.
Cross-Origin Resource Sharing (CORS): Механізм, що дозволяє запит ресурсів з іншого домену.
Міжсайтове підроблення запитів (CSRF): Атака, що змушує кінцевого користувача виконувати небажані дії у веб-застосунку, в який він наразі аутентифікований.