Weaknesses of type CWE-917
59 resultsInjeção de linguagem de expressão
Ocorre quando uma aplicação constrói expressões dinâmicas (como EL em JSP, SpEL em Spring, OGNL em frameworks Java) sem sanitizar entrada do usuário. Um atacante injeta código nessas expressões, que é interpretado e executado no servidor, permitindo acesso a objetos, métodos e variáveis sensíveis da aplicação.
Uma página JSP concatena nome do usuário direto em uma expressão EL como ${param.user}, ou um formulário Spring usa SpEL para filtros dinâmicos. Um atacante envia ${T(java.lang.Runtime).getRuntime().exec('cmd')} como entrada e obtém execução de comando no servidor.
Nunca concatene entrada de usuário em expressões dinâmicas. Use templates com escapeamento automático, valide e sanitize entrada contra padrões whitelist, ou use APIs de binding seguro (como binding paramétrico) ao invés de construir expressões em string. Desabilite EL ou SpEL quando não forem necessários.