최근 회사에서 보안취약점 조치 메일을 자주 받고 있다.
처음에는 담당하는 서비스를 하나씩 열어보고
해당 라이브러리를 사용하고 있는지 확인하고, 비대상인지 대상인지 정리했다.
그런데 막상 반복되다 보니 생각보다 귀찮았다.
메일은 계속 오고, 대부분은 비대상이지만.. 그렇다고 확인하지 않을 수도 없다.
심지어 최근 기준으로는 총 39건 중 실제 조치가 필요했던 건 단 1건이었다.
문제는 나머지 38건도 결국 사람이 읽고 판단해야 한다는 점이다.
그래서 이번에는 n8n과 Claude Code를 활용해서 보안취약점 메일 분석 프로세스를 자동화해본 내용을 정리해보려고 한다.
보안취약점 권고 메일이란?
보안취약점 권고 메일은 특정 프레임워크나 라이브러리에서 취약점이 발견되었을 때 발송되는 안내 메일이다.
예를 들면 아래와 같은 내용이다.
문장만 보면 단순해 보이지만, 실제 업무에서는 바로 끝나지 않는다.
- 우리 서비스에서 해당 라이브러리를 쓰고 있는지 확인해야 한다.
- 사용 중이라면 버전이 영향 범위에 포함되는지 확인해야 한다.
- 대상이라면 조치 계획을 정리해야 한다.
- 비대상이라도 왜 비대상인지 기록해야 한다.
즉, 메일을 읽는 것보다 우리 시스템과 관련이 있는지 판단하는 과정이 더 오래 걸린다.
기존 프로세스의 문제점
기존 처리 프로세스는 아래와 같았다.
보안취약점 메일 수신
↓
메일 내용 확인
↓
대상 프로젝트 확인
↓
pom.xml / build.gradle / package.json 검색
↓
대상 여부 판단
↓
업무시스템 등록
간단해 보이지만, 실제로는 생각보다 피로도가 높다.
1️⃣ 검토 대상이 많다.
보안취약점 메일은 보통 전사 또는 여러 조직에 함께 발송된다.
그래서 실제로 우리 팀이 조치해야 하는 건 많지 않더라도, 일단 메일은 계속 쌓인다.
- 비대상 건도 모두 확인해야 한다.
- 대상 여부를 판단한 뒤 기록해야 한다.
- 매번 동일한 방식으로 레포를 확인해야 한다.
최근 기준으로는 39건 중 실제 조치가 필요했던 건 1건뿐이었다.
하지만 나머지 38건도 그냥 무시할 수는 없었다.
2️⃣ 내용 파악이 어렵다
보안취약점 메일은 친절한 듯하면서도, 막상 읽어보면 바로 판단하기 어렵다.
라이브러리명, CVE 번호, 영향 버전, 조치 버전이 섞여 있고, 해당 라이브러리를 만든 사람이 아니라면 바로 이해하기 어렵다.
처음에는 완벽하게 조치하기 위해 문제되는 라이브러리 설명도 읽어보고..
그런 열정이 있었지만 처리 건수가 많아지니 부담스럽다.
3️⃣ 반복 작업
생각해보면 이 업무는 매번 비슷한 흐름을 가진다.
- 메일을 읽고
- 라이브러리 버전 확인하고
- 대상 프로젝트에서 조사하고
- 결과를 정리한다.
즉, 이러한 분석 과정은 충분히 자동화할 수 있어 보였다.
프로세스 자동화를 해보자.
그런데 이제 n8n과 Claude Code를 곁들인
n8n이란?

