
개념 증명: CVE-2026-21858은 인증되지 않은 원격 공격자가 민감한 파일에 액세스할 수 있는 n8n의 취약점입니다.
n8n 워크플로 자동화 플랫폼의 심각한 원격 코드 실행 취약점인 CVE-2026-21858을 탐지하기 위한 보안 연구 도구입니다.
| 필드 | 값 |
|---|---|
| CVE 식별자 | CVE-2026-21858 |
| CVSS v3.1 점수 | 10.0 (심각) |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CWE 분류 | CWE-94: 코드 생성의 부적절한 제어 |
| 공급업체 | n8n GmbH |
| 제품 | n8n 워크플로 자동화 |
| 공개 날짜 | 2026년 1월 |
| 패치 제공 여부 | 예 (v1.121.0 이상) |
n8n 버전 1.65.0부터 1.120.x까지에서 인증되지 않은 원격 공격자가 기본 서버에서 임의 코드를 실행할 수 있는 심각한 취약점이 존재합니다. 이 취약점은 특수하게 제작된 양식 기반 워크플로를 통해 악용되며, 인증되지 않은 파일 시스템 접근과 명령 실행을 가능하게 합니다.
| 버전 범위 | 상태 |
|---|---|
| < 1.65.0 | 영향 없음 |
| 1.65.0 - 1.120.x | 취약 |
| >= 1.121.0 | 패치됨 |
이 취약점은 양식 기반 워크플로 실행 엔진의 불충분한 입력 검증에서 비롯됩니다. n8n은 양식 트리거를 통해 사용자가 제공한 데이터를 처리할 때, 입력 파라미터를 내부 실행 컨텍스트로 전달하기 전에 적절히 검증하지 못합니다.
| 패키지 | 최소 버전 | 용도 |
|---|---|---|
| requests | 2.31.0 | HTTP 요청 처리 |
| urllib3 | 2.0.0 | URL 및 연결 관리 |
| packaging | 23.0 | 버전 비교 로직 |
uv는 빠른 Python 패키지 설치 및 의존성 해석 도구입니다.
# Clone the repository
git clone https://github.com/sh4den/CVE-2026-21858.git
cd CVE-2026-21858
# Install dependencies and create virtual environment
uv sync
# Run the tool
uv run python main.py -u https://target.example.com
# Clone the repository
git clone https://github.com/sh4den/CVE-2026-21858.git
cd CVE-2026-21858
# Create virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# or
.\venv\Scripts\activate # Windows
# Install dependencies
pip install requests>=2.31.0 urllib3>=2.0.0 packaging>=23.0
# Run the tool
python main.py -u https://target.example.com
# Ensure Python 3.12+ is installed
python3 --version
# Install required packages
pip install requests urllib3 packaging
# Download and run
curl -O https://raw.githubusercontent.com/sh4den/CVE-2026-21858/main/main.py
python3 main.py -u https://target.example.com
Usage:
python main.py -u <target_url> Scan single target
python main.py -l <targets_file> Scan multiple targets from file
Arguments:
-u Single target URL
-l Path to file containing target URLs (one per line)
단일 n8n 인스턴스에서 취약점을 테스트합니다:
python main.py -u https://n8n.example.com
python main.py -u http://192.168.1.100:5678
파일에서 여러 대상을 스캔합니다:
python main.py -l targets.txt
대상 파일 형식 (targets.txt):
https://n8n.company-a.com
https://n8n.company-b.com:5678
http://10.0.0.50:5678
n8n.company-c.com
192.168.1.100:5678
참고 사항:
https://로 처리됩니다이 도구는 다음 단계를 통해 패시브(passive) 버전 탐지를 수행합니다:
/signin 엔드포인트에 HTTP GET 요청n8n:config:sentry 메타 태그 탐색[email protected] 패턴과 일치하는 버전 문자열 추출GET /signin HTTP/1.1
Host: target.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language: en-US,en;q=0.5
Connection: close
n8n 업그레이드: 즉시 1.121.0 이상 버전으로 업데이트
# Using npm
npm update -g n8n
# Using Docker
docker pull n8nio/n8n:latest
네트워크 격리: n8n 인스턴스에 대한 접근 제한
워크플로 감사: 기존의 모든 워크플로 검토
# Verify n8n version after update
n8n --version
# Or check via this tool
python main.py -u https://your-n8n-instance.com
# Expected: [SAFE] ... Version: 1.121.0+ (not vulnerable)
다음 패턴에 대해 n8n 및 웹 서버 로그를 검토하십시오:
중요: 사용 전에 읽으십시오
이 도구는 다음 용도로만 제공됩니다:
금지된 용도:
책임: 저자와 기여자는 이 소프트웨어의 오용에 대해 어떠한 책임도 지지 않습니다. 사용자는 모든 관련 법률을 준수하고 보안 테스트를 수행하기 전에 적절한 승인을 받을 책임이 전적으로 있습니다.
법적 통지: 컴퓨터 시스템에 대한 무단 접근은 대부분의 관할권에서 범죄 행위이며, 여기에는 미국의 컴퓨터 사기 및 남용 방지법(CFAA), 영국의 컴퓨터 오용법(Computer Misuse Act) 및 전 세계의 유사한 법률 위반이 포함되며 이에 국한되지 않습니다.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| 1.0.0 | 2026-01-20 | 최초 릴리스 |
이 프로젝트는 승인된 보안 연구 목적으로만 원래 상태 그대로 제공됩니다. 명시적이든 묵시적이든 어떠한 보증도 제공되지 않습니다. 관련 법률에 따라 본인의 책임 하에 사용하십시오.
| 표시기 | 색상 | 설명 |
|---|
[VULNERABLE] | 초록 | 대상이 취약한 n8n 버전(1.65.0 - 1.120.x)을 실행 중 |
[SAFE] | 파랑 | 대상이 패치된 버전(>= 1.121.0 또는 < 1.65.0)을 실행 중 |
[WARNING] | 노랑 | n8n 인스턴스가 감지되었으나 버전 추출 실패 |
[ERROR] | 빨강 | 연결 실패, 시간 초과 또는 n8n이 아닌 대상 |
| 조치 | 우선순위 | 설명 |
|---|
| 패치 관리 | 중요 | n8n 자동 업데이트 절차 수립 |
| 접근 제어 | 높음 | 모든 n8n 엔드포인트에 인증 구현 |
| 네트워크 분리 | 높음 | n8n을 공용 네트워크에서 격리 |
| 모니터링 | 중간 | n8n 활동에 대한 로깅 및 알림 배포 |
| 최소 권한 | 중간 | n8n을 최소한의 권한으로 실행 |
| 백업 | 중간 | 워크플로 구성의 정기 백업 유지 |