Остановить срабатывание правила CRS для данного аргумента

Я абсолютный новичок в OWASP ModSecurity, поэтому, пожалуйста, извините меня, если это простой вопрос! В настоящее время для функции загрузки изображений я получаю кучу предупреждений, подобных следующему:

ModSecurity: Предупреждение. Сопоставленный оператор Rx' with parameter (?i)\s\S\b' с переменной ARGS:json.ImageBytes' (Value: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4gv4SUNDX1BST0ZJTEUAAQEAAAvoAAAAAAIAAABtbnRyUkdCI (474171 символ опущен)' ) [file /etc/modsecurity.d/owasp-crs/ rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf] [строка 139] [id 941130] [версия 2] [msg XSS Filter — Категория 3: вектор атрибутов] [data Matched Data: ;base64 найдено в ARGS:json. ImageBytes: Data: Image / JPEG; BASE64, / 9J / 4AAQSKZJRGABAAABIAAD / 4GV4SUNDX1BST0ZJTEUAAAAAVOAAAAAAAABTBNRYUKAAVHYAAAAAAABSAFKAAAVHY3NWAAAAAAABSAFKAKAVHY3NWAAA (474141 символов отсутствует) [Seaughity 2] [ver owass_crss / 3.0.0] [зрелости 1] [точность 8] [тег приложение-много] язык-мульти] [тег платформа-мульти] [тег атаки-xss] [тег OWASP_CRS/WEB_ATTACK/XSS] [тег WASCTC/WASC-8] [тег WASCTC/WASC-22] [тег OWASP_TOP_10/A3] [тег OWASP_AppSensor/ IE1] [тег CAPEC-242] [имя хоста XX.XXX.X.XX] [uri /emps/api/emps/UpdateImage] [unique_id 160217346360.547876] [ref o15,7v29,474271t:utf8toUnicode,t:urlDecodeUni,t:htmlEntityD ecode,t:jsDecode,t:cssDecode,t:removeNulls]

Мне нужно предотвратить срабатывание правила 941130 в случае, если аргументом (ARGS) является json.ImageBytes.

Я не хочу полностью исключать правило, но я пытаюсь заставить ModSecurity игнорировать в случае указанного параметра.

Возможно также - есть ли способ сделать это с помощью URI (/emps/api/emps/UpdateImage)?

До сих пор я пробовал:

SecRuleUpdateTargetById 941130 !ARGS:json.ImageBytes

но безрезультатно.

Буду очень благодарен за любую помощь!


person Galentino    schedule 08.10.2020    source источник


Ответы (1)


На основе данной информации вы можете создать правило исключения — просто введите в поле REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.

Правило примерно такое:

SecRule REQUEST_URI "@beginsWith /emps/api/emps/UpdateImage" \
    "id:9000901,\
    phase:1,\
    t:none,\
    nolog,\
    pass,\
    ctl:ruleRemoveTargetById=941130;ARGS:json.ImageBytes"

или что-то подобное.

person airween    schedule 30.10.2020
comment
Спасибо! Только один вопрос - что такое id: 9000901 в таком случае? - person Galentino; 01.11.2020
comment
Когда вы используете SecAction или SecRule в конфигурации ModSecurity, вы ДОЛЖНЫ добавить уникальный идентификатор для каждого правила (или действия). Единственным исключением является цепочка правил: в этом случае все связанное правило должно иметь уникальный идентификатор. Существует рекомендация по размещению этих идентификаторов, см. эту страницу: github.com/SpiderLabs/ModSecurity/wiki/. Как вы написали, вы используете CRS, который может использовать 900 000–999 999, но мы используем плюсовую цифру для исключений, от 9 000 000 и выше. - person airween; 01.11.2020