n8n은 다양한 시스템을 연결하여 반복 업무를 자동화할 수 있는 Workflow Automation 도구이다.
메일, Slack, GitHub, Jira 등 다양한 서비스와 연동할 수 있으며,
트리거 발생 후 API 호출, 데이터 가공, 알림 전송 등의 과정을 하나의 Workflow로 구성할 수 있다.
개발자 입장에서는 코드로 직접 구현할 수도 있지만,
시각적으로 Workflow를 확인하고 수정할 수 있다는 점이 특징이다.
* 참고자료
01 n8n이란 무엇인가
[TOC] # n8n이란 무엇인가 ## n8n이란? - 공식 홈페이지: https://n8n.io/ - n8n(pronounced "n-eight-n")은 **노드 기반 워…
wikidocs.net
왜 n8n을 선택했는가?
사실 필자가 만든 자동화는 n8n 없이도 만들 수 있다.
Python이나 Node.js로 IMAP 메일을 읽고, Claude Code CLI를 호출한 뒤, 결과를 슬랙이나 메신저 알림으로 전송하면 된다.
Python / Node Script
↓
IMAP 메일 조회
↓
claude -p 실행
↓
결과 파싱
↓
사내 메신저 전송
그럼에도 n8n을 선택했다.
이유는 크게 세 가지였다.
1️⃣ Workflow가 눈에 보인다
n8n의 가장 큰 장점은 Workflow가 UI로 보인다는 점이다.
메일을 감지하고, 데이터를 정리하고, Claude를 호출하고, 메신저로 보내는 흐름을 노드 단위로 확인할 수 있다.
코드로만 작성하면 만든 사람만 이해하기 쉬운 경우가 많다.
반면 n8n은 흐름 자체가 화면에 보이기 때문에, 비전공자도 찰떡같이 이해할 수 있다.
2️⃣ 나중에 전사적으로 공유하기 쉽다
개인 자동화라면 스크립트와 cron으로 끝내도 충분하다.
하지만 이번 자동화는 다른 팀에서도 충분히 사용할 수 있는 형태라고 생각했다.
n8n을 서버에 배포해두면, 특정 팀만 쓰는 자동화가 아니라 전사적으로 공유 가능한 자동화 도구로 확장할 수 있다.
3️⃣ 유지보수가 쉽다
자동화는 만드는 것보다 유지하는 것이 더 중요하다.
처음에는 단순한 메일 분석이지만, 시간이 지나면 요구사항이 늘어날 수 있다.
- 조치 대상이면 업무시스템에 초안 등록
- 비대상이면 메신저 알림만 전송
- 특정 CVE는 담당자에게 바로 전달
이런 분기 처리는 코드로도 가능하지만, n8n에서는 노드 추가와 연결만으로 비교적 쉽게 확장할 수 있다.
그래서 이번에는 개인 스크립트가 아니라 공유 가능한 Workflow 관점에서 n8n을 선택했다.
n8n 설치하기
먼저 n8n을 설치해야 한다.
n8n은 Docker로 실행할 수도 있고, npm으로 설치해서 실행할 수도 있다.
이번에는 로컬 또는 사내 서버에서 간단히 실행해볼 수 있도록 npm 기반으로 진행했다.
1️⃣ Node.js 설치 확인
node -v
npm -v
n8n은 Node.js 기반으로 동작하기 때문에 Node.js가 필요하다.
설치되어 있지 않다면 먼저 Node.js를 설치한 뒤 진행하면 된다.
2️⃣ n8n 설치
npm install -g n8n
설치 후 아래 명령어로 실행할 수 있다.
n8n
기본적으로 아래 주소에서 n8n 화면을 확인할 수 있다.
http://localhost:5678
PM2로 n8n 백그라운드 실행하기
터미널에서 n8n 명령어로 실행하면 터미널이 종료될 때 함께 종료된다.
서버에서 계속 실행하려면 백그라운드 프로세스로 관리해야 한다.
이때 PM2를 사용할 수 있다.
1️⃣ PM2 설치
npm install -g pm2
PM2는 Node.js 기반 애플리케이션을 백그라운드에서 실행하고 관리할 수 있게 해주는 프로세스 매니저다.
- 백그라운드 실행
- 프로세스 상태 확인
- 로그 확인
- 서버 재부팅 후 자동 실행
2️⃣ PM2로 n8n 실행
pm2 start n8n --name n8n
실행 상태는 아래 명령어로 확인할 수 있다.
pm2 status
로그는 아래 명령어로 확인한다.
pm2 logs n8n
모든 활성화된 list 정보는 아래 명령어로 확인한다.
pm2 list

