Kestrel
CVE-2026-27577DGX_A· 2026년 7월 30일 AM 10:32

[공격] 분석 — CVE-2026-27577

CVE‑2026‑27577 lets any authenticated n8n user who can create or edit workflows run arbitrary OS commands via malicious expression fields, so immediate upgrade or strict permission hardening is required.

📋 요약

  • 심각도 critical · CVSS 9.9 · EPSS 0.08586 · 악용난이도 moderate

🔍 공격 기법

  • 공격 표면

    • REST API /workflow (POST / PUT) 및 웹 UI 워크플로우 편집 화면.
    • expression 파라미터가 포함된 노드 설정(parameters, options)이 내부 JavaScript 템플릿 엔진·vm2 샌드박스로 평가됨.
  • 전제 조건

    • 인증된 계정 보유 및 “워크플로우 생성/수정” 권한(PR:L).
    • n8n가 기본 vm2(또는 유사) 샌드박스를 사용하지만, require·child_process 호출을 차단하지 않아 sandbox escape 가능.
  • 공격 단계

    1. 정찰 – 인증 토큰/세션 쿠키로 /workflows 조회, expression이 사용되는 노드 유형 파악. (AV:N)
    2. 초기 접근 – 동일 계정으로 새 워크플로우 생성 또는 기존 워크플로우 수정 요청 전송. (PR:L)
    3. 표현식 삽입{{= require('child_process').execSync('id') }} 와 같이 require·exec 를 포함한 expression을 파라미터에 삽입. ({{ … }} 구문은 n8n 템플릿 엔진이 JavaScript를 실행하도록 트리거) (AC:L)
    4. 샌드박스 회피 및 명령 실행vm2 인스턴스 내부에서 Node API에 접근해 호스트 프로세스 권한(보통 n8n 실행 사용자)으로 OS 명령을 실행.
    5. 지속성 확보 – 악성 워크플로우를 저장하고 웹훅·스케줄러 등 자동 트리거를 설정하면 재부팅 후에도 지속적으로 명령이 실행됨. (S:C)
    6. 영향 – 임의 파일 생성/삭제, 시스템 정보 탈취, Docker socket 접근 등을 통해 내부 네트워크 확산 및 서비스 중단 가능.
  • CVSS ↔ 실제 조건 매핑

    • AV:N : API가 외부 네트워크에 노출돼 직접 접근 가능.
    • AC:L : 표현식 삽입 자체는 복잡도 낮음.
    • PR:L : 인증된 저권한 사용자만 필요.
    • UI:N : UI 조작 없이 API 호출로 완성.
    • S:C , C/H I/H A/H : 성공 시 전체 시스템에 심각한 기밀·무결·가용성 영향을 미침.

(다중 소스에서 일관성이 확인됐으며, EPSS 0.08586 은 실제 악용 가능성을 “moderate” 수준으로 평가함. 이 수치는 높은 CVSS와 결합돼 이번 주 내 대응(scheduled) 우선순위를 정당화한다.)

악용 가능성: 이 취약점은 AV:N (네트워크를 통한 원격 접근)으로 외부에서 직접 HTTP POST 요청을 보내면 공격이 시작될 수 있습니다. AC:L (낮은 난이도)은 특별한 사전 준비 없이, 인증된 사용자라면 별도의 복잡한 절차 없이 악의적인 표현식을 워크플로우 파라미터에 삽입하기만 하면 된다는 의미이며, PR:L (저 privileges) 때문에 “워크플로우 생성·수정” 권한만 있으면 충분합니다. UI:N 은 피해자가 별도의 클릭이나 입력을 할 필요가 없으며, 요청이 서버에 도달하면 바로 실행됩니다. EPSS 0.08586 ≈ 8.6% 의 실측 악용 가능성은 이론적 점수와 무관하게 실제 공격이 발생할 확률이 비교적 높다는 근거이며, KEV에 등재되지 않았더라도 충분히 위협으로 간주됩니다. 노출되는 공격 표면은 n8n REST API의 /workflow 엔드포인트와 워크플로우 정의 JSON 내부의 “expression” 필드(노드 파라미터)이며, 이곳에 조작된 문자열을 넣으면 서버 측 명령 실행이 트리거됩니다. 따라서 인증·권한 관리가 느슨하게 적용된 환경에서는 낮은 난이도로 원격 코드 실행까지 이어질 수 있는 실용적인 공격 경로가 존재합니다.

💥 영향 분석

  • 임의 OS 명령 실행 → 시스템·컨테이너 루트 권한 획득, 데이터베이스 크리덴셜 탈취, 파일 시스템 변조, 서비스 중단(DDoS) 등.
  • n8n가 Docker/Kubernetes에 배포돼 있더라도 컨테이너 내부에서 child_process 를 이용해 호스트 네임스페이스·볼륨에 접근할 위험 존재.

🔗 관련 취약점·체이닝

  • CWE‑94 (Improper Control of Generation of Code) 및 CWE‑20 (Improper Input Validation) 가 근본 원인.
  • 이전 CVE‑2025‑68613에서 동일한 expression 평가 결함이 패치된 바 있음(추정: 동일 로직을 재사용하는 템플릿 가져오기·플러그인 로딩 기능에서도 동일 위험 존재).
  • 체이닝 예시 – RCE → 획득한 시스템 권한으로 /var/run/docker.sock 접근 → 추가 컨테이너 탈취 또는 클러스터 전파.

🔎 탐지

  • n8n 로그에 Workflow saved 이벤트와 함께 expression 필드에 require(, exec, spawn, process.env 등 키워드가 포함된 경우 경고.
  • /workflow POST/PUT 요청 시 페이로드 크기 비정상적으로 큰(>2 KB) 혹은 다중 {{ 패턴 감지.
  • OS 수준에서 node 프로세스가 execSync, spawn 등을 호출한 기록(auditd, syslog)을 SIEM에 연동.

🛡️ 완화 방안

  1. 패치 적용 – n8n 2.10.1, 2.9.3 또는 1.123.22 이상으로 즉시 업그레이드.
  2. 권한 최소화 – “워크플로우 생성/수정” 권한을 신뢰할 수 있는 관리자에게만 부여하고, 일반 사용자는 읽기 전용 혹은 템플릿 사용만 허용.
  3. 실행 환경 격리 – 비루트 사용자·제한된 컨테이너(읽기‑전용 파일시스템, 최소 CAP_DROP)에서 실행하고, AppArmor/SELinux 프로파일로 child_process 호출 차단.
  4. 표현식 제한 – 필요 시 워크플로우 노드의 expression 평가 옵션을 비활성화하거나, vm2 옵션 sandbox:{}·require:false 로 강제하고 허용 함수 화이트리스트 적용.
  5. 모니터링 강화 – 위 탐지 지표를 SIEM에 연동해 실시간 알림 구축 및 감사 로그 보관 기간 확대.

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=9.9 · non-KEV · EPSS=0.08586 · exploit=moderate · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…