[방어] 분석 — CVE-2026-27577
CVE‑2026‑27577 allows authenticated n8n users to achieve remote code execution via crafted workflow expressions, and the highest‑priority immediate mitigation is to lock down workflow creation/editing permissions to trusted administrators only.
📋 요약
- 심각도 critical · CVSS 9.9 · EPSS 0.08586 · 악용난이도 moderate
🔍 공격 기법
- 인증된 사용자가 워크플로우 생성·수정 API(
POST /rest/workflows) 혹은 웹 UI에서 파라미터에 악의적인 JavaScript 표현식을 삽입한다. - n8n 내부 expression evaluator가 해당 문자열을
eval/child_process.exec등으로 처리하면서 호스트 OS에서 명령을 실행한다. - 워크플로우 실행 시점에 임의 셸 커맨드가 수행되어 시스템 전체 권한 탈취·데이터 유출·서비스 파괴가 가능하다.
악용 가능성: CVSS 벡터 AV:N/AC:L/PR:L/UI:N는 원격 네트워크 접근이 가능하고 공격 난이도가 낮으며 인증된 사용자가 필요하지만 별도 사용자 상
💥 영향 분석
- Confidentiality: 파일 읽기·DB 접근 등을 통해 민감 데이터 열람.
- Integrity: 시스템 설정 변경, 악성 바이너리 설치 등 무결성 훼손.
- Availability:
rm -rf /같은 파괴적 명령 실행 시 서비스 중단 및 전체 다운.
🔗 관련 취약점·체이닝
- 이전에 패치된 CVE‑2025‑68613도 n8n expression 평가 단계에서 유사한 인젝션을 다루었으며, 동일 코드 경로가 재사용될 가능성이 있다.
- 커스텀 Node가
child_process모듈을 허용하는 경우, 해당 Node와 결합해 권한 상승·수평 이동이 이루어질 수 있다(추정).
🔎 탐지
로그 지표
- n8n 로그 파일(
n8n.log, stdout)에서Executed command:혹은child_process.exec호출 문자열이 기록됨. - Express 요청 로그에
/rest/workflows/*/execute엔드포인트가 비정상적으로 높은 빈도로 등장하고,body.expression필드에 특수 문자(;,&&,$(,`) 가 포함될 경우.
SIEM 규칙 예시
Splunk
text
1index=n8n sourcetype=n8n:log ("child_process.exec" OR "Executed command") 2| stats count by user, workflowId, _time 3| where count > 3Elastic/Kibana (Lucene)
text
1{ 2 "bool": { 3 "must": [ 4 { "wildcard": { "message": "*child_process.exec*" } }, 5 { "range": { "@timestamp": { "gte": "now-1h" } } } 6 ], 7 "filter": [ 8 { "term": { "user.role": "admin" } } // 비정상적인 관리자 호출 집중 9 ]10 }11}정규식 탐지 (로그 파싱)
text
1expression\s*[:=]\s*["'][^"']*(?:process\.exit|require\(|child_process\.exec)[^"']*["']오탐 튜닝
- 정상적인 커스텀 Node가
child_process.exec를 사용한다면 해당 Node ID 혹은 이미지 해시를 화이트리스트에 추가하고, 규칙에서user.role != "admin"또는nodeId NOT IN (whitelist)로 필터링. - 일반 문자열 연산(
split,replace)이 포함된 경우는 정규식에서\b(split|replace)\b를 제외 조건으로 활용.
🛡️ 완화 방안
- OS‑level 제한
- n8n 프로세스를 전용 비특권 OS 유저(
n8n_user)로 실행하고,chmod 750 /usr/local/bin/node등 실행 파일 접근을 제한한다. - 컨테이너 환경이라면
--cap-drop=ALL및readOnlyRootFilesystem=true옵션 적용.
- n8n 프로세스를 전용 비특권 OS 유저(
- 네트워크 격리
- n8n 인스턴스가 외부 인터넷에 직접 노출되지 않도록 방화벽(egress 제한) 설정, 특히
127.0.0.1:22등 관리 포트만 허용.
- n8n 인스턴스가 외부 인터넷에 직접 노출되지 않도록 방화벽(egress 제한) 설정, 특히
- 감사 로깅 강화
- n8n 환경 변수
N8N_LOG_LEVEL=debug로 전환하고, expression 평가 직전/후에 커스텀 로그(logger.info('Expression eval start', {...}))를 삽입한다(코드 수정 가능 시).
- n8n 환경 변수
- 난이도: ★★☆ (시스템/컨테이너 재배포 필요)
- 운영 영향: 서비스 재시작 필요, 권한 제한으로 기존 커스텀 Node가 정상 동작하지 않을 수 있음.
- 검증:
ps -u n8n_user로 프로세스 확인, 방화벽 규칙iptables -L검토, 로그에Expression eval start가 기록되는지 확인.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=9.9 · non-KEV · EPSS=0.08586 · exploit=moderate · in_scope=None