3️⃣ 서버 재부팅 후 자동 실행 설정
pm2 save
pm2 startup
이렇게 설정해두면 서버가 재부팅되어도 n8n이 자동으로 올라오게 된다.
n8n을 개인 PC에서 테스트하는 수준이라면 없어도 되지만, 서버에 배포해서 팀 단위로 사용하려면 PM2 설정은 해두는 것이 좋다.
n8n Workflow 구축
이번에 구성한 Workflow는 크게 네 단계로 구성했다.

1. IMAP Email Trigger로 보안취약점 메일 감지
2. 메일 내용을 Claude가 읽기 좋은 형태로 정규화
3. Claude Code CLI로 대상 프로젝트 분석
4. 분석 결과를 사내 메신저로 전송
각 단계를 조금 더 자세히 살펴보자.
1️⃣ IMAP Email Trigger - 메일 감지
첫 번째 노드는 IMAP Email Trigger이다.
메일 서버에 주기적으로 접근해서 신규 메일을 감지하는 역할을 한다.
사내 메일도 IMAP을 지원한다면 동일한 방식으로 접근할 수 있다.
예를 들어 보안취약점 메일을 별도 메일함으로 분류해두고, 해당 메일함만 감지하도록 설정할 수 있다.
Host: mail. ...
Port: 993
Security: SSL/TLS
Mailbox: Security
여기서 중요한 점은 메일함을 미리 분리해두는 것이다.
전체 메일함을 대상으로 감지하면 불필요한 메일이 너무 많이 들어오므로, 보안취약점 관련 메일만 별도 폴더로 분류해두는 것이 좋다.
2️⃣ 메일 데이터 정규화 - 데이터 전처리
메일은 원본 그대로 Claude에게 넘기기보다, 필요한 필드만 정리해서 전달하는 것이 좋다.
메일 원문에는 HTML, 서명, 불필요한 공백, 이전 전달 내역 등이 함께 포함될 수 있기 때문이다.
그래서 Function 노드 또는 Code 노드를 사용해 아래와 같은 형태로 정규화했다.
{
"subject": "[보안] Apache Commons Text (CVE-2022-42889) 원격코드실행 취약점 조치 권고",
"from": "security@example.com",
"text": "Apache Commons Text 1.5~1.9 버전에서 변수 보간 기능을 통한 원격코드실행(RCE) 취약점이 발견되었습니다. 1.10.0 이상으로 업그레이드 권고합니다.",
"receivedDate": "2026-06-17T09:30:00.000Z",
}
핵심은 Claude에게 불필요한 정보를 최대한 덜 주는 것이다.
AI에게 많은 정보를 주는 것보다, 판단에 필요한 정보를 구조화해서 주는 것이 더 중요하다고 느꼈다.
3️⃣ Claude Code CLI로 취약점 분석
이번 자동화에서 핵심은 Claude Code CLI이다.
n8n에도 AI Agent 노드가 있지만, 이번에는 Claude Code CLI를 사용했다.
이유는 단순하다.
Claude Code는 실제 프로젝트 디렉터리를 보고 분석할 수 있기 때문이다.
- pom.xml 확인
- build.gradle 확인
- package.json 확인
- 레포 내 라이브러리 사용 여부 검색
- 영향 버전 비교
단순히 메일 내용을 요약하는 것이라면 일반 LLM API로도 충분하다.
하지만 이번 목표는 메일 요약이 아니라 우리 프로젝트가 영향을 받는지 확인하는 것이었다.
그래서 레포 접근이 가능한 Claude Code CLI를 사용했다.
n8n에서는 Execute Command 노드를 사용해 아래처럼 Claude Code를 호출할 수 있다.
claude -p "
아래 보안취약점 메일을 분석해줘.
[메일 제목]
{{ $json.subject }}
[메일 본문]
{{ $json.text }}
[분석 기준]
1. 취약 라이브러리명을 추출한다.
2. 영향 버전을 정리한다.
3. 현재 프로젝트에서 해당 라이브러리를 사용하는지 확인한다.
4. 대상/비대상 여부를 판단한다.
5. 판단 근거를 짧게 정리한다.
6. 결과는 JSON 형식으로 반환한다.
"
4️⃣ 사내 메신저 알림
분석 결과는 아래와 같이 사내 메신저로 전송했다.

