Новости | ITSec.Ru

Уязвимость из JavaScript перекочевала в Python

Written by Komolov Rostislav | 19/01/23

Независимый исследователь безопасности Абдулрахим Халед недавно поделился подробностями, о найденной им уязвимости в языке программирования Python, которую он назвал «class pollution» (в дословном переводе «загрязнение класса»). 

Эта уязвимость интересна тем, согласно Securitylab, что она по своему принципу очень похожа на уязвимость из другого языка программирования — JavaScript. Там она называется «prototype pollution» (в дословном переводе «загрязнение прототипа»).

Исследователь отметил, что уязвимости типа «pollution» чаще всего встречаются в приложениях на JavaScript. Языки на основе классов, такие как Python, кажутся невосприимчивы к такого рода уязвимостям. Однако, Халед сообщил, что лично наблюдал подобную уязвимость в Python, где уязвимость проявилась в «загрязнении» изменяемого атрибута «class». Исследователь также подробно описал, как именно злоумышленник может «загрязнить» любой родительский класс.

По мнению исследователя, потенциально уязвимость может привести к следующим последствиям для веб-приложений Python:

  • Перезапись секретного ключа, используемого для подписи сеансов в веб-приложениях Flask, ручное создание действительных сеансов для проведения атак с захватом учетной записи.
  • Обход фильтров. Например, обход фильтра Jinja при попытке загрузить файл шаблона. Это позволит злоумышленникам загружать файлы из любого локального каталога, не ограничиваясь каталогом шаблонов.
  • Удаленное выполнение команды путем перезаписи переменных среды COMSPEC или PATH.

«Я ожидаю скоро увидеть похожие уязвимости и в других языках программирования», — выразил своё опасение Абдулрахим Халед.