[방어] 분석 — CVE-2025-68613
Critical RCE in n8n’s expression engine can be contained immediately by disabling external expression input (e.g., block “{{” in webhook/execution payloads) while preparing a full upgrade to a patched version.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.97875 · 악용난이도 easy · KEV
🔍 공격 기법
인증된 사용자가 워크플로우 편집 화면이나 /webhook, /api/v1/executions API에 {{ … }} 형태의 악성 expression을 삽입하면, n8n은 이를 별도 샌드박스 없이 Node.js 런타임에서 eval‑유사 방식으로 실행합니다. 이때 require('child_process'), process.exit() 등 시스템 호출 함수가 포함될 경우, n8n 프로세스 권한으로 임의 코드를 실행해 전체 서버를 장악할 수 있습니다.
악용 가능성: 이 취약점은 네트워크를 통해 직접 접근 가능(AV:N)하고 공격 복잡도가 낮으며(AC:L), 인증된 사용자 권한만 있으면 충분히 이용할 수 있어(PR:L) 초기 진입 장벽이 거의 없습니다. 또한 UI 요구가 없으므로(UI:N) 사용자의 별도 행동 없이 자동으로 악용될 수 있습니다. EPSS 0.97875라는 높은 실측값
💥 영향 분석
- n8n 프로세스와 동일한 OS 권한을 획득 → 파일·디렉터리 조작, 서비스 중단, 루트 권한 상승 가능
- 워크플로우 변조·삭제 및 민감 데이터 탈취
- 내부망에 배포된 API 키·서비스 계정 유출 후 추가적인 lateral movement
🔗 관련 취약점·체이닝
Expression‑injection 유형은 Node‑RED 등 다른 자동화 엔진에서도 보고된 바 있으며, 성공적인 RCE 이후 획득한 서비스 계정을 이용해 내부 시스템에 대한 추가 공격으로 연계될 수 있습니다.
🔎 탐지
- 로그 지표: n8n 기본 로그(
~/.n8n/logs/*.log)에Expression evaluated메시지가 기록되며, 필드expression,userId,workflowId가 포함됩니다. - SIEM 규칙 예시 ① (Elastic/Kibana DSL)
1event.dataset:"n8n.workflow" 2AND json.message:*{{*}}* 3AND ( 4 json.message:*eval* 5 OR json.message:*require('child_process')* 6 OR json.message:*process.* 7)- SIEM 규칙 예시 ② (정규식 기반)
- 패턴:
\{\{.*(eval|require\s*\(\s*['"]child_process['"]\s*\)|process\.)[^}]*\}\}→message혹은log필드에 적용
- 패턴:
- 오탐 튜닝: 정상적인 수학·날짜 함수(
{{ $json["value"] * 2 }})는 위 패턴에 매치되지 않도록NOT message:*Math.*와 같은 부정 조건을 추가하고, 허용 함수 리스트($json,$env)를 별도 변수로 정의한 뒤 규칙에allowedFunctions를 제외하도록 설정합니다.
🛡️ 완화 방안
-
워크플로우 편집/생성 권한 제한
n8n관리 콘솔 또는 RBAC 설정에서 workflow edit 권한을 신뢰된 내부 사용자에게만 부여합니다.- 난이도 ★★☆☆☆, 영향: 일부 비즈니스 사용자가 워크플로우를 직접 수정하지 못하게 되어 운영 효율 저하 가능.
- 검증: 권한 변경 후
audit.log에 “workflow edited” 이벤트가 제한된 사용자만 기록되는지 확인합니다.
-
Expression Safe‑list 적용
- 환경 변수
N8N_EXPRESSION_SAFE_LIST(또는--expression-sandbox)에 허용 함수 집합($json,$env,Math.*)을 지정하고, 나머지는 실행 차단하도록 n8n을 재시작합니다. - 난이도 ★★★☆☆, 영향: 기존 워크플로우 중 일부가 차단될 수 있어 사전 검증 필요.
- 검증: 샘플 워크플로우를 실행해 허용된 함수만 정상 동작하고, 차단된 함수 호출 시 오류 로그(
Expression evaluation failed)가 남는지 확인합니다.
- 환경 변수
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.97875 · exploit=easy · in_scope=None