
NVD CVE-2018-1000529: https://nvd.nist.gov/vuln/detail/CVE-2018-1000529
MITRE CVE-2018-1000529: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1000529
Этот репозиторий использовался для демонстрации proof-of-concept уязвимости в рамках ответственного раскрытия команде Grails.
XSS-уязвимость присутствует во всех проектах, использующих Grails v3.3.5 и ниже, поскольку все они включают затронутый плагин Grails Fields v2.2.7 и ниже. Она была исправлена в плагине Grails Fields v2.2.8, который используется в Grails v3.3.6.
Всем проектам, использующим Grails v3.3.5 или ниже, рекомендуется обновиться как минимум до v3.3.6 или указать версию зависимости плагина Grails Fields в build.gradle не ниже v2.2.8.
Поскольку плагин Grails Fields широко используется в Grails Scaffolding, все скаффолд-приложения, использующие Grails v3.3.5 и ниже, потенциально уязвимы. Несмотря на то, что Grails имеет хорошие меры защиты от XSS по умолчанию, любые объекты домена, отображаемые тегами плагина Grails Fields и содержащие HTML- или JavaScript-код, не кодируются и не проверяются и выполняются браузером.
Клонируйте этот проект и затем запустите приложение локально, выполнив:
В командной строке / PowerShell:
grailsw.bat run-app
В окне терминала:
./grailsw run-app
Когда приложение Grails полностью инициализировано, оно отобразит:
Grails application running at http://localhost:8080 in environment: development
myapp.TestControllerXSS.Объект домена Test1 создается во время инициализации и определен в файле grails-app/init/myapp/BootStrap.groovy.
Уязвимость присутствует не только при создании объекта во время BootStrap, но и при его создании через пользовательский ввод в сгенерированном графическом интерфейсе.
Это можно проверить, удалив объект Test1 и добавив новый объект Test с именем: Test1<script>alert('XSS');</script>
Огромное спасибо команде Grails за быстрое устранение этой уязвимости, а именно: