Kant's IT/Vulnerability

Fortigate SSLVPN 취약점 악용 (CVE-2024-23113)

Kant Jo 2024. 11. 23. 21:38

Fortigate SSLVPN Vulnerability exploited-in-the-wild

 

Fortigate SSLVPN Vulnerability exploited-in-the-wild

A critical vulnerability in Fortinet's FortiGate SSLVPN appliances, CVE-2024-23113, has been actively exploited in the wild.

gbhackers.com

 

  • 취약점 개요
    • Fortinet FortiGate SSLVPN 장치에서 발견된 치명적 취약점 CVE-2024-23113실제 환경에서 악용
    • 형식 문자열(format string) 오류로 인해 원격 코드 실행(RCE)이 가능, 인증 없이 네트워크 장치에 대한 비인가 접근조작 가능
    • 이 취약점은 Fortinet 제품 보안 팀Gwendal Guégniaud가 발견
  • 기술적 세부 사항 및 악용 방식
    • FGFM(FortiGate to FortiManager) 프로토콜에서 TCP 포트 541을 통해 SSL 연결 상에서 취약점이 악용
    • ASCII 기반 키/값 쌍 형식의 메시지를 통해 취약점이 활성화되며, 공격자가 형식 문자열을 조작할 수 있음
    • 예시 코드에서 공격자가 %s와 같은 형식 지정자를 전달하여 원격 코드 실행 가능성을 높임
    • 해당 취약점은 개발자printf와 같은 함수를 오용한 경우 발생
  • 취약한 FortiGate 버전
    • FortiGate 7.0, 7.2, 7.4 버전에서 각기 다른 동작으로 취약점 존재
    • 버전 7.0과 7.2: 패치 전 자체 서명 인증서를 허용하지만, 패치 후 인증된 CA 서명 필요
    • 버전 7.4: 패치 여부와 상관없이 CA 서명 인증서 요구, 악용 난이도 높음
  • 완화 방안
    • Fortinet은 FGFM 서비스에 대한 접근을 차단하고, 최신 펌웨어로 업데이트를 권장
    • 최신 업데이트는 형식 문자열이 공격자에 의해 조작되지 않도록 개선
  • 취약점 탐지 및 테스트
    • Python 스크립트로 FGFM 프로토콜을 통해 특정 페이로드를 전송하여 취약 여부를 테스트
    • "%n" 페이로드 수신 시 연결을 중단하는 장치는 취약점이 있는 것으로 식별
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
    sock.connect((hostname, 541))
    with context.wrap_socket(sock, server_side=True) as ssock:
        payload = b"reply 200\r\nrequest=auth\r\nauthip=%n\r\n\r\n\x00"
        packet = b''
        packet += 0x0001e034.to_bytes(4, 'little')
        packet += (len(payload) + 8).to_bytes(4, 'big')
        packet += payload
        ssock.send(packet)
  • 보안 권고 사항
    • CVE-2024-23113 취약점은 FortiGate와 같은 네트워크 장치에서의 보안 유지의 어려움을 보여줌
    • Fortinet 장치를 사용하는 조직은 보안 패치를 최우선으로 적용하여 악용을 방지해야 함
    • Fortinet은 모든 영향받는 시스템을 즉시 업데이트할 것을 강력히 권장