» data-html=»true» data-original-title=»JavaScript»>JavaScript. Там она называется «prototype pollution» (в дословном переводе «загрязнение прототипа»).
Исследователь отметил, что уязвимости типа «pollution» чаще всего встречаются в приложениях на JavaScript. Языки на основе классов, такие как Python, кажутся невосприимчивы к такого рода уязвимостям. Однако, Халед сообщил, что лично наблюдал подобную уязвимость в Python, где уязвимость проявилась в «загрязнении» изменяемого атрибута «class». Исследователь также подробно описал, как именно злоумышленник может «загрязнить» любой родительский класс. На схему работы уязвимости можно посмотреть ниже:
По мнению исследователя, потенциально уязвимость может привести к следующим последствиям для веб-приложений Python:
- Перезапись секретного ключа, используемого для подписи сеансов в веб-приложениях Flask, ручное создание действительных сеансов для проведения атак с захватом учетной записи.
-
Обход фильтров. Например, обход фильтра Jinja — это шаблонизатор для языка программирования Python, который используется для генерации динамических HTML, XML и других типов файлов.
Jinja позволяет настраивать теги, фильтры, тесты и глобальные переменные. В отличие от шаблонизатора Django, Jinja позволяет конструктору шаблонов вызывать функции с аргументами на объектах.