
Prova de conceito para CVE-2018-1000529: XSS armazenado no plugin Grails Fields <=2.2.7. Demonstra a vulnerabilidade com um aplicativo Grails executável e inclui cronograma de divulgação.
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
Este repositório foi usado para demonstrar uma prova de conceito da vulnerabilidade para a divulgação responsável à equipe Grails.
A vulnerabilidade XSS está presente em todos os projetos que usam Grails v3.3.5 ou inferior, já que todos incluem o plugin Grails Fields afetado v2.2.7 ou inferior. Ela foi corrigida no plugin Grails Fields v2.2.8, que é usado no Grails v3.3.6.
Recomenda-se que todos os projetos que usam Grails v3.3.5 ou inferior atualizem para pelo menos v3.3.6 ou definam a versão da dependência do plugin Grails Fields no build.gradle como v2.2.8 ou superior.
Como o plugin Grails Fields é amplamente usado no Grails Scaffolding, todos os aplicativos gerados por scaffold que usam Grails v3.3.5 ou inferior são potencialmente vulneráveis. Embora o Grails tenha boas contramedidas de XSS em vigor por padrão, quaisquer objetos de domínio exibidos por tags do plugin Grails Fields que contenham código HTML ou JavaScript não são codificados nem validados e são executados pelo navegador.
Clone este projeto e inicie o aplicativo localmente executando:
Em um prompt de comando / powershell:
grailsw.bat run-app
Em uma janela de terminal:
./grailsw run-app
Quando o aplicativo Grails estiver totalmente inicializado, ele exibirá:
Grails application running at http://localhost:8080 in environment: development
myapp.TestControllerXSS será aberta.O objeto de domínio Test1 é criado durante a inicialização e é definido no arquivo grails-app/init/myapp/BootStrap.groovy.
A vulnerabilidade não está presente apenas quando o objeto é criado durante o BootStrap, mas também quando é criado na GUI gerada por scaffold por meio de entrada do usuário.
Isso pode ser testado removendo o objeto Test1 e adicionando um novo objeto Test contendo o nome: Test1<script>alert('XSS');</script>
Muitos agradecimentos à equipe Grails por resolver rapidamente esta vulnerabilidade, incluindo: