본문 바로가기

WAS/JBoss&WildFly

[JBoss EAP 7] unescape code 관련 지원

728x90

===

1) 호출 URL에 기호 문자 ^ 포함을 하려면 어떻게 해야 하나요?

https://s-core.co.kr/post_middleware/faq-wildfly-%ed%98%b8%ec%b6%9c-url%ec%97%90-%ea%b8%b0%ed%98%b8-%eb%ac%b8%ec%9e%90-%ed%8f%ac%ed%95%a8%ec%9d%84-%ed%95%98%eb%a0%a4%eb%a9%b4-%ec%96%b4%eb%96%bb%ea%b2%8c-%ed%95%b4%ec%95%bc-%ed%95%98/

 

2) When to Encode or Decode

https://datatracker.ietf.org/doc/html/rfc3986#section-2.4

 

3) UT000072: Failed to decode url 100% to charset UTF-8

4) Undertow does not process requets with invalid characters

===

 

프로젝트 오픈을 하고 얼마 지나지 않아 발생했던 케이스다.

오픈 당일에 현장 방문 대기까지 했지만, 갑작스러운 연락에 당황했던 케이스라 정리한다.

 

상황은 이랬다.

WebLogic 10.3.6 -> Jboss eap 7.4

마이그레이션을 해야 했던 상황이고,

기존 weblogic에서 운영중이던 애플리케이션은 상당히 예전 애플리케이션이라고 했다.

앞으로 설명할 문제 현상이 weblogic에서 운영중일 때는 발생하지 않았음을 미리 언급한다.

 

애플리케이션의 동작과정은 다음과 같았다.

로그인을 진행 -> 코드쪽에서 암호화를 진행 -> 암호화된 값을 가지고 DB에 접근 -> 로그인 성공

문제는 암호화를 진행한 다음에 JBoss 에서 발생한 것이다.

 

처음에는 % 자가 들어가는 unescape code 관련하여 발생한 문제로 보고

운영업체 쪽에서 조치를 취했다. 하지만 해당 방법으로는 해결되지 않았다.

당장에 오픈을 한 서비스라서 나 또한 조사중이었는데 마땅히 나오는 내용이 없었지만,

운영단에서 decode-url 값을 false로 두고 난 뒤 부터는 정상운영이 됐다고 한다.

 

그리고 이 부분에 대해서 보안 취약점에 걸릴만한 요소는 없는지 확인 요청을 하셨다.

 

그러다 보니 검색해서 알게 된 사실은 다음과 같았다.

문제의 원인은 unescape code가 맞다. 그러니 코드 단에서 % 문자를 지워야 한다.

몇몇 요청들에 대해서 암호화 과정 중에 % 기호가 포함되는 경우가 있었을 것이고,

% 기호가 포함되는 경우에는 400 response 처리됐을 것입니다.

그리고 발췌한 글을 살펴보면,

When to Encode or Decode

https://datatracker.ietf.org/doc/html/rfc3986#section-2.4

% 기호가 %25로 처리되지 않으면

decoding 과정 중에 문제가 발생할 수 있음을 보여주고 있습니다.

 

따라서 %가 포함되는 호출의 경우 정상적인 처리를 위해

decode-url false로 설정이 필요하고, JBoss 설정 상에서는 해당 내용이 전부이며,

이외의 상황에 대해서는 애플리케이션 로직 수정이 필요해 보였다.

 

그리고 내 판단에는 공식 솔루션이기도 하고 보안 관련 내용은 확인 되지 않아

이렇게 말씀드리고 지원을 마무리했다.