JBoss EAP 6.4.21 возвращает 400 неверных запросов

JBoss EAP 6.4.21 возвращает ответ «400 Bad Request» при отправке неэкранированных символов (необработанных символов, таких как | ) в строке запроса и параметрах пути запроса.

Приведенная ниже установка была опробована в <system-properties> в домене.

<property name="-Dorg.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="-Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>

person Velmayil Subramanian    schedule 12.02.2019    source источник


Ответы (1)


Согласно вашей версии JBoss и данным официального сайта RedHat:

Исправление для CVE-2016-6816 более строго применяет правила при обработке недопустимых символов в HTTP-запросах.

В результате все клиенты, отправляющие запросы, содержащие любой из следующих символов ASCII, получат 400:

  1. Управляющие символы (значения от 0x01 до 0x1f и 0x7f)
  2. 8-битные значения ASCII (значения > 0x7f)
  3. Любой из следующих символов: ' ' (пробел) '"' (двойная кавычка) '#' (решетка или решетка) '‹' (меньше чем) '>' (больше) '\' (обратная косая черта) '^ ' (circumflex) '`' (обратная кавычка) '{' (левая волнистая скобка или фигурная скобка) '|' (вертикальная черта) '}' (правая волнистая скобка или фигурная скобка)

Подводя итог:

Для вашей версии jboss вы должны добавить эту строку в сценарий запуска standalone.sh

JAVA_OPTS="$JAVA_OPTS -Dtomcat.util.http.parser.HttpParser.requestTargetAllow='{|}'"

Имейте в виду, что если вы обновитесь до eap 7.1.1+, это решение не будет работать. Вместо этого добавьте эту строку в файл standalone.conf:

JAVA_OPTS="$JAVA_OPTS -Dorg.wildfly.undertow.ALLOW_UNESCAPED_CHARACTERS_IN_URL=true"

Я надеюсь это тебе поможет.

person Santiago    schedule 12.02.2019