• Все разделы
  • Статьи
  • Медиа
  • Новости
  • Нормативные материалы
  • Конференции
  • Глоссарий

Note 1594475 - Отказ в обслуживании во всех программах, использующих iXML

Главная Специалистам База уязвимостей Note 1594475 - Отказ в обслуживании во всех программах, использующих iXML

Карточка уязвимости

Характеристики уязвимости

Уровень опасности
Оценка CVSS
(AV:N/AC:L/Au:S/C:N/I:N/A:P)
Производитель ПО
SAP
Наименование ПО
SAP Notes (1594475-3) SAP Support Packages (SAP_KERNEL_46D_EX2_32_BIT_SP595_002595, SAP_KERNEL_46D_EX2_32_BIT_SP999999_999999, SAP_KERNEL_46D_EX2_64_BIT_SP595_002595, SAP_KERNEL_46D_EX2_64_BIT_SP999999_999999, SAP_KERNEL_46D_EXT_32_BIT_SP595_002595, SAP_KERNEL_46D_EXT_32_BIT_SP999999_999999, SAP_KERNEL_46D_EXT_64_BIT_SP595_002595, SAP_KERNEL_46D_EXT_64_BIT_SP999999_999999, SAP_KERNEL_640_32_BIT_SP383_000383, SAP_KERNEL_640_32_BIT_SP999999_999999, SAP_KERNEL_640_32_BIT_UNICODE_SP383_000383, SAP_KERNEL_640_32_BIT_UNICODE_SP999999_999999, SAP_KERNEL_640_64_BIT_SP383_000383, SAP_KERNEL_640_64_BIT_SP999999_999999, SAP_KERNEL_640_64_BIT_UNICODE_SP383_000383, SAP_KERNEL_640_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_640_EX2_32_BIT_SP383_000383, SAP_KERNEL_640_EX2_32_BIT_SP999999_999999, SAP_KERNEL_640_EX2_32_BIT_UC_SP383_000383, SAP_KERNEL_640_EX2_32_BIT_UC_SP999999_999999, SAP_KERNEL_640_EX2_64_BIT_SP383_000383, SAP_KERNEL_640_EX2_64_BIT_SP999999_999999, SAP_KERNEL_640_EX2_64_BIT_UC_SP383_000383, SAP_KERNEL_640_EX2_64_BIT_UC_SP999999_999999, SAP_KERNEL_700_32_BIT_SP312_000312, SAP_KERNEL_700_32_BIT_SP999999_999999, SAP_KERNEL_700_32_BIT_UNICODE_SP312_000312, SAP_KERNEL_700_32_BIT_UNICODE_SP999999_999999, SAP_KERNEL_700_64_BIT_SP312_000312, SAP_KERNEL_700_64_BIT_SP999999_999999, SAP_KERNEL_700_64_BIT_UNICODE_SP312_000312, SAP_KERNEL_700_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_701_32_BIT_SP153_000153, SAP_KERNEL_701_32_BIT_SP999999_999999, SAP_KERNEL_701_32_BIT_UNICODE_SP153_000153, SAP_KERNEL_701_32_BIT_UNICODE_SP999999_999999, SAP_KERNEL_701_64_BIT_SP153_000153, SAP_KERNEL_701_64_BIT_SP999999_999999, SAP_KERNEL_701_64_BIT_UNICODE_SP153_000153, SAP_KERNEL_701_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_710_32_BIT_SP255_000255, SAP_KERNEL_710_32_BIT_SP999999_999999, SAP_KERNEL_710_32_BIT_UNICODE_SP255_000255, SAP_KERNEL_710_32_BIT_UNICODE_SP999999_999999, SAP_KERNEL_710_64_BIT_SP255_000255, SAP_KERNEL_710_64_BIT_SP999999_999999, SAP_KERNEL_710_64_BIT_UNICODE_SP255_000255, SAP_KERNEL_710_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_711_32_BIT_SP142_000142, SAP_KERNEL_711_32_BIT_SP999999_999999, SAP_KERNEL_711_32_BIT_UNICODE_SP142_000142, SAP_KERNEL_711_32_BIT_UNICODE_SP999999_999999, SAP_KERNEL_711_64_BIT_SP142_000142, SAP_KERNEL_711_64_BIT_SP999999_999999, SAP_KERNEL_711_64_BIT_UNICODE_SP142_000142, SAP_KERNEL_711_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_720_32_BIT_SP097_000097, SAP_KERNEL_720_32_BIT_SP999999_999999, SAP_KERNEL_720_32_BIT_UNICODE_SP097_000097, SAP_KERNEL_720_32_BIT_UNICODE_SP999999_999999, SAP_KERNEL_720_64_BIT_SP097_000097, SAP_KERNEL_720_64_BIT_SP999999_999999, SAP_KERNEL_720_64_BIT_UNICODE_SP097_000097, SAP_KERNEL_720_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_800_64_BIT_UNICODE_SP041_000041, SAP_KERNEL_800_64_BIT_UNICODE_SP999999_999999, SAP_KERNEL_802_64_BIT_UNICODE_SP019_000019, SAP_KERNEL_802_64_BIT_UNICODE_SP999999_999999, SAPKB62071, SAPKB64029, SAPKB70026, SAPKB70111, SAPKB70210, SAPKB71013, SAPKB71108, SAPKB72006, SAPKB73005, SAPKB73007, SAPKB73101, SAPKB73102)
Описание
Данная уязвимость существует из-за чрезмерного потребления ресурсов. Атакующий может отправить специально сформированный запрос, который вызовет чрезмерное потребление ресурсов процессом. В результате, другие процессы не смогут использовать новые ресурсы, ссылаясь на недоступность системы. Данное состояние может быть спровоцировано злоумышленником, чтобы вызвать отказ в обслуживании.
Как исправить
Необходимо, как минимум, установить исправления из данного бюллетеня. Обновления, представленные в данном бюллетене, включают в себя исправления для программ ABAP, новые параметры профиля, исправления для ядра SAP (disp+work.exe) и исправления для iXML DLL (dw_xml.dll).
Внимание! Основные исправления, касающиеся безопасности, поставляются с обновлением, представленным в данном бюллетене.

