Checkpoint AI в pickle: почему нельзя загружать чужой файл состояния

Не десериализуйте недоверенный pickle ради восстановления AI-задачи. Проверка расширения, имени файла или поля «это checkpoint» не ограничивает код, который может выполняться при загрузке этого формата.

Разберём рабочий случай

Пользователь прикладывает файл, чтобы помощник продолжил прежнюю работу. Разработчик видит знакомое расширение и передаёт содержимое в pickle.load. Ошибка не связана с тем, последует ли модель вредоносной инструкции: опасная обработка происходит в Python ещё до появления контекста. Тот же риск появляется, когда агент сам скачивает «сохранённое состояние» из внешнего источника или получает его через ненадёжное хранилище.

Что изменить

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

Как проверить результат

ПроверкаОжидаемое поведение
Checkpoint из разрешённого серверного хранилищаПроверяются субъект, принадлежность задачи и версия формата; доступ к файлу не выдаётся только по известному идентификатору.
Пользователь прикрепил произвольный pickleОсновной сервис не запускает десериализацию ради определения, безопасен ли объект; импорт отклонён по контракту.
Ограниченный формат содержит неизвестное действиеВалидный JSON не даёт разрешение исполнить его; схема, полномочия и переход состояния проверяются отдельно.

Этот разбор не предлагает безопасный «ограниченный unpickler» как универсальное решение. Документация Python прямо предупреждает о недоверенных данных; изоляция уменьшает последствия, но не создаёт необходимости принимать опасный формат.

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

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

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