'내가 만든 코드에 취약점이 있을까?'를 우려하시는 분들을 위해 아래와 같이 정리했습니다.
아래 조건을 모두 충족시킨다면 코드는 치명적인 Remote code execution 취약성이 존재할 여지가 있습니다.
- EL 2.2를 지원하는 서블릿 컨테이너를 쓰거나 EL 2.2 라이브러리를 직접 jar파일로 참조해서 쓰고 있다. (대표적으로 Tomcat 7.x혹은 Glassfish 2.2.x)
- Spring 3.1.x 미만 버전을 쓰고 있다.
- Spring의 JSP Tag( <spring:message.. 등)을 쓰고 있다.
- Spring의 JSP Tag에서 EL을 지원하는 속성에 사용자가 입력한 값이 들어갈 수 있다.
- 각 태그의 속성의 EL지원 여부는 Stefano Di Paola 등의 Expression Language Injection 보고서 참조