С пакетом поддержки из данного бюллетеня разработчики, использующие iXML, получат расширения основного решения в области безопасности. Эти изменения нельзя внести, используя инструкцию по исправлению ошибок.
После реализации данного бюллетеня в iXML появятся новые опции для обработки DTD (определения типа документа), позволяющие избежать DoS-атак с использованием XML-бомб.

Приложение, использующее iXML-библиотеку, может быть атаковано при помощи некорректно сформированного DTD, содержащегося в обработанном XML-документе. DoS-атаки на основе XML являются крайне асимметричными: чтобы донести до цели полезную нагрузку, злоумышленнику необходима только та часть вычислительной мощности или диапазона, которая требуется жертве на обработку данной полезной нагрузки. Одним из типов особенно вредоносных DoS-атак на основе XML является XML-бомба, которая представляет собой блок XML, правильно сформированный и соответствующий требованиям XML-схемы, но вызывающий аварийное завершение работы или зависание программы при попытке этой программы обработать его. Наиболее известным примером XML-бомбы является атака "Exponential Entity Expansion" (экспоненциальное распространение сущности). Злоумышленник может воспользоваться преимуществами XML для формирования вредоносной XML-бомбы. Атакующий создает XML-документ с вложенными сущностями, однако вместо одноуровневой глубины вложения он использует многоуровневую.

Система может оказаться уязвимой перед XML-бомбами, если программы используют iXML или XSLT (CALL TRANSFORMATION) для обработки сторонних XML-документов. Обычные программы трансформации не подвержены влиянию XML-бомб.

Самым простым способом защиты от всех видов атак с использованием XML-сущностей является отключение встроенных схем DTD для объектов обработки XML. Это непосредственная реализация принципа сокращения возможностей для проведения атаки: если какая-то функция не используется, то необходимо ее отключить, чтобы злоумышленники не могли воспользоваться ею в своих целях. iXML теперь обладает новой функцией, позволяющей запретить использование DTD в XML-документах в приложениях:
Используйте новый метод SET_DTD_RESTRICTION интерфейса IF_IXML_ISTREAM
iXML используется очень часто, а полный запрет на использование DTD во всех программах может привести к отказу части из них. Более того, некоторые программы могут быть не готовы к проблемам, связанным с обработкой XML, что может привести к непредсказуемому поведению системы. Поэтому, теперь iXML имеет режим автоматического определения DoS-атак с использованием XML-бомб. Тем не менее, существует небольшая вероятность возникновения ложных ошибок. Для исключения ложных ошибок можно использовать новый параметр профиля "ixml/xml_expansion_factor".
Администратор (для системы в целом)
Установите новому параметру профиля "ixml/dtd_restriction" значение "expansion".
Установите новому параметру профиля "ixml/xml_expansion_factor" соответствующее значение. Значение по умолчанию - 10.
Программист (для текущего обработанного XML-документа)
Используйте новый метод SET_DTD_RESTRICTION интерфейса IF_IXML_ISTREAM.
Используйте новый метод SET_MAX_EXPANSION интерфейса IF_IXML_ISTREAM, чтобы установить специальный порог для программы.
Функция iXML, автоматически определяющая XML-бомбы, сравнивает соотношение между количеством символов, считанных из IStream, и количеством символов, созданных в получившейся объектной модели документа. Коэффициент расширения (expansion factor), устанавливаемый параметром профиля или новым методом ISteam, определяет допустимое соотношение.

По умолчанию, параметр профиля "ixml/dtd_restriction" имеет значение "none", т.е. ограничения на обработку DTD отсутствуют. Начиная с версии 6.40, программа может отклонять оба параметра профиля iXML, используя новые методы интерфейса IF_IXML_ISTREAM из ABAP IStream. Необходимо учитывать тот факт, что параметр профиля "ixml/dtd_restriction" чувствителен к регистру.

Защита служб XML:
Если службы, уязвимые перед XML-бомбами, отсутствуют, то можно не менять существующие настройки.
Наиболее удобным способом защиты служб является установка параметру профиля "ixml/dtd_restriction" значения "expansion". Это может немного снизить скорость обработки XML. В случае обнаружения ложных DoS-атак, необходимо увеличить значение параметра профиля "ixml/xml_expansion_factor".
Задача заключается в том, что каждая служба должна настраиваться индивидуально при помощи новых методов интерфейса IF_IXML_ISTREAM. При помощи данных методов службы могут отменять настройки администратора.
Интерфейс IF_IXML_ISTREAM в ABAP iXML IStream также может быть использован для обработки XML-документов при помощи программ XSLT. Можно использовать данную функцию для защиты программ XSLT, как это делается для iXML программ. Необходимо только создать iXML IStream на основе исходного XML-документа и использовать данный IStream в выражении CALL TRANSFORMATION вместо прежних входных данных XML.
Можно заменить программы XSLT на программы Simple Transformation. В этом случае, DTD больше не будут поддерживаться вашими службами.
Ссылки