n8n으로 자동화 워크플로우를 만들면 그 안에는 이메일 비밀번호, OpenAI·구글 API 키, 결제 시스템 토큰 같은 민감정보가 자격증명(credential) 형태로 그대로 저장됩니다. 그런데 Censys 조사에 따르면 방화벽 없이 인터넷에 그대로 노출된 n8n 인스턴스가 26,512대에 달합니다. 셀프호스트로 운영하며 클라이언트 자동화를 대행하거나 여러 채널 API 키를 한 인스턴스에 몰아넣은 부업러라면, 이 통계는 남의 이야기가 아닙니다.
- 2026년 1월 발견된 CVE-2026-21858(“Ni8mare”, CVSS 10.0)은 인증 없이도 서버 파일에 접근할 수 있는 취약점으로, v1.65.0~1.121.0 미만 버전이 영향을 받고 v1.121.0에서 패치됐습니다. 버전 확인이 첫 번째 체크리스트입니다.
- 암호화 키 백업, 2FA(Settings > Personal 경로), 리버스 프록시 HTTPS 설정처럼 무료 커뮤니티 에디션에서도 환경변수·메뉴 클릭만으로 바로 적용 가능한 항목이 6가지 있습니다.
- 실행 데이터 리댁션 인스턴스 강제 기능은 v2.26.0(2026-06-09)부터 지원되지만 Enterprise 전용이며, 커뮤니티 에디션은 기본 켜져 있는 EXECUTIONS_DATA_PRUNE 값을 확인하는 것으로 대체할 수 있습니다.
2026년 실제로 있었던 n8n 보안 사고, 남 일이 아니다
2026년 1월 7일, Cyera Research Labs는 n8n의 웹훅 요청 처리 결함을 “Ni8mare”라는 이름으로 공개했습니다. GitHub 보안 권고(GHSA-v4pr-fm98-w9pg)에 따르면 이 취약점은 CVE-2026-21858로 등록됐고 CVSS 점수는 최고 등급인 10.0입니다. 인증 없는 공격자가 특정 폼 기반 워크플로우를 통해 서버의 파일에 접근할 수 있는 결함으로, v1.65.0 이상 v1.121.0 미만 버전이 영향을 받았습니다.
같은 달, 보안 매체들은 n8n 커뮤니티 노드를 가장한 악성 npm 패키지 8개가 배포된 사실도 함께 보도했습니다. 이 패키지들은 신뢰할 수 있는 통합 노드처럼 보이도록 만들어져, 설치한 사용자의 OAuth 자격증명을 탈취하는 방식으로 동작했습니다. 결국 버전을 최신으로 유지하는 것과, 검증되지 않은 커뮤니티 노드를 함부로 설치하지 않는 것 자체가 보안 설정의 출발점이라는 뜻입니다.
n8n 공식 체크리스트 기반 7단계
n8n 공식 보안 가이드는 보안 감사, SSL·SSO, 2단계 인증, 암호화 키 로테이션, 공개 API 차단, 위험 노드 차단, SSRF 방지, 가입 제한을 하나의 체크리스트로 안내합니다. 아래는 이 항목들을 실제 명령어·메뉴 경로와 함께 정리한 것입니다.

