Получить консультацию по Solar appScreener

Python – востребованный язык программирования, на котором создано множество приложений. Ввиду широкой популярности продуктов на базе Python их количество огромно. Несмотря на удобство использования языка, хорошую интерпретацию, достаточный функционал и собственную концепцию программирования безопасность Python требует тщательного подхода и проведения серии тестов как на стадии разработки, так и готовых приложений. Для этого используются различные инструменты статического, динамического анализа, сервисы проверки приложений на безопасность.

Как защитить Python-приложения от вредоносных скриптов? 

Защита Python-приложений базируется на трех принципах:

  1. Все записи в sys.path должны направлять только на надежный и проверенный источник, где программный код выполняется без рисков.

  2. Место расположения основного скрипта прописано в sys.path.

  3. Инициирование команды python в текущем каталоге тождественно. местонахождению основного скрипта несмотря на присутствие параметров -c или -m.

Из этих принципов безопасности Python вытекает, что для того, чтобы защититься от вредоносных скриптов необходимо:

  1. Размещать исходный код исключительно в проверенных и надежных местах.

  2. Избегать использования любых скриптов, если они располагаются в папке Downloads, т.к. это чревато подменой исполняемых файлов.

Дыры безопасности Python

  • Инъекции. Одна из самых распространенных проблем безопасности, которая связана с несанкционированным доступом злоумышленников к БД через пользовательский ввод. В ходе атаки на приложение происходит исполнение команд в операционной системе сервера благодаря замене и некорректной обработке вводных данных. Как следствие киберпреступники получают доступ к БД.

  • Парсинг XML. Проблема возникает при внедрении киберпреступником в XML‑документы внешних сущностей, что приводит к их вынужденной обработке и выполнению на сервере. Провоцирует DoS-атаки или SSRF, направленные преимущественно на подрыв стабильности системы. Также делает доступным чтение, кражу файлов сервере.

  • Переполненный site-packages. Речь идет про переполнение директории импорта различными пакетами. Появление сторонних пакетов уже само по себе чревато множеством проблем безопасности ввиду рисков выполнения произвольного кода. Скопление пакетов и переполненность site-packages способны стать причиной переопределения всего поведения приложения и многократного усиления его уязвимостей.

  • Временные файлы. При генерации временных файлов присутствует вероятность подмены истинного файла подложным, особенно в случае использования функции mktemp(). Как следствие возникает загрузка не тех данных или становятся видны другие временные файлы, которые могут быть использованы злоумышленниками.

Помимо описанных проблем в безопасности Python не исключены временные атаки, десериализация данных через pickle, вторжение через YAML-файлы, использование уязвимостей старых версий Python и устаревших библиотек.

Уязвимости Python: типичные проблемы и риски

Проблемы безопасности в приложениях, созданных на Python во многом сосредоточены вокруг одних и тех же моментов, касающихся разработки или функционирования ПО. В качестве наиболее уязвимых мест Python выступают:

  1. Исходный код приложения. Он может быть работоспособным, но включать массу недоработок, ошибок, что делает его использование опасным занятием и рано или поздно приведет к угрозам информационной безопасности.

  2. Аутентификация. Слабо настроенная система аутентификации может быть сломана путем множественного обращения запросов или генерацией поточных паролей. Наиболее это актуально в тех случаях, когда отсутствуют ограничения на число попыток аутентификации или количество обращенных запросов к приложению на единицу времени.

  3. Вводные данные. Отсутствие контроля и фильтрации вводных данных поступающих к приложению чревато выполнением управляющих конструкций и команд, которые внедряют злоумышленники посредством XSS, SQL-инъекций.

Контролируя эти уязвимости Python возможно кардинально улучшить ситуацию с безопасностью и предотвратить множество ИБ.

обнаружение проблем безопасности python

Solar appScreener и OWASP ZAP для обнаружения проблем безопасности Python

Для проверки безопасности Python-приложений все чаще используется комплекс решений, сочетающих методы статического и динамического анализа. Например, проверенным тандемом для проверки безопасности ПО считается использование OWASP ZAP и Solar appScreener. Первый инструмент является сканером безопасности с открытым кодом, а второй функциональным анализатором, сочетающим SAST и DAST подходы к тестированию ПО. С помощью OWASP ZAP можно проверить ПО на разные виды проникновения, запустить активное и пассивное сканирование на угрозы, получить отчет и список предупреждений. Solar appScreener поможет найти уязвимости Python связанные с присутствием старых версий ПО, небезопасных конструкций вроде init() или assert. Помимо этого, анализатор находит публичные ошибки, которые негативно сказываются на безопасности ПО вроде значения true для debug при работе Django. Также Solar appScreener обнаруживает пакеты содержащие вредоносный код в модулях. В ходе статического анализа проверке подвергаются помимо самого приложения также его компоненты. Благодаря динамическому анализу становится возможным выявить различного рода проникновения в Python-приложения.

OWASP ZAP располагает открытым API, поэтому беспроблемно интегрируется с Solar appScreener, повышает тем самым удобство тестирования, сокращает время формирования и коррекции задач, позволяет полностью контролировать тестирование, полно и своевременно получать его результаты и рекомендации.

Защита Python-приложений требует внимания как к исходному коду, так и к функционалу, поведению ПО. Комплексное и широкое тестирование уязвимостей, ошибок, НДВ приложений поможет убедиться в отсутствии критических проблем в безопасности, получить полезные рекомендации по устранению недостатков ПО.

ДРУГИЕ СТАТЬИ ПРОДУКТА

Еще больше о наших возможностях

Статический анализ кода: как работает и для чего применяется

Статический анализ кода: как работает и для чего применяется

Узнать больше