MIME-сниффинг
Что такое MIME-сниффинг?
MIME-сниффингПоведение браузера, угадывающее тип содержимого ответа по байтам; может быть использовано для исполнения загруженных файлов как скриптов.
MIME-сниффинг — это устаревшая функция браузера, при которой браузер анализирует первые байты ответа и переопределяет объявленный сервером заголовок Content-Type, чтобы отрисовать ресурс более удобным образом. Злоумышленники злоупотребляют этим, когда приложение отдаёт загруженные пользователями файлы с неверным или обобщённым типом: файл, содержащий HTML или JavaScript, может быть распознан как text/html и выполнен в источнике жертвы, что открывает возможность для хранимого XSS.
Это поведение восходит к ранним версиям Internet Explorer, чей агрессивный сниффинг был печально известным источником XSS из-за «путаницы типов содержимого»; Microsoft ввела механизм отказа X-Content-Type-Options: nosniff в IE8 (2008), и сегодня он стандартизирован в MIME Sniffing Standard спецификации WHATWG Fetch. Отправка nosniff заставляет браузер соблюдать объявленный тип и отказываться выполнять скрипт или таблицу стилей, чей Content-Type не соответствует назначению запроса. Современное усиление защиты выстраивает несколько уровней контроля: отдавать каждый предоставленный пользователем файл с корректным, конкретным Content-Type и, где уместно, Content-Disposition: attachment; размещать пользовательский контент на отдельном изолированном источнике (sandbox); и применять строгую Content-Security-Policy. Сканеры безопасности и анализаторы заголовков (например, Mozilla Observatory) отмечают любой HTML-ответ без nosniff.
flowchart TD
A[Пользователь загружает файл] --> B[Приложение отдаёт его<br/>с неверным/обобщённым типом]
B --> C{X-Content-Type-Options:<br/>nosniff установлен?}
C -- Нет --> D[Браузер анализирует байты<br/>и отрисовывает как text/html]
D --> E[Хранимый XSS выполняется<br/>в источнике жертвы]
C -- Да --> F[Браузер соблюдает<br/>объявленный тип]
F --> G[Файл скачивается, а не выполняется]● Примеры
- 01
X-Content-Type-Options: nosniff
- 02
Эндпоинт загрузки аватара возвращает image/png, но файл содержит HTML; без nosniff браузер выполняет его как страницу.
● Частые вопросы
Что такое MIME-сниффинг?
Поведение браузера, угадывающее тип содержимого ответа по байтам; может быть использовано для исполнения загруженных файлов как скриптов. Относится к категории Безопасность приложений в кибербезопасности.
Что означает MIME-сниффинг?
Поведение браузера, угадывающее тип содержимого ответа по байтам; может быть использовано для исполнения загруженных файлов как скриптов.
Как защититься от MIME-сниффинг?
Защита от MIME-сниффинг обычно сочетает технические меры и операционные практики, как описано в определении выше.