1~2단계: 자격증명을 지키는 기본 설정
1. 암호화 키(N8N_ENCRYPTION_KEY) 백업. n8n은 모든 자격증명을 데이터베이스에 저장하기 전에 이 키로 암호화합니다. 별도로 지정하지 않으면 최초 실행 시 무작위 문자열을 자동 생성해 ~/.n8n 폴더에 저장합니다. 컨테이너를 재배포하거나 서버를 옮기면서 이 폴더를 백업하지 않으면 기존에 등록해둔 API 키·비밀번호를 전부 다시 입력해야 합니다.
아래처럼 키를 직접 지정하고 그 값을 별도 위치에 백업해두는 것이 안전합니다.
export N8N_ENCRYPTION_KEY=랜덤한32자이상문자열
워커를 여러 대 두는 큐 모드(Queue mode)로 운영 중이라면 모든 워커에 반드시 같은 키를 지정해야 자격증명 복호화가 정상 동작합니다.
2. 회원가입 제한. 첫 관리자 계정을 만든 뒤에는 Settings > Users 메뉴에서 추가 가입을 막아야 합니다. 이메일 인증을 거친 사용자만 가입하도록 제한하는 옵션도 같은 메뉴에 있으니 함께 켜두면, 외부에 노출된 n8n 인스턴스에 임의 계정이 만들어지는 사고를 막을 수 있습니다.
3~4단계: 접근 경로 자체를 좁히는 설정
3. 2단계 인증(2FA) 활성화. 관리자 계정이 탈취되면 인스턴스 안의 모든 자격증명이 함께 노출됩니다. n8n 화면 우측 상단에서 Settings > Personal > Enable 2FA로 들어가면 QR 코드가 뜹니다.
이 QR 코드를 Google Authenticator 같은 앱으로 스캔하고, 앱에 뜨는 6자리 코드를 입력해 등록을 완료합니다. 이때 함께 발급되는 복구 코드는 비밀번호 관리자 등 별도 위치에 저장해야 합니다. 복구 코드 없이 인증 앱 기기를 분실하면 계정에서 영구히 잠길 수 있습니다.
4. HTTPS 강제 + 웹훅 URL 보호. 5678 포트를 그대로 인터넷에 노출하지 말고, Nginx 같은 리버스 프록시 뒤에 두고 80/443 포트로만 접근하게 하는 것이 권장 구성입니다. n8n 쪽에는 아래 환경변수를 설정합니다.
N8N_HOST=내도메인, N8N_PROTOCOL=https, N8N_PROXY_HOPS=1, WEBHOOK_URL=https://내도메인/, N8N_SECURE_COOKIE=true
Nginx 설정에는 proxy_pass http://localhost:5678;과 함께 웹소켓용 Upgrade·Connection 헤더를 반드시 유지해야 에디터 화면이 정상 동작합니다. N8N_PROXY_HOPS=1을 빼먹으면 앞의 두 환경변수를 설정해도 n8n이 무시하니 함께 넣는 것을 잊지 않아야 합니다.
5~6단계: 불필요한 노출면을 줄이는 설정
5. 공개 API 비활성화. REST API를 외부 연동에 쓰지 않는다면 N8N_PUBLIC_API_DISABLED=true로 아예 꺼두는 것이 공격 표면을 줄이는 가장 간단한 방법입니다.
6. 위험 노드 차단 + 텔레메트리 차단. 여러 사람이 같이 쓰는 인스턴스라면 NODES_EXCLUDE=["n8n-nodes-base.executeCommand"]처럼 서버 명령을 직접 실행할 수 있는 노드를 배열로 지정해 사용자가 검색·사용하지 못하게 막을 수 있습니다. n8n은 기본적으로 N8N_BLOCK_ENV_ACCESS_IN_NODE 값을 true로 두어 Code 노드에서 서버 환경변수($env)에 접근하지 못하게 막아두고 있으니, 이 값을 별도로 false로 바꿔둔 적이 없는지 확인하면 됩니다. 익명 사용 데이터를 외부로 보내고 싶지 않다면 N8N_DIAGNOSTICS_ENABLED=false도 함께 설정합니다.
여기까지가 n8n 공식 체크리스트 범위입니다. MassiveGRID 등 호스팅 업체의 실무 가이드는 여기서 한 단계 더 나아가, 5678 포트 자체를 방화벽으로 막고 웹훅 경로에 분당 요청 수 제한(예: IP당 분당 60건)을 걸며 데이터베이스·Redis 컨테이너는 외부 포트를 노출하지 않는 것까지 함께 권장합니다. 공식 체크리스트로는 부족하다고 느껴진다면 이 세 가지를 다음 단계로 검토해볼 만합니다.

