CSS в ИБ
Небольшая заметка, в которой показываем, как CSS может стать инструментом для различных стратегий взлома.
Last updated
Небольшая заметка, в которой показываем, как CSS может стать инструментом для различных стратегий взлома.
Last updated
CSS сам по себе не источник уязвимостей в веб-приложениях. Но существуют способы, где язык стилей — часть стратегии злоумышленников.
Встроенный или внешний CSS может быть модифицирован для включения вредоносного кода. Это происходит, когда разработчики не фильтруют пользовательский ввод, который попадает в стили. В этом сценарии злоумышленники могут попытаться внедрить в CSS свои директивы.
Когда веб-сайты позволяют загрузку CSS-файлов с внешних источников, это может быть использовано для запуска атак на уровне протокола, таких как DNS-ребайндинг или атаки по промежуточным звеньям.
Clickjacking: CSS может использовать для маскировки вредоносных элементов интерфейса, делая их невидимыми или замаскированными.
Самый распространенный пример — это фишинг. Злоумышленники просто копируют известные ресурсы, повышая вероятность обмана и кражи конфиденциальной информации.
В CSS есть возможность подключения шрифтов или других ресурсов с использованием URL. Потенциально это можно использовать для загрузки вредоносного контента или отслеживания пользователей.
Включить CSP в заголовки ответов сервера. Это ограничит ресурсы (скрипты, стили, изображения и т. д.), которые могут загружаться на страницу. По сути это главный шаг против инъекций.
Фильтровать и санировать пользовательский ввод. Это тоже поможет предотвратить внедрение вредоносных данных и CSS-инъекции.
Использовать методологии BEM (Блок, Элемент, Модификатор) и CSS модули, компонентные подходы (например, в React с styled-components или Emotion). Это поможет избежать переопределения стилей и обеспечить модульность и изолированность.
Сократить использование inline-стилей, так как это потенциальный вектор для атак.
Использовать HTTPS, чтобы исключить возможность для .
Проверять файлы CSS, загружаемые с серверов или CDN. Это поможет заметить подмену содержимого или добавление вредоносного кода.
Обновить браузеры и инструменты. Ну это база.
Ограничить доступ на сервере таким образом, чтобы только авторизованные пользователи могли загружать или изменять CSS и другие ресурсы сайта.