Файловый tool AI и symlink: почему префикса пути недостаточно

Символическая ссылка может вести из разрешённого каталога наружу, хотя видимая строка пути начинается правильно. Проверяйте фактическое разрешение пути и права исполнителя; простое startswith не является границей файловой безопасности.

Пример из разработки

Агенту разрешено читать папку workspace. Внутри неё лежит ссылка reports, указывающая на другой каталог. Запрос workspace/reports/private.txt проходит строковую проверку префикса, а реальное чтение обращается за пределы области. Есть и более простая ошибка: workspace-old начинается с тех же букв, но не является дочерним каталогом workspace. Эти два случая требуют понимания структуры пути, а не более строгой формулировки инструкции модели.

Почему это работает

Для существующего пути разрешите ссылки подходящим механизмом и сравните компоненты с разрешённым корнем. В Python Path.resolve помогает получить разрешённый путь; сам по себе он не превращает последующее открытие в атомарную безопасную операцию. Другой процесс может подменить ссылку между проверкой и чтением. Для чувствительных tools выбирайте доступные в вашей ОС безопасные файловые механизмы и изоляцию: исполнитель не должен иметь права читать произвольные рабочие каталоги. Запись нового файла требует отдельной проверки родительского каталога.

Проверка перед использованием

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

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

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

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

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