( 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 취약점 스캔 시도 >
( 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://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) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기