KOROMOON

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

5/11/2022

[CVE-2022-1388] F5 BIG-IP iControl REST 인증 우회 취약점


( 1 ) 취약점 설명


CVE-2022-1388 취약점은 CVSS 9.8 로 높은 점수를 받은 심각한 취약점으로 F5 사 보안팀에서 처음 발견하여 05월 04일에 보안 권고에 공지됨.

F5 Nwtworks 제품의 BIG-IP 솔루션 관리 인터페이스에서 지원하는 iControl REST 구성 요소에 인증 우회하여 원격코드 실행이 가능한 취약점임.


F5 BIG-IP 란?

소프트웨어와 하드웨어의 결합을 통해 F5 BIG-IP 는 네트워크를 통과하는 트래픽의 검사 및 암호화를 허용하며 로드밸런서, 어플리케이션 방화벽 및 전체 프록시 역할을 수행함.

현재 F5 사에 따르면 Fortune 50대 기업 중 48개사에서 사용하고 있는 것으로 조사되며 Shodan 검색 시 F5 BIG-IP 제품이 16,000개 이상 존재하는 것으로 확인됨.


CVE-2022-1388 취약점을 악용하는 데 필요한 관리 인터페이스 접근은 관리상 외부망에 노출되는 경우가 거의 없으나 공격자가 내부 침투 후 이를 악용할 경우 막대한 피해가 우려되며 특히 인지도 있는 보안장비 취약점은 반드시 패치할 필요가 있음.


취약한 제품 버전 정보은 아래 "( 3 ) 취약점 방어" 섹션에 포함됨.




( 2 ) 취약점 분석


CVE-2022-1388 취약점의 근본 원인을 이해하려면 먼저 iControl REST 구성 요소의 인증 모델을 설명해야 함.


F5 사에서 제공하는 iControl API 문서에 따르면 아래와 같음.

"사용자는 자동으로 REST 리소스에 액세스할 수 있지만 모든 사용자는 인증을 위한 토큰을 획득하고 모든 REST 요청에 해당 토큰을 포함해야 함.

BIG-IP 시스템 관리자는 여전히 기본 인증을 사용하여 REST 요청을 할 수 있음.

BIG-IP 시스템 관리자는 기본 인증을 사용하여 iControl REST 요청을 할 수 있음.

관리자 권한이 없는 사용자의 경우 사용자가 REST API 요청을 하는 사용자를 인증하는 데 사용할 수 있는 토큰을 요청해야 함."


위 내용에 따르면 두 가지 인증 모드(토큰 기반 및 HTTP 기본)를 정의함.

여기서 HTTP 기본 인증 모드는 관리자용으로 예약되어 있는 반면 사용자는 토큰 기반 인증 모드로 분류되어 있음.


외부 관점에서 HTTP 통신을 통한 iControl REST 에 대한 연결은 프론트엔드에 위치한 Apache 웹서버 443 포트에서 처리함.

이 서버는 요청을 적절할 내부 서비스로 라우팅하는 역할을 함.

iControl REST 서비스에 도달하려면 요청된 경로가 /mgmt 로 시작해야 Apache 가 8100 포트에서 로컬로 수신 대기하는 내부 Jetty 웹서버로 메시지를 전달하도록 알림.

여기서 Jetty 웹서버는 자바 HTTP 웹 서버이자 자바 서블릿 컨테이너임.


그리고 Jetty 웹서버는 외부에서 발생한 것으로 보이는 요청을 인증하고 성공 시 X-F5-Auth-Token 헤더 형식의 토큰을 제공함.

이 토큰은 모든 후속 통신에 사용해야 함.

(단, 외부 Apache 서버에서 요청을 수신하면 Apache 는 Jetty 가 토큰값을 확인하고 헤더에 따라 전달할 것이라고 가정함)


Jetty 웹서버의 관점에서 요청이 X-F5-Auth-Token 없이 수신되면 관리자로 간주되며 HTTP Basic 헤더의 사용자 이름만 admin 또는 root 인지만 일치하는지 확인함.

이는 신뢰할 수 있는 요청을 보내는 데 사용하기 위해 어플리케이션에 하드코딩된 자격 증명임.


CVE-2022-1388 취약점은 위의 신뢰 관계와 HTTP 프로토콜 정의의 작은 세부 사항과 결합하여 발생함.

