Комментарии 2
О, круто, это значит Python уже крутится на универсальном символическом движке?
По поводу кода - какие есть причины писать такой сложный динамический импорт? Не лучше ли здесь предупреждать о сложном и неподдерживаемом коде? Я думаю даже в статических языках можно наворотить всякого с рефлексией, что любой анализатор не справится.
Скрины с кодом - не очень удобно, не смог скопировать импорт для цитирования :(
Да, обновленный анализатор для Python уже в релизе.
Вызов метода __import__
встречается в пользовательском коде, необходимо его поддерживать. Привычный import
работает с идентификаторами, а вызов метода __import__
принимает на вход строковый литерал, атакующие этим воспользовались. Учтем :)
Стоит упомянуть, что другие аргументы данного метода позволяют указать области видимости в контексте интерпретируемого пакета, список импортируемых объектов, абсолютный или относительный импорт. Результат импорта вместо добавления в текущий локальный скоуп является возвращаемым значением функции. Подробнее можно прочитать в документации.
Та самая команда:
__import__(b"\xff\xfes\x00u\x00b\x00p\x00r\x00o\x00c\x00e\x00s\x00s\x00".decode('utf-16').check_output(*CMD*).decode()
По горячим следам: как обходили PT Application Inspector на Standoff 11