JSON кажется простым форматом: ключ, значение, объект, массив. Но в реальных системах всё сложнее.
Один и тот же JSON может пройти через несколько сервисов:
API Gateway → бэкенд → платежный сервис → воркер
И каждый сервис может использовать свой парсер.
Проблема начинается, когда разные парсеры по-разному понимают один и тот же пэйлоад.
Например:
{
"role": "user",
"role": "admin"
}Один парсер возьмёт первое значение.
Другой — последнее. Третий может вернуть ошибку или сохранить оба.
Для багхантера это интересный класс багов: JSON interoperability vulnerabilities.
Что стоит проверять:
1️⃣ Несогласованный приоритет дублирующих ключей
2️⃣ Конфликт ключей: усечение символов и комментарии
3️⃣ Особенности сериализации JSON
4️⃣ Представление чисел с плавающей запятой и целых чисел
5️⃣ Необязательный синтаксический анализ и другие ошибки
Почему это опасно ❓
Валидация может пройти в одном сервисе, а бизнес-логика выполнится уже в другом — с другим значением.
Итог: приложение вроде валидирует JSON, но разные части системы видят разные данные.
🔗 Подробнее читай в ресёрче Bishop Fox
🔗 Решить лабу по теме

