Специалист Cisco Talos Николай Гредум (Nicolai Grødum) рассказал в официальном блоге компании, что еще в ноябре 2016 года он обнаружил уязвимость, позволяющую обойти Content Security Policy (CSP). Данный защитный механизм, по сути, позволяет разработчиками конфигурировать HTTP-хедеры и инструктировать браузеры посетителей сайтов о том, какие именно ресурсы (JavaScript, CSS) могут быть загружены и откуда.
Эксплуатируя данный баг, атакующий может обойти CSP и загрузить вредоносный JavaScript, впоследствии использовав его для вредоносной активности. К примеру, злоумышленник может собрать куки пользователей, перехватывать нажатия клавиш, когда посетитель заполняет какую-либо форму, и так далее.
Разработчики Apple и Google уже выпустили патчи для своих продуктов, устранив уязвимость в составе Safari (CVE-2017-2419) и Chrome (CVE-2017-5033), соответственно. Так, Chrome 57.0.2987.98, Safari 10.1 и iOS 10.3 уже защищены от описанного бага. Отметим, что Firefox проблема не затрагивает.
Разработчики Microsoft, в свою очередь, еще в марте 2017 года сообщили, что аналогичная проблема в Edge устранена не будет, так как в компании отказались признать, что описанная Гредумом методика – это уязвимость, а не нормальная работа CSP. Полгода эксперты Cisco Talos пытались переубедить представителей Microsoft, но, к сожалению, так и не преуспели. В итоге информация об уязвимости была обнародована, а патча для Edge по-прежнему нет.
При этом Гредум отмечает, что баг достаточно легко эксплуатировать. Для этого понадобится использовать window.open() и открыть новое окно, после чего нужно задействовать функцию document.write для записи кода в этом окне перед загрузкой контента. В итоге злоумышленник получает возможность осуществить XSS-атаку, обманув CSP.