HTTP 프로토콜 정의의 작은 세부 사항은 RFC 2616 문서에 정의되어 있으며 14.10 섹션을 참조해야 함.

링크 : 

https://datatracker.ietf.org/doc/html/rfc2616#section-14.10


"HTTP/1.1 프록시는 메시지가 전달되기 전에 연결 헤더 필드를 구문 분석해야 하며 이 필드의 각 연결 토큰에 대해 연결 토큰과 동일한 이름을 가진 메시지에서 헤더 필드를 제거해야 함."


Apache 서버가 내부 Jetty 어플리케이션에 대한 역프록시 역할을 하기 때문에 위 문구 정의는 F5 BIG-IP 제품에 적용됨.

이를 통해 공격자는 Apache 와 Jetty 간에 전달되는 요청에서 특정 헤더를 Connection 헤더에 이름을 지정하여 제거할 수 있음.

예를 들어 다음을 지정하면 프록시된 요청에서 X-F5-Auth-Token 이 제거됨.

Connection: X-F5-Auth-Token


외부 Apache 서버에 요청하는 동안 위의 헤더값을 지정하는 원격 공격자는 Jetty 관점에서 관리자로 취급됨.

이를 통해 인증되지 않은 공격자가 관리자 권한을 획득하여 원하는 시스템 명령을 실행할 수 있음.


또한, Jetty 어플리케이션은 X-Forwarded-For 및 X-Forwarded-Host 헤더를 기반으로 요청 소스를 추적함.

Connection 헤더에 X-Forwarded-Host 를 포함하면 X-Forwarded-Host 헤더도 제거됨.


Connection: X-F5-Auth-Token, X-Forwarded-Host


이렇게 하면 요청이 Apache 에 의해 전달되었다는 사실을 Jetty 가 알 수 없으며 요청이 로컬 관점에서 이루어진 것처럼 처리됨.


아래 스크린샷은 현재 인터넷상에서 공유되고 있는 PoC 화면임.

< PoC 실행 요청 >


< PoC 실행 응답 >




( 3 ) 취약점 방어


1. 최신 버전으로 업그레이드함.


CVE ID

제품명

영향받는 버전

해결 버전

CVE-2022-1388

BIG-IP (All modules)

13.1.0 - 13.1.4

13.1.5

14.1.0 - 14.1.4

14.1.4.6

15.1.0 - 15.1.5

15.1.5.1

16.1.0 - 16.1.2

16.1.2.2

※ 11.x 버전과 12.x 버전은 기술 지원이 종료되었으므로, 13.1.5 이상으로의 업데이트를 권장함.

추가로 아래 링크의 Mitigation 항목 확인하여 조치도 필요함.

링크 : https://support.f5.com/csp/article/K23605346


2. 아래와 같이 보안장비에 Snort 패턴을 등록하여 모니터링 및 대응함.


아래 패턴은 POST 방식으로 BIG-IP 솔루션 관리 인터페이스 접근 시 Authorization 헤더 문자열과 X-F5-Auth-Token 헤더 문자열을 탐지함.

(참고로 Authorization 헤더와 X-F5-Auth-Token 헤더를 동시에 쓸 경우 이는 비정상적인 통신임)


alert tcp any any -> any any (msg:"KOROMOON_CVE-2022-1388_Vulnerability_Detected"; content:"POST /mgmt/"; depth:11; content:"|20|HTTP/"; content:"|0d 0a|Connection|3a| "; content:"|0d 0a|Authorization|3a| Basic "; content:"|0d 0a|X-F5-Auth-Token|3a| ";)




참고 사이트 : 

https://support.f5.com/csp/article/K23605346

https://www.randori.com/blog/vulnerability-analysis-cve-2022-1388/

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1388

https://nvd.nist.gov/vuln/detail/CVE-2022-1388

https://packetstormsecurity.com/files/167007/F5-BIG-IP-Remote-Code-Execution.html

https://www.rapid7.com/ja/blog/post/2022/05/09/active-exploitation-of-f5-big-ip-icontrol-rest-cve-2022-1388/

https://github.com/ZephrFish/F5-CVE-2022-1388-Exploit

https://twitter.com/jas502n/status/1523611433938059265/photo/1

https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=66689


댓글 없음:

댓글 쓰기