n8n과 AI로 최신 CVE 취약점 PoC 자동 수집 파이프라인 구축하기

2026년 03월 27일
7

배경

최근 발생하는 보안 취약점들은 정보가 공개되면 빠르게 PoC 나 익스플로잇 코드가 GitHub에 올라옵니다.
하지만 수많은 리포지토리 중에는 이름만 그럴듯한 가짜 정보이거나 엉뚱한 코드, 심지어는 악성코드인 경우가 많습니다.

매번 수동으로 GitHub 검색 필터를 걸고 레포지토리에 들어가 실제 동작하는 코드인지 확인하는 과정이 번거로웠습니다.
따라서 n8n 과 오픈소스 AI 모델(Groq, allam-2-7b 등)을 결합하여, 유효한 코드만 선별해 플랫폼과 저장소에 자동으로 다운로드하는 파이프라인을 구축해 보았습니다.


전체 워크플로우

n8n 전체 워크플로우n8n 전체 워크플로우

이번에 구성한 n8n 워크플로우의 핵심 흐름은 다음과 같습니다.

  1. 스케줄러: 30분 단위로 파이프라인 동작
  2. 저장소 탐색: CVE-2025 혹은 CVE-2026 키워드로 최근 10시간 이내 생성된 리포지토리 검색
  3. 중복 체크: 이미 수집 이력이 있는 곳인지 데이터베이스 조회를 통해 스킵
  4. 파일 분석: 레포지토리의 파일 리스트와 설명(README) 내용을 수집
  5. AI 검증: 가져온 데이터를 바탕으로 실제 유효한 PoC인지 AI를 통해 검증
  6. 저장 및 다운로드: 진짜 코드라고 판단하면 Nextcloud 연동 저장소에 다운로드하고 DB에 기록

주요 동작 원리

1. GitHub 최신 동향 수집

가장 먼저 n8n의 HTTP Request 노드를 활용해 GitHub Search API를 호출합니다.

q="CVE-2025" OR "CVE-2026" created:>{최근 10시간}

위 쿼리를 통해 최신 취약점 목록을 가져오며, 루프 노드를 통해 하나씩 순차적으로 처리를 진행합니다.

2. 데이터베이스 중복 체크

이전에 방문하고 처리했던 리포지토리 아이디라면 과감하게 스킵합니다. 이 과정을 통해 불필요한 API 호출과 서버 리소스 낭비를 방지했습니다.

3. 설명 파일 유무에 따른 분기 처리

저장소에 설명 파일이 존재하는지에 따라 분석 방식을 두 갈래로 나눴습니다.

  • 설명 파일이 있는 경우: 전체 내용을 포함해 파일 목록을 모두 가져옵니다.
  • 설명 파일이 없는 경우: GitHub API를 통해 추출한 파일 리스트와 메타데이터만 활용합니다.

수집된 데이터는 다시 JavaScript를 통해 가공한 뒤 AI 노드에 전달합니다.

4. AI를 통한 코드 유효성 검증

단순 정규식만으로는 진짜 공격 코드인지 판별하기 어렵기 때문에, 무료 LLM 모델(Groq 기반)에 보안 분석가 프롬프트를 주입했습니다.

설명 파일이 존재할 때의 검증 규칙:

  • 목록에 .py, .c, .go 등 실제 소스 코드가 존재하는지 파악
  • .md 등 문서만 있거나 실행 파일(.exe)만 있다면 가짜나 악성코드로 간주해 즉시 차단
  • 다국어로 작성되어 있어도 문맥을 해석해 설명란의 내용과 실제 코드가 일치하는지 타당성 검사

설명 파일이 없을 때 (포렌식 모드):

  • 파일 이름 자체에 대상 CVE ID나 명확한 침해 코드를 암시하는 증거가 있는지 탐색
  • 저장소 이름에 명확한 취약점 타겟이 명시되어 있는지 크로스 체크

이렇게 깐깐한 조건들을 통과한 결과는 최종적으로 유효함을 뜻하는 YES 글자 하나만 출력되도록 처리했습니다.

5. 결과 저장 및 Nextcloud 연동

판단 결과가 진짜 PoC로 밝혀지면,
n8n 스크립트를 통해 호스트 서버 내 Nextcloud 연동 스토리지 경로에 자동으로 git clone을 수행합니다.
수집된 핵심 코드를 개인 클라우드 저장소에 보관함으로써, 언제 어디서든 PC와 모바일을 가리지 않고 편하게 코드를 열람할 수 있도록 구성했습니다.

Nextcloud에 저장된 PoC 폴더 화면Nextcloud에 저장된 PoC 폴더 화면

동시에 데이터베이스에 정보를 기록해주며, 수십 개의 저장이 한 번에 집중되어 발생할 수 있는 오류를 대비해 적절한 대기 노드 딜레이도 걸어두었습니다.


마무리하며..

그동안 하나씩 수동으로 체크하던 귀찮은 작업들을 n8n과 LLM으로 자동화하니 훌륭한 나만의 위협 모니터링 봇이 탄생했습니다.
하지만 사용 중인 AI가 무료 모델의 한계인지, 가끔 제대로 된 코드가 하나도 없는 가짜 레포지토리조차 유효하다고 잘못 판단하여 다운로드하는 오탐 문제가 발생한다는 단점이 존재합니다.

추후에는 판단 로직의 프롬프트를 좀 더 정교하게 다듬고 서브 검증 단계를 도입해 오탐 비율을 줄여나가는 것이 우선 과제입니다.