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 ещё может раскрывать данные.