1. 개요
- RADIUS 프로토콜에서 설계 결함으로 인한 취약점 발견 [1]
- RADIUS 프로토콜이 개발되고 30년만에 처음으로 발견
- 익스플로잇에 성공할 경우 RADIUS를 기반으로 한 시스템과 네트워크에 자유롭게 출입할 수 있음
> 프로토콜 자체의 취약점이므로 모든 시스템이 영향을 받음
1.1 RADIUS (Remote Authentication Dial In User Service) [2]
- 클라이언트/서버 모델로, AAA 기능 구현을 위한 인증 프로토콜 (인증_Authentication, 권한부여_Authorization, 계정관리_Accounting)
- ISP에서 사용하는 H/W 또는 S/W 등에 의한 원격 접속에 대한 인증용 서버를 지칭
- 사용자, RADIUS 클라이언트(인증 에이전트: VPN, WLAN, AP, NAS 등), RADIUS 서버(인증 서버)로 구성
- 원격 인증 및 접근 관리, 인증 및 권한 부여, 계정 감사 등의 기능을 제공
2. 주요내용
2.1 CVE-2024-3596 [3]
- RADIUS 프로토콜의 설계상 취약점으로 인해 발생하는 취약점
> 익스플로잇에 성공할 경우 로컬 네트워크에 아무 ID를 이용하여 인증 및 접근이 가능
> RADIUS 트래픽은 UDP를 통해 전송되며, MD5 기반의 암호화를 사용하므로 취약
> 개념 증명용 PoC가 개발되었으나 파급력이 너무 클 것으로 예상되어 공개하지 않음
> 공격자는 해시 충돌과 중간자 공격(RADIUS Client와 Server 사이)을 통해 익스플로잇
※ 해시 충돌: 서로 다른 입력 값이 동일한 출력 값을 가지는 상황
2.2 MD5 (Message-Digest algorithm 5) [4]
- 임의의 길이의 값을 입력받아 128Bit 길이의 해시값을 출력하는 알고리즘
- 1991년 설계되었고, 1996년 설계상 결함과 2004년, 2006년 해시 충돌 발견으로 사용이 권장되지 않음 [5]
2.3 공격 과정
- RADIUS Client는 Access-Request 메시지를 전송하고, RADIS Server는 Access-Reject 또는 Access-Accept 메시지로 응답
> Access-Reject 또는 Access-Accept 메시지는 Access-Request, 해시값, 클라이언트-서버간 공유 비밀을 활용해 Response Authenticator(MAC) 생성
> 공격자는 Response Authenticator 생성에 활용되는 해시값을 위조
① ID and Request Authenticator: 공격자가 Access-Request에서 확인한 값
② Code, Length, and Packet Attributes: 서버 응답 값(공격자가 예측)
③ Shared Secret: 클라이언트와 서버가 사전 공유한 비밀 값
- 전체적인 공격 과정은 다음과 같음
① 공격자는 잘못된 계정 정보를 이용해 로그인 요청
② RADIUS Client는 Access-Request 메시지 전송
③ 공격자는 중간에서 메시지를 가로채 MD5 해시 충돌 계산
> 공격자는 예상되는 Access-Reject와 위조하고자 하는 Access-Accept의 MD5 충돌 계산
> MD5(Access-Reject||RejectGibberish) == MD5(Access-Accept||AcceptGibberish)를 만족하는 RejectGibberish, AcceptGibberish
④ 충돌 계산을 마친 공격자는 Proxy-State로 위장하여 Access-Request 전송
> Access-Request에 RejectGibberish를 추가하여
> 요청과 응답을 가로채 위조하기 위해 Proxy-State를 활용하는 것으로 판단됨
⑤ RADIUS Server는 Access-Request를 확인 및 Access-Reject 메시지 응답
> 잘못된 계정 정보를 시용하였기 때문에 요청 거절
> Access-Reject == MD5(Access-Reject||RejectGibberish||SharedSecret)
⑥ 공격자는 응답을 가로채 예상한 패턴(MD5 충돌)과 일치하는지 확인
> 예상한 패턴과 일치하는 경우 Access-Accept||AcceptGibberish로 변경하여 Client에 전송
⑦ MD5 충돌로 RADIUS Client는 엑세스 권한 부여
2.3. 대응방안
① 단기완화: 클라이언트와 서버가 모든 요청과 응답에 대해 항상 Message-Authenticator 속성을 보내고 요구
② 장기완화: RADIUS over TLS(RADSEC)로 업그레이드
3. 참고
[1] https://www.blastradius.fail/#page-top
[2] https://server-engineer.tistory.com/564
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-3596
[4] https://namu.wiki/w/MD5
[5] https://www.kicassl.com/cstmrsuprt/ntc/searchNtcDetail.sg?page=1&ntcSeq=87&mode=&searchType=subject&searchWord=&searchRowCnt=10
[6] https://blog.cloudflare.com/radius-udp-vulnerable-md5-attack
[7] https://www.securityweek.com/blastradius-attack-exposes-critical-flaw-in-30-year-old-radius-protocol/
[8] https://www.boannews.com/media/view.asp?idx=131268&page=1&kind=1
'취약점 > By-Pass' 카테고리의 다른 글
Ivanti Virtual Traffic Manager (vTM) 인증 우회 취약점 (CVE-2024-7593) (0) | 2024.08.19 |
---|---|
Apache OFBiz 인증 우회 취약점 (CVE-2024-38856) (0) | 2024.08.06 |
GitHub Enterprise Server 인증 우회 취약점 (CVE-2024-4985) (0) | 2024.05.28 |
TeamCity Server 인증 우회 취약점 (CVE-2024-27198, CVE-2024-27199) (0) | 2024.03.11 |
ConnectWise ScreenConnect 인증 우회 취약점 (CVE-2024-1709) (0) | 2024.02.22 |