n8n 보안: 취약점과 방어 전략
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인프라/DevOps/보안
대상자
- n8n 워크플로우 개발자, DevOps 엔지니어, 보안 전문가
- 난이도: 중급 (보안 취약점 분석 및 방어 전략 이해 필요)
핵심 요약
- RCE 취약점 방어:
Execute Command
/Function/Code
노드 사용 금지,eval()
실행 차단, 프로세스 격리 적용 - SQL/XSS 주입 방지: 파라미터화 쿼리 사용 (
Postgres
노드), HTML 특수 문자 이스케이프, CSP 헤더 적용 - 인증 및 권한 강화: 사용자 ID/그룹 허용 목록 제한, RBAC 및 2FA 도입, 웹훅 시
Webhook Token
사용
섹션별 세부 요약
1. 주요 공격 유형 및 예방 조치
- RCE 공격:
Execute Command
노드를 통한 서버 명령 실행,eval()
사용 금지 (CVE-2023-27562 예시) - SQL 주입:
MySQL
노드에서 파라미터화 쿼리 사용 미지원 → 수동 이스케이프 필요 - XSS 주입: 웹 인터페이스에서 HTML/Markdown 활성화 시 특수 문자 이스케이프 필수
- 필터 우회: 유니코드 공백 문자, 호모글리프 사용으로 명령어 숨기기,
user_id
검증 강화
2. 공격 시뮬레이션 및 테스트 방법
- Telegram Bot 공격:
deep-link
(t.me/?start=PAYLOAD
) 통해 Markdown/HTML 해석 오류 유발 - Webhook 공격: 가짜 Telegram JSON 요청 (
update_id
,message
필드 포함)으로 메시지 위장 - 특수 문자 테스트: Base64, URL 인코딩, 유니코드 변환으로 입력 검증 회피 시도
- 비즈니스 로직 테스트: SQL 쿼리 (
; DROP TABLE
) 또는 JS 코드 (payload
) 주입 시도
3. 보안 테스트 및 로깅
- 자동화 테스트: Postman/cURL로 웹훅 요청 시뮬레이션, Telegram Bot API 기반 자동 테스트 도구 활용
- 로그 분석: ELK/Kibana로 이상 패턴 감지 (반복 실패 명령, 비정상 요청)
- Fuzz 테스트: BotFuzzer 프레임워크로 무작위 문자열 자동 생성,
Function/Code
노드의eval()
사용 검증
4. 방어 전략 및 구현
- 메시지 필터링: HTML 태그 제거, SQL 쿼리 파라미터화, JSON 스키마 검증
- 워크플로우 설계:
Execute Command
노드 차단,HTTP Request
노드 사용 시 URL 도메인 허용 목록 적용 - 권한 제어: RBAC 도입, 웹훅
Webhook Token
사용, n8n 업데이트 (v0.216.1 이상)
결론
- 핵심 팁: n8n 업데이트 (CVE 패치 적용),
eval()
사용 금지, 웹훅 보안 토큰 도입, 로그 분석으로 이상 트래픽 감지 - 예시:
CVE-2023-27562
패치 적용 시/rest/credential-translation
엔드포인트 경로 탐색 방지 - 실무 적용: BotFuzzer로 자동화 테스트 수행,
Function/Code
노드의eval()
사용 검토 필수