[Web Security] HTTP Error Code와 Cloaking

이번 포스트에서는 HTTP Error Response와 Error Response Cloaking(Suppressed) 에 대해서 간단하게 짚고 넘어가려고 한다.
이미지 첨부를 하면 좋겠지만, 가지고 있는 이미지가 없어서 보여줄 수 있는게 없다.

인터넷을 사용하다보면 HTTP 에러는 간혹 보여진다.
대중적으로 사용되는 사이트에서는 보기 힘들지만, 찾기 힘든 지식들을 찾다보면 별의별 사이트들을 들어가게 되는데 옛날에 게시되었던 사이트를 들어가거나 하면 종종 발생하곤 한다.

하지만 그렇다고 이 에러가 없는 것은 아니고, 개발 단계에서 모든 에러를 캐치하고 조치한 후에 Published되기 때문에 보이지 않는 것이다. 대단하신 분들이다..!

HTTP Error는 400s와 500s, 크게 두 종류로 볼 수 있다.
1xx, 2xx, 3xx도 존재하지만 이 응답코드들은 에러코드가 아니기 때문에 이번 포스트에서는 제외하도록 하겠다.

HTTP 4xx의 응답 코드는 Client side error로 본다.
일반적으로 통신은 서버와 클라이언트간에 이루어지는데 그 통신에서 Client에서 보내온 신호가 뭔가 이상해서 응답코드를 보낸다는 뜻이다.
그 이유는 정말 다양하다. 그 중 대표적인 것은 403(Forbidden), 404(Not Found) 정도이다.

HTTP 5xx의 응답 코드는 Server side error이다.
4xx와 반대로 Server쪽에서 제대로 처리를 못했다는 응답 코드를 보내주는 것이다.
대체로 Server에서 문제가 발생하면 아에 응답을 보기가 힘들기 때문에 Client측에서는 쉽게 보기는 쉽지 않은 코드이다.

상세한 코드 내용은 위키백과 같은 곳에 상세하게 기록이 되어있으니 참고하면 될 것이다.

보통 개발단계에서는 이 에러 메세지는 중요한 역할을 한다.
어떤 기능에서 어떻게 막히는지를 알아야 디버깅(Debug) 하기가 쉽기 때문이다.
하지만 공개된 서비스에서 이 에러코드들이 보이는 것은 보안 취약점을 보여주는 부분이 되어버린다.
해커들에게 이런 에러코드는 하나의 출입구로 쓰일 수 있기 때문이다.

그래서 일반적으로 이런 에러코드는 숨겨버리는 기능을 만들어두는데, 업체마다 명칭을 조금씩 다르게 한다.
나는 Error Response Cloaking이라고 부르는데, 에러 메세지가 발생하면 다른 페이지로 Redirect시켜서 어떤 에러가 발생했는지 보지 못하게 만드는 것이다.

예를 들면, 403 Error가 발생하면 400 Error라는 대표 페이지로 리다이렉션 시켜서 정확히 어떤 에러가 발생했는지 알 수 없게 만들어 주는 것이다.
이런 기능은 웹서버에서 대체로 제공해주고 있는데, 웹방화벽에서도 이러한 기능을 제공해주고 있다.
웹방화벽에서는 이런 부분도 Attack의 Category로 관리하고 있으며, 통과시킬지 Cloaking시킬지 설정할 수 있다.

Leave a Reply