7단계: [최신] 실행 데이터 리댁션 GA, 누가 쓸 수 있나
n8n 공식 문서에 따르면 실행 데이터 리댁션(Execution Data Redaction)은 워크플로우 실행 결과의 실제 데이터 페이로드를 숨기는 기능입니다. 상태·시간·노드 이름 같은 메타데이터는 그대로 보여줍니다.
2026년 4월 7일 출시된 v2.16.0에서 워크플로우별로 켜고 끌 수 있는 형태로 먼저 도입됐습니다. 6월 9일 v2.26.0에서는 인스턴스·프로젝트 관리자가 전체 워크플로우에 리댁션을 강제 적용하는 기능이 추가됐습니다.
리댁션된 데이터를 굳이 봐야 하는 상황도 있습니다. 이때는 workflow:enableRedaction/workflow:disableRedaction 권한을 가진 사용자가 개별 공개 요청을 할 수 있고, 이 요청은 감사 로그로 기록됩니다.
다만 이 기능은 Enterprise 셀프호스트·클라우드 플랜에서만 제공됩니다. 스타터·프로 플랜이나 무료 커뮤니티 에디션이라면 대신 실행 기록 자체를 오래 남기지 않는 방식으로 접근하면 됩니다. 마침 EXECUTIONS_DATA_PRUNE은 커뮤니티 에디션을 포함해 기본값이 이미 true라, 특별히 끄지 않았다면 14일(EXECUTIONS_DATA_MAX_AGE 기본 336시간)이 지난 실행 기록은 자동 삭제되고 있을 가능성이 높습니다. 이 값이 꺼져 있지 않은지 확인하고, 민감한 워크플로우라면 EXECUTIONS_DATA_MAX_AGE를 168시간(7일) 수준으로 더 짧게 조정하는 정도면 충분합니다.
부업·소규모 운영자를 위한 실전 활용법
n8n으로 클라이언트의 업무 자동화를 대행하거나 템플릿을 판매하는 부업을 한다면, 위 7가지 체크리스트와 CVE-2026-21858 패치 여부(버전 1.121.0 이상)를 납품 문서 한 장으로 정리해 함께 전달하는 것이 신뢰를 얻는 데 도움이 됩니다. 클라이언트가 직접 확인하기 어려운 부분을 먼저 짚어주는 것만으로 차별화가 됩니다.
이미 n8n 설치 방법 총정리로 셀프호스트 환경을 구축했다면, 설치 직후 이 체크리스트부터 순서대로 적용해두는 것을 권장합니다. 워크플로우를 커뮤니티 템플릿에서 가져와 쓰는 경우에도, 앞서 언급한 악성 npm 패키지 사례처럼 출처가 불분명한 커뮤니티 노드가 섞여 있지 않은지 이 기회에 점검해보는 것이 안전합니다. 클라우드 요금제별로 어떤 보안 기능이 포함되는지는 n8n 요금제 비교 글에서 확인할 수 있습니다.
자주 묻는 질문
CVE-2026-21858 패치가 적용됐는지 어떻게 확인하나요?
n8n 관리자 화면 우측 하단이나 package.json에서 현재 버전을 확인해 1.121.0 이상인지 보면 됩니다. 그보다 낮은 버전을 쓰고 있다면 인증 없이 서버 파일이 노출될 수 있는 상태이므로 우선순위로 업데이트해야 합니다.
암호화 키를 백업하지 않고 서버를 재배포하면 어떻게 되나요?
기존에 저장해둔 자격증명(API 키, 비밀번호 등)을 n8n이 더 이상 복호화하지 못해 “could not be decrypted” 상태가 됩니다. 결국 모든 자격증명을 처음부터 다시 입력해야 하므로, 키를 직접 지정하고 별도 위치에 백업해두는 것이 안전합니다.
무료 커뮤니티 에디션에서도 실행 데이터를 안전하게 관리할 수 있나요?
인스턴스 강제 리댁션 자체는 Enterprise 전용이지만, 커뮤니티 에디션도 기본적으로 EXECUTIONS_DATA_PRUNE이 켜져 있어 오래된 실행 기록이 자동 삭제됩니다. 이 값이 꺼져 있지 않은지만 확인하면 됩니다.
2FA와 회원가입 제한 중 뭐부터 켜야 하나요?
둘 다 켜는 것이 중요하지만, 굳이 순서를 매긴다면 회원가입 제한을 먼저 걸어 인스턴스에 임의 계정이 생기는 것부터 막습니다. 이후 남은 계정, 특히 관리자 계정에 2FA를 적용하는 순서가 안전합니다.
핵심 요약
- 2026년 1월 CVE-2026-21858(CVSS 10.0) 웹훅 취약점과 악성 커뮤니티 노드를 통한 OAuth 탈취 사례가 실제로 있었던 만큼, 버전 업데이트(1.121.0 이상)와 출처 확인이 보안 설정의 출발점입니다.
- N8N_ENCRYPTION_KEY 백업, 회원가입 제한, 2FA(Settings>Personal), 리버스 프록시 HTTPS, 공개 API·위험 노드·텔레메트리 차단까지 6가지는 무료 커뮤니티 에디션에서도 바로 적용할 수 있습니다.
- 실행 데이터 리댁션 인스턴스 강제는 v2.26.0(2026-06-09)부터 Enterprise 전용으로 제공되며, 그 외 플랜은 기본 켜져 있는 EXECUTIONS_DATA_PRUNE 설정을 확인하는 것으로 대체할 수 있습니다.
AI 리서치와 검수 과정을 거쳐 콘텐츠를 제작합니다. 오류나 개선할 점을 발견하시면 연락처로 알려주세요.