Python-библиотеки для ML тайно качают данные: как защитить закрытый контур
Многие популярные Python-библиотеки для машинного обучения при установке или импорте тянут зависимости и делают HTTP-запросы к внешним серверам. В закрытом контуре (без доступа в интернет) это приводит к падению приложений и уязвимостям. Разработчик R77.AI Павел на практике столкнулся с такой проблемой и делится методами её решения.
Чтобы найти скрытые загрузки, автор предлагает анализировать сетевой трафик (например, через mitmproxy), проверять код библиотек на наличие вызовов urllib/requests и использовать статический анализ с помощью bandit или semgrep. Особое внимание стоит уделить библиотекам, которые автоматически проверяют обновления или отправляют телеметрию.
Для работы в изолированной среде Павел рекомендует кэшировать все зависимости заранее, настраивать белые списки разрешённых хостов и использовать зеркала PyPI. Если библиотека всё равно пытается выйти в сеть, можно применить патчинг или заменить её на альтернативу без внешних запросов. Полный разбор с примерами кода — в статье на Хабре.