MIME-сниффинг
Что такое MIME-сниффинг?
MIME-сниффингПоведение браузера, угадывающее тип содержимого ответа по байтам; может быть использовано для исполнения загруженных файлов как скриптов.
MIME-сниффинг — устаревшая возможность браузеров: они анализируют первые байты ответа и переопределяют объявленный сервером Content-Type, чтобы «удобнее» отрисовать ресурс. Это эксплуатируется, когда приложение отдаёт пользовательские файлы с неверным типом: файл с HTML или JavaScript может быть распознан как text/html и выполнен в источнике жертвы, что приводит к stored XSS. Стандартная мера — заголовок X-Content-Type-Options: nosniff, заставляющий браузер соблюдать заявленный тип. Совместите его со строгими Content-Type, CSP и отдельным источником для пользовательского контента.
● Примеры
- 01
X-Content-Type-Options: nosniff
- 02
Загрузка аватара возвращает image/png, но файл содержит HTML; без nosniff браузер выполняет его как страницу.
● Частые вопросы
Что такое MIME-сниффинг?
Поведение браузера, угадывающее тип содержимого ответа по байтам; может быть использовано для исполнения загруженных файлов как скриптов. Относится к категории Безопасность приложений в кибербезопасности.
Что означает MIME-сниффинг?
Поведение браузера, угадывающее тип содержимого ответа по байтам; может быть использовано для исполнения загруженных файлов как скриптов.
Как работает MIME-сниффинг?
MIME-сниффинг — устаревшая возможность браузеров: они анализируют первые байты ответа и переопределяют объявленный сервером Content-Type, чтобы «удобнее» отрисовать ресурс. Это эксплуатируется, когда приложение отдаёт пользовательские файлы с неверным типом: файл с HTML или JavaScript может быть распознан как text/html и выполнен в источнике жертвы, что приводит к stored XSS. Стандартная мера — заголовок X-Content-Type-Options: nosniff, заставляющий браузер соблюдать заявленный тип. Совместите его со строгими Content-Type, CSP и отдельным источником для пользовательского контента.
Как защититься от MIME-сниффинг?
Защита от MIME-сниффинг обычно сочетает технические меры и операционные практики, как описано в определении выше.
● Связанные термины
- appsec№ 496
HTTP-заголовки безопасности
Заголовки ответа, инструктирующие браузер применять защитные меры: только HTTPS, ограничения встраивания, политики контента, контроль referrer.
- attacks№ 240
Межсайтовый скриптинг (XSS)
Веб-уязвимость, позволяющая злоумышленнику внедрять вредоносные скрипты на страницы, просматриваемые другими пользователями, и выполнять их в браузере жертвы под источником сайта.
- appsec№ 214
Политика безопасности контента (CSP)
HTTP-заголовок ответа, указывающий браузеру, какие источники скриптов, стилей, фреймов и других ресурсов допустимы, что снижает последствия XSS и инъекций данных.
- attacks№ 541
Небезопасная загрузка файлов
Веб-уязвимость, при которой приложение принимает пользовательские файлы без должной валидации, позволяя злоумышленнику загружать вредоносные файлы и получать RCE, дефейс или кражу данных.
- appsec№ 960
Политика одного источника (SOP)
Правило безопасности браузера, ограничивающее взаимодействие документа или скрипта одного источника с ресурсами другого источника.
- appsec№ 982
Безопасное программирование
Практика написания исходного кода, минимизирующая дефекты безопасности за счёт оборонительных паттернов, языковых правил и общепризнанных руководств.