Модули обработки XML

Исходный код: Lib/xml/


Интерфейсы Python для обработки XML сгруппированы в пакет xml.

Предупреждение

Модули XML не защищены от ошибочных или злонамеренно сконструированных данных. Если вам необходимо проанализировать данные, которым нет доверия или которые не прошли проверку подлинности, обратитесь к разделам Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен. и Пакет defusedxml.

Важно отметить, что для модулей в пакете xml требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль xml.parsers.expat всегда будет доступен.

Важно отметить, что для модулей в пакете xml.dom требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль xml.sax всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

  • Важно отметить, что для модулей в пакете xml.etree.ElementTree требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

  • Важно отметить, что для модулей в пакете xml.dom требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

  • Важно отметить, что для модулей в пакете xml.dom.minidom требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

  • Важно отметить, что для модулей в пакете xml.dom.pulldom требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

  • Важно отметить, что для модулей в пакете xml.sax требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

  • Важно отметить, что для модулей в пакете xml.parsers.expat требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен.

миллиард смешков

Уязвимый (1)

Уязвимый (1)

Уязвимый (1)

Уязвимый (1)

Уязвимый (1)

квадратичное увеличение

Уязвимый (1)

Уязвимый (1)

Уязвимый (1)

Уязвимый (1)

Уязвимый (1)

расширение внешнего объекта

Сейф (5)

Сейф (2)

Сейф (3)

Сейф (5)

Сейф (4)

DTD извлечение

Сейф (5)

Безопасно

Безопасно

Сейф (5)

Безопасно

декомпрессионная бомба

Безопасно

Безопасно

Безопасно

Безопасно

Уязвимый

крупные токены

Уязвимый (6)

Уязвимый (6)

Уязвимый (6)

Уязвимый (6)

Уязвимый (6)

  1. Expat версии 2.4.1 и новее не подвержен уязвимостям «миллиардный смех» и «квадратичное увеличение». Элементы по-прежнему указаны как уязвимые из-за потенциальной зависимости от системных библиотек. Отметьте pyexpat.EXPAT_VERSION.

  2. xml.etree.ElementTree не расширяет внешние объекты и создает ParseError при появлении объекта.

  3. xml.dom.minidom не расширяет внешние объекты и просто возвращает нерасширенный объект дословно.

  4. xmlrpc.client не раскрывает внешние объекты и опускает их.

  5. Начиная с версии Python 3.7.1, внешние общие объекты больше не обрабатываются по умолчанию.

  6. Expat версии 2.6.0 и новее не подвержен отказу в обслуживании из-за квадратичной среды выполнения, вызванной разбором больших токенов. Элементы по-прежнему указаны как уязвимые из-за потенциальной зависимости от системных библиотек. Отметьте pyexpat.EXPAT_VERSION.

миллиард смешков / экспоненциальное расширение сущности

Атака Billion Laughs, также известная как экспоненциальное расширение объекта, использует несколько уровней вложенных объектов. Каждый объект ссылается на другой объект несколько раз, а окончательное определение объекта содержит небольшую строку. Экспоненциальное расширение приводит к увеличению объема текста до нескольких гигабайт и потребляет много памяти и процессорного времени.

квадратичное расширение объекта с раздутием

Атака с квадратичным расширением похожа на атаку Billion Laughs; она также злоупотребляет расширением сущностей. Вместо вложенных сущностей она повторяет одну большую сущность с парой тысяч символов снова и снова. Атака не так эффективна, как в экспоненциальном случае, но она позволяет избежать запуска контрмер синтаксического анализа, которые запрещают глубоко вложенные объекты.

расширение внешнего объекта

Объявления сущностей могут содержать не только текст для замены. Они также могут указывать на внешние ресурсы или локальные файлы. Синтаксический анализатор XML обращается к ресурсу и вставляет содержимое в XML-документ.

DTD извлечение

Некоторые библиотеки XML, такие как xml.dom.pulldom в Python, извлекают определения типов документов из удаленных или локальных хранилищ. Эта функция имеет те же последствия, что и проблема расширения внешнего объекта.

декомпрессионная бомба

Декомпрессионные бомбы (они же ZIP bomb) применяются ко всем XML-библиотекам, которые могут анализировать сжатые XML-потоки, такие как HTTP-потоки в формате gzip или файлы, сжатые с помощью LZMA. Для злоумышленника это может уменьшить объем передаваемых данных в три раза и более.

крупные токены

Expat необходимо повторно проанализировать незавершенные токены; без защиты, введенной в Expat 2.6.0, это может привести к сбоям во время выполнения, которые могут быть использованы для отказа в обслуживании в приложении, выполняющем синтаксический анализ XML. Проблема известна как CVE-2023-52425.

Документация для defusedxml на PyPI содержит дополнительную информацию обо всех известных векторах атак с примерами и ссылками.

Пакет defusedxml

defusedxml - это пакет на чистом Python с измененными подклассами всех XML-анализаторов stdlib, которые предотвращают любые потенциально вредоносные операции. Рекомендуется использовать этот пакет для любого серверного кода, который анализирует ненадежные XML-данные. Пакет также поставляется с примерами эксплойтов и расширенной документацией по другим эксплойтам XML, таким как внедрение XPath.

Вернуться на верх