Recipe Name:
Input Validation: Avoid Spring Expression Language Injection: Do not evaluate expressions controlled by user input (ExpressionParser)
Description:
Could lead to Spring Expression Language Injection
Level:
error
Language:
  • java
Tags:
  • expression language
  • Spring
  • Spring Core
  • security
  • framework specific
  • injection
  • OWASP Top 10
Documentation

Secure coding practices prescribe that spring expressions using dynamic values should be avoided.

Spring expression language is vulnerable for injection attacks. In newer versions expression evaluation is disabled by default. It is advised to avoid expression language evaluation where possible. If it can not be avoided, make sure to add proper Input Validation.

Recipe
id: scw:spring:el-expressionparser
version: 10
metadata:
  name: 'Input Validation: Avoid Spring Expression Language Injection: Do not evaluate expressions controlled by user input (ExpressionParser)'
  shortDescription: Could lead to Spring Expression Language Injection
  level: error
  language: java
  newCodeOnly: false
  scwCategory: injection:generic
  enabled: true
  descriptionFile: descriptions/SPEL_Injection_User_controlled_input_evaluation.html
  tags: expression language;Spring;Spring Core;security;framework specific;injection;OWASP Top 10
search:
  methodcall:
    args:
      1:
        type: java.lang.String
        value:
          containsUntrustedInput: true
    anyOf:
    - name: parseExpression
      declaration:
        type: org.springframework.expression.ExpressionParser
    - name: parseRaw
      declaration:
        type: org.springframework.expression.spel.standard.SpelExpressionParser
availableFixes: []