KOROMOON

착한 사마리아인이 되고 싶습니다.

10/12/2021

[CVE-2021-41773] Apache HTTP Server Path Traversal Vulnerability (Apache HTTP Server 경로 우회 취약점)


( 1 ) 취약점 설명


Apache HTTP Server 2.4.49 이하 버전에서 경로 유효성 검사 결함으로 인해 경로 탐색이 가능한 취약점으로 원격코드 실행이 허용될 수 있음.

2.4.49 버전에서 취약점을 발견하였으나 2.4.50 패치에서 수정사항이 불완전하여 영향이 있으므로 2.4.51 버전으로 업데이트가 필요함.

CVE-2021-41773 의 불완전한 수정으로 인해 CVE-2021-42013 취약점이 추가로 발생함.




( 2 ) 취약점 분석


공격자는 경로 탐색 공격을 통해 파일을 읽고 쓰고 실행할 수 있음.

상대 경로 "../" 표시로 하위 경로로 이동할 수 있으나 아파치에서는 "../" 문자열을 차단시킴.


< "../" 차단 코드 >


그러나 파일 및 경로 이름이 포함하는 URL 에 URL Escape 문자를 사용하여 변환 및 우회할 수 있음.


URL 문자열에 Escape 문자가 필요하지 않더라도 일반적으로 웹 요청에서 Escape 인코딩을 할 수 있으며 서버는 Escape 디코딩하여 사용함.


. .       <-- 두 점은 문자 그대로 표현

 

%2E .     <-- 첫 번째 점만 URL Escape 인코딩

%2e .     <-- URL Escape 는 대문자 또는 소문자 16진수를 사용할 수 있음

 

. %2E     <-- 두 번째 점만 URL Escape 인코딩

. %2e  

 

%2E %2E   <-- 둘 다 URL Escape 인코딩

%2e %2E

%2E %2e

%2e %2e


Apache HTTP Server 2.4.49 버전에서는 URL 경로를 정규화하거나 정규화하기 위해 추가된 새로운 코드로 경로 이름에서 일관성이 없고 불필요하거나 위험한 부분을 제거함.

그러나 위 처음 세 가지 경우만 올바르게 감지함. (파란색 글씨 감지, 빨간색 글씨 미감지)


두 번째 점을 %2E 로 인코딩할 경우 점-점 체크 검사를 우회하여 적절하게 명명된 경로 탐색 취약점을 악용할 수 있음.


아래와 같이 Apache HTTP Server 2.4.50 버전의 코드 수정에서 첫 번째 문자가 이미 점으로 나타나는 점-점 체크 검사를 명시적으로 확인하는 코드로 서툴게 수정됨.

링크 : 

https://svn.apache.org/viewvc/httpd/httpd/trunk/server/util.c?view=markup&pathrev=1893724


< Apache HTTP Server 2.4.50 버전의 코드 수정 >


현재 해당 취약점을 악용하는 스캔 시도가 발생하고 있음.

추가로 CVE-2021-41773 의 불완전한 수정으로 인해 CVE-2021-42013 취약점 스캔 시도도 발생함.



< CVE-2021-41773 취약점 스캔 시도 >


< CVE-2021-42013 취약점 스캔 시도 >





( 3 ) 취약점 대응 방안


Apache HTTP Server 2.4.51 버전으로 업데이트함.

업데이트 파일 링크 : https://httpd.apache.org/download.cgi#apache24


그리고 아래와 같이 Snort 패턴을 등록하여 공격 탐지 및 차단을 진행함.


alert tcp any any -> any any (msg:"KOROMOON_CVE-2021-41773_Apache HTTP Server Path Traversal_Detected_1"; flow:established,from_client; content:"/.%2e/.%2e/"; content:" HTTP/"; content:"|0d 0a|"; distance:3; within:2;)


alert tcp any any -> any any (msg:"KOROMOON_CVE-2021-41773_Apache HTTP Server Path Traversal_Detected_2"; flow:established,from_client; content:"/.%2e/%2e%2e/"; content:" HTTP/"; content:"|0d 0a|"; distance:3; within:2;)


alert tcp any any -> any any (msg:"KOROMOON_CVE-2021-42013_Apache HTTP Server Path Traversal_Detected"; flow:established,from_client; content:"/.%%32%65/.%%32%65/"; content:" HTTP/"; content:"|0d 0a|"; distance:3; within:2;)




참고 사이트 : 

https://nakedsecurity.sophos.com/2021/10/06/apache-web-server-zero-day-bug-is-easy-to-exploit-patch-now/

https://blog.talosintelligence.com/2021/10/apache-vuln-threat-advisory.html

https://downloads.apache.org/httpd/CHANGES_2.4

https://svn.apache.org/viewvc/httpd/httpd/trunk/server/util.c?view=markup&pathrev=1893724

https://twitter.com/vx_herm1t/status/1446377358399844359

https://namu.wiki/w/URL%20escape%20code




============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.


댓글 없음:

댓글 쓰기