XML для RAG: как внешние сущности могут обойти границы загрузчика
Настройте XML-парсер на обработку недоверенных данных до передачи текста модели. Если разрешено опасное разрешение внешних сущностей, загрузчик может читать файлы или обращаться к сети независимо от содержания промпта.
Где появляется ошибка
Корпоративный помощник импортирует XML-выгрузку справочника. В штатном файле есть названия разделов и текст правил. В подготовленном файле структура содержит внешнюю сущность. Парсер с неподходящей конфигурацией обращается к внешнему ресурсу при разборе, а приложение считает это обычным извлечением документа. Даже если модель затем откажется показывать секрет, лишний доступ мог произойти раньше — на этапе импорта.
Рабочее решение
Выберите поддерживаемый парсер и явно проверьте его настройки для DTD, внешних сущностей, схем и сетевых обращений. OWASP приводит рекомендации для разных стеков; переносить флаг из Java в Python или из одного парсера в другой нельзя. Если формату приложения DTD не нужен, отклоняйте такой вход по согласованной политике. Ограничьте права процесса, сеть, объём и время разбора. Не называйте обнаружение строки DOCTYPE полным безопасным парсингом: проверять нужно поведение конкретного загрузчика и всех его зависимостей.
Контрольные случаи
| Проверка | Ожидаемое поведение |
|---|---|
| Обычная допустимая XML-выгрузка | Извлечение возвращает ожидаемые поля без незаявленных обращений к файлам и внешним адресам. |
| Тестовый XML с запрещённым внешним источником | Парсер отклоняет конструкцию или не разрешает сущность по политике; контрольный ресурс не читается. |
| Документ требует внешнюю схему для штатной работы | Зависимость вынесена в явную разрешённую конфигурацию, а не открывает произвольную сеть любому загруженному файлу. |
XML-парсеры различаются по поведению по умолчанию и версии. Не следует утверждать, что все уязвимы или все безопасны. Повторяйте отрицательный тест после обновления библиотеки, настроек и пути извлечения документа.
Защита RAG начинается с загрузчиков и парсеров: модель не может отменить доступ, который уже совершила подготовка данных. В платном курсе LLM Security PRO: Prompt Injection, утечки, tool-abuse можно продолжить изучение соответствующего инженерного направления. Перед покупкой сравните программу и открытые материалы со своей задачей.
Документация для проверки технических деталей: OWASP: предотвращение XXE.
Следующий шаг: Безопасность LLM-приложений: практические проверки. По смежным вопросам: Картинки в Markdown-ответе AI: как они могут утекать данные, Почему read-only SQL для LLM ещё может раскрывать данные.