최종 결과를 메일로 다시 받는 것보다는, 업무 중 바로 확인할 수 있는 메신저가 더 적합하다고 판단했다.
AS-IS / TO-BE 비교
정리하면 기존 방식과 개선 방식은 아래처럼 비교할 수 있다.
| 구분 | AS-IS | TO-BE |
| 메일 확인 | 화내면서 메일함 모니터링 | IMAP 기반 신규 메일 자동 감지 |
| 영향도 분석 | 여러 레포를 직접 열고 grep | Claude Code 기반 의존성 조사 |
| 결과 정리 | 메모장에 수기로 작성 | 분석 결과 자동 생성 |
| 결과 공유 | 담당자가 직접 공유 | 사내 메신저 자동 전송 |
| 소요 시간 | 수십 분 ~ 1시간 | 3분 내외 |
물론 아직 100% 자동화라고 보기는 어렵다.
보안취약점 업무는 최종 판단에 사람의 검토가 필요하기 때문이다.
하지만 적어도 아래 과정은 자동화할 수 있었다.
- 메일 감지
- 메일 본문 정리
- 취약 라이브러리 추출
- 프로젝트 의존성 확인
- 대상 여부 초안 작성
사람은 이제 처음부터 메일을 읽는 것이 아니라, AI가 정리한 결과를 검토하는 역할에 가까워진다.
앞으로 개선할 부분
현재는 메일 감지, Claude 분석, 메신저 알림까지 진행했다.
다음 단계에서는 아래 부분까지 확장해볼 예정이다.
- 업무시스템에 초안 등록
- 분석 결과 이력 관리
특히 업무시스템 초안 등록까지 연결하면, 보안취약점 업무는 거의 아래 흐름으로 바뀔 수 있다.
메일 수신
↓
AI 분석
↓
업무시스템에 초안 생성
↓
사람 검토
↓
등록
완전 자동 등록은 아직 조심스럽지만, 초안 생성까지는 충분히 실무에 적용해볼 만하다고 생각한다.
오늘의 결론
이번에는 n8n과 Claude Code CLI를 활용해 보안취약점 프로세스를 개선해 보았다.
코드 생성은 AI가 상당 부분 대신해주고 있지만 업무 Workflow는 여전히 수동으로 처리되는 경우가 많다고 느꼈다.
앞으로는 코드를 잘 작성하는 것만큼 반복 업무를 자동화하는 능력도 중요해질 것 같다.
참고로 이번 글은 n8n 사용법을 다루기 위한 글은 아니다.
n8n은 이미 잘 알려진 도구인 만큼, 사용법보다는 실제 업무에 어떻게 활용할 수 있는지 하나의 사례를 공유하는 데 의미를 두었다.
개인적으로 사용법이나 일반적인 지식을 검색하기 위해 구글링을 하는 시대는 조금씩 저물어가고 있다고 생각한다.
그래서 앞으로는 실무에서 마주친 문제를 어떻게 해결했는지에 대한 경험들을 더 많이 기록해보려고 한다.
'AI > AI-Native' 카테고리의 다른 글
| Karpathy Skills 분석 (65줄 CLAUDE.md) (4) | 2026.05.13 |
|---|---|
| AI와 함께하는 Test-Driven Development (2) | 2026.04.26 |
| Spec-Driven Development 도입기 (with OpenSpec) (2) | 2026.04.10 |

