AI загружает ZIP: как не распаковать файл за пределы каталога

Проверяйте путь каждого элемента архива до записи и ограничивайте сам исполнитель. Имя внутри ZIP — недоверенное значение; объединение строки с каталогом назначения ещё не удерживает файл внутри этого каталога.

Где появляется ошибка

Помощник принимает архив проектной документации. В обычном архиве находятся docs/intro.txt и docs/setup.txt. В другом появляется элемент с переходом в родительский каталог. Самодельный загрузчик перебирает имена и сохраняет каждое по пути «папка обработки плюс имя». В результате файл может попасть вне рабочей области. Эта ошибка возникает ещё до извлечения текста и обращения к модели; просьба агенту соблюдать границы её не исправляет.

Рабочее решение

Составьте политику допустимых элементов: относительные пути, ожидаемые типы, отсутствие выхода за рабочую область и запрещённых ссылок. Проверяйте правила для целевой ОС, включая абсолютные пути, разделители и особенности дисков. Не переносите предположение между интерфейсами библиотеки: Python отдельно предупреждает, что zipfile.Path не очищает имена так же, как extract и extractall. Используйте подходящий проверенный механизм, но не называйте его полной защитой от всех архивных угроз. Распаковывайте в отдельную область с минимальными правами.

Контрольные случаи

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

Проверка путей не ограничивает распакованный объём и время работы. Эти лимиты нужны отдельно. Если есть другие процессы, меняющие каталоги одновременно, строковой проверки пути тоже недостаточно: требуется защита файловых операций и изоляция среды.

Безопасность AI-сервиса включает подготовку вложений: ошибка загрузчика способна обойти любые ограничения промпта. В платном курсе LLM Security PRO: Prompt Injection, утечки, tool-abuse можно продолжить изучение соответствующего инженерного направления. Перед покупкой сравните программу и открытые материалы со своей задачей.

Документация для проверки технических деталей: Документация Python zipfile.

Следующий шаг: Безопасность LLM-приложений: практические проверки. По смежным вопросам: Память AI-агента: как не сохранить чужую команду навсегда, HTML из ответа LLM: как не превратить чат в XSS.