Volver al Blog
Research

AI 보안 에이전트 아키텍처: 정찰에서 익스플로잇까지

네트워크 정찰부터 익스플로잇 검증까지 자율적 취약점 평가를 수행하는 계층적 멀티 에이전트 시스템의 아키텍처. 7개 스페셜리스트, 5단계 워크플로우, 그리고 판정 권한을 모델 밖으로 빼는 확증 오라클·실행 격리·RoE 레퍼런스 모니터까지.

··9 min de lectura
AI-AgentsVoltAgentSecurityArchitectureMulti-Agent-Systemsvulnerability-research

개요

종합적인 보안 취약점 평가를 자율적으로 수행하는 멀티 에이전트 시스템의 아키텍처를 다룬다. 계층적 슈퍼바이저가 여러 스페셜리스트 에이전트를 오케스트레이션하고, 각 스페셜리스트는 취약점 발견 워크플로우의 서로 다른 단계 — 정찰, 소스 분석, 가설 생성, 익스플로잇 검증, 우회 강화, 보고 — 를 담당한다.

이 글의 축은 두 가지다. (1) 계층적 위임 구조 — 단일 모놀리식 에이전트로는 감당 안 되는 다단계 보안 평가를 역할 분리로 다룬다. (2) 판정 권한의 외부화 — "이 취약점이 진짜인가", "탐색이 정체됐는가", "이 행동이 교전 규칙 안인가" 같은 판정을 LLM 서사가 아니라 결정론 오라클·레퍼런스 모니터로 내린다. 두 번째 축은 LLM 완료편향을 모델 밖으로 빼는 하네스 설계와 같은 원리 위에 서 있다.

구현하는 프로덕션급 패턴:

  • 계층적 에이전트 제어: 슈퍼바이저가 실행 상태를 유지하고, 스페셜리스트는 읽기 전용으로 동작하며 의도를 신호한다.
  • 계층화 아키텍처: 워크플로우 오케스트레이션, 에이전트 로직, 도구 인터페이스, 실행 격리를 명확히 분리한다.
  • 증거 기반 확증: 그래프 기반 지식 축적 + 출처 추적. "200 OK"가 아니라 negative-control 대조로 확증한다.
  • 결정론 안전 경계: 가드레일·확증 오라클·RoE 레퍼런스 모니터가 런타임에 불변성을 강제한다.

1. 시스템 레이어 개관

시스템은 6개 레이어로 구성된다. 각 레이어는 다운스트림 구현에 대한 최소한의 인식만 갖는다.

┌──────────────────────────────────────────────────┐
│ L0: 진입점 — HTTP 트리거 (fire-and-forget)        │
├──────────────────────────────────────────────────┤
│ L1: 오케스트레이션 — Supervisor + WorkflowChain   │
│     FSM 상태 기계, 단계 전환                       │
├──────────────────────────────────────────────────┤
│ L2: 에이전트 — Supervisor + 7 Specialist          │
│     LLM 추론, 도구 위임                            │
├──────────────────────────────────────────────────┤
│ L3: 도구 — MCP 서버 + 내장 tools                  │
│     컨텍스트 전파, 실행 래핑                       │
├──────────────────────────────────────────────────┤
│ L4: 확증·안전 — Guardrail · Oracle · RoE 모니터   │
├──────────────────────────────────────────────────┤
│ L5: 상태·격리 — Schema SSOT · Memory · Sandbox    │
└──────────────────────────────────────────────────┘

핵심 원칙: L2 에이전트는 L4가 어떤 도구를 쓰는지 모른다. L3 래퍼가 실행 세부를 처리하고, 에이전트는 보안 로직에만 집중한다. 이 무관심(ignorance)이 각 레이어를 독립적으로 교체 가능하게 만든다.

2. 에이전트 구성

2.1 슈퍼바이저와 7 스페셜리스트

슈퍼바이저(계층적 하이브리드 시스템, HHS)가 FSM 오케스트레이터 역할을 하며, 영속 저장소에 발견을 기록하는 유일한 인터페이스다. 이 단일 쓰기 경로가 동시 쓰기 충돌과 고아 레코드를 원천 차단한다.

에이전트역할
Supervisor (HHS)FSM 오케스트레이터, 단일 쓰기 경로(commit_finding), 위임
ReconWebHTTP 정찰 — 엔드포인트·인증·자산 발견
ReconBinary바이너리 정찰 — 함수·섹션·심볼 매핑
VulnInjection증거 기반 공격 가설 생성
InjectionExploitPoC 실행 및 임팩트 확증
BypassEnhancementWAF·필터 우회 강화
SourceAnalyst소스 코드 유출 시 정적 분석
Report발견 종합 및 위험도 평가

각 스페셜리스트는 집중된 컨텍스트를 갖는다. 정찰 에이전트는 취약점 판정을 하지 않고 관찰만 기록한다 — 분류는 오케스트레이터 몫이다(컨텍스트 오염 방지).

2.2 위임 흐름

슈퍼바이저는 스페셜리스트를 직접 호출하지 않고 위임(delegate) 한다. 스페셜리스트는 작업을 수행하고 구조화된 출력을 반환하며, "발견을 기록하라"는 의도를 신호할 뿐 직접 쓰지 않는다. 슈퍼바이저가 그 의도를 받아 검증 후 커밋한다.

이 read-only 스페셜리스트 패턴이 세 가지를 막는다 — 동시 쓰기 충돌, 중복 레코드, 상태 불일관.

3. 워크플로우 (5-Phase)

시작

  ├─► Phase 1  RECON
  │     ReconWeb/ReconBinary가 표면 발견 → ReconFinding

  ├─► Phase 1.6  SOURCE LEAK (선택)
  │     소스 유출 감지 시 SourceAnalyst 정적 분석

  ├─► Phase 2  VULN HYPOTHESIS
  │     VulnInjection이 증거 기반 가설 생성 → HypothesesFinding

  ├─► Phase 3  POC VALIDATION
  │     InjectionExploit이 샌드박스에서 PoC 실행·확증
  │     ├─ 실패 시 전략 적응 (오류→union→시간기반 …)
  │     └─► ValidatedFinding

  ├─► Phase 3.5  GATE-B / 3-STRIKE
  │     증거 밀도 확인, 3회 연속 규칙 적용

  └─► Phase 4  REPORT
        Report가 발견 종합, 위험 매핑 → 완료

3.1 정찰 — 스택 무관 핑거프린팅

정찰은 하드코딩된 선택자 없이 런타임 핑거프린팅으로 기술 스택을 감지한다. 인증 발견은 다단계 파이프라인이다 — 제공된 크리덴셜 → 기본 로그인 템플릿 → 인증 우회 감지 → 기능 산포 수집 → 공개 전용 폴백. 사람 개입이 필요한 지점(MFA·CAPTCHA·OAuth)에서는 인증 탐침을 멈추고 공개 정찰만 계속한다.

3.2 가설 생성 — 증거 밀도 임계값

취약점 가설은 근거 없이 세우지 않는다. 각 가설은 가설당 최소 2개의 독립 증거 소스를 요구하고, 신뢰도(낮음/중간/높음)를 증거 기반으로 매긴다. 신뢰도 임계값을 넘는 가설만 검증 단계로 진행한다.

3.3 익스플로잇 검증 — 전략 적응

PoC는 격리 샌드박스에서 실행되고, 실패 시 단계적으로 전략을 바꾼다.

  • 1회 실패: 원인 분석(인증 실패·WAF 차단·타임아웃)
  • 2회 실패: 같은 클래스 안에서 기법 조정 (SQLi: 오류 → union → 시간기반)
  • 3회 실패: 클래스 에스컬레이션 (XSS: 반사형 → DOM → 저장형)
  • 4회 이상: 소진 처리, 다음 발견으로

3.4 보고 — CVSS와 KISA 매핑

확증된 발견만 보고 단계로 넘어간다. Report 스페셜리스트는 각 발견을 CVSS로 정량화하고 위험 수준으로 매핑한다.

  • CVSS → 위험 수준: 7.0 이상 → 높음, 4.0~6.9 → 중간, 4.0 미만 → 낮음

국내 웹 취약점 점검 실무를 위해 KISA 웹 취약점 분류로도 매핑한다 — 예: SQL 인젝션(WEB-05), XSS(WEB-08), CSRF(WEB-09). 국제 표준(CVSS)과 국내 규제 체계를 함께 붙여, 발견이 어느 프레임워크에서든 바로 소화되게 한다. 여기에 환경 컨텍스트(WAF 감지 여부, 인증 탐침 결과, 노출된 민감 자산)를 덧붙여 보고서의 실무 유용성을 높인다.

4. 확증 아키텍처 — 판정을 모델 밖으로

이 시스템의 차별점은 판정 권한을 LLM에게 주지 않는다는 것이다. "취약한가", "정체됐는가"를 모델의 서사가 아니라 결정론 코드가 답한다.

4.1 가드레일 — 경계마다 스키마 강제

가드레일은 레지스트리에 등록되어 에이전트 입출력 경계마다 실행된다.

  • 입력 가드레일: 태스크 스키마 검증, 출처 메타데이터 완전성(Gate-A), 증거 밀도 임계값
  • 출력 가드레일: 발견 스키마 적용, "confirmed"는 명시적 검증 후에만 표시
  • PoC 확증 게이트(Gate-B): impact_confirmed=true인 발견만 보고로 승격

핵심은 guardrail이 SSOT 소비자가 아니라 독립 오라클이라는 점이다. 검증할 값을 검증 대상에서 가져오면 오염을 못 본다 — 가드레일은 바깥에서 판정한다.

4.2 확증 오라클 — canary와 정체 감지

두 종류의 오라클이 있다.

Canary 오라클. 익스플로잇이 실제로 임팩트를 냈는지를 확증하려면, 응답에 데이터가 보이는 것만으로는 부족하다("200 OK"는 데이터 반환일 뿐이다). 대신 실행 시점에 canary 값을 민팅해 주입하고, 그 특정 canary가 되돌아오는지로 확증한다. 무페이로드 대조가 같은 패턴을 fire하면 강등한다 — negative-control 원리다.

Stagnation 오라클. 에이전트가 같은 자리를 맴돌면 토큰만 태운다. 응답 히스토리를 해시(FNV-1a)로 축적하고, 일정 윈도(기본 5) 안에서 새 정보가 없으면 정체로 판정해 전환을 트리거한다. "새 발견 없이 시도만 반복"을 모델의 자기 판단이 아니라 히스토리 기반 결정론으로 감지한다.

4.3 3-Strike / 안티 루프

같은 가설이 3회 연속 실패하면 소진 처리하고 다음으로 넘어간다. 정보 이득 평가(3회 시도에 새 정보 없으면 에스컬레이션)와 정체 감지가 폭주를 막는다.

5. 안전과 격리

자율 보안 에이전트에서 가장 위험한 실패는 "의도치 않은 행동"이다. 두 겹으로 막는다.

5.1 RoE 레퍼런스 모니터

교전 규칙(Rules of Engagement)을 결정론 레퍼런스 모니터로 강제한다. 이 모니터의 모든 함수는 순수(pure)하다 — 같은 입력에 항상 같은 판정을 낸다. 에이전트가 어떤 행동을 하기 전에, 그 행동 서술자(action descriptor)를 모니터가 검사해 RoE 정책 안인지 판정한다. 판정이 LLM 추론에 의존하지 않으므로 프롬프트 인젝션으로 우회되지 않는다.

판정선은 명확하다 — "타인의 데이터를 실제로 침해하거나 시스템 상태를 변경하는가?" 예면 절차로 증명하고, 범위 밖이면 차단한다.

5.2 실행 격리 — 다중 샌드박스 백엔드

모든 도구 실행은 격리 샌드박스에서 이뤄진다. 단일 방식에 묶이지 않도록 여러 백엔드를 지원한다 — rootless OCI 컨테이너, 커널 격리 강화 런타임, 원격 샌드박스. 각 실행은 전용 네트워크 정책을 받아, 대상 외 자산으로의 egress를 차단한다(fail-closed).

격리는 성능이 아니라 안전 경계다. 게이트가 무거우면 우회하고 싶어지므로, 정책은 선언적으로 두고 실행 계층이 강제한다.

6. 데이터 모델과 출처 추적

6.1 그래프 기반 지식

발견을 상호 연결된 노드로 표현한다.

  • 웹 도메인: Host, Service, Endpoint, Parameter, Form, AuthFlow
  • 바이너리 도메인: Binary, Function, Section, Symbol
  • 공격 분석: AttackVector, Vulnerability, RejectedCandidate
  • 익스플로잇: ValidatedFinding
  • 지식: Lesson(학습된 패턴), DeadEnd(실패한 접근), TargetProfile

DeadEnd 노드가 중요하다 — 실패한 접근을 기록해 두면, 나중에 같은 막다른 길을 다시 밟지 않는다.

6.2 출처 체인

모든 발견은 정찰 소스까지 거슬러 추적된다.

정찰 증거
 └─ 엔드포인트 {경로, 메서드, _출처: 소스_도구}
     └─ 공격 가설 {신뢰도, 증거[], 추론}
         └─ PoC 실행 {stdout, stderr, canary}
             └─ 임팩트 확증 {confirmed: true, cvss}
                 └─ 최종 보고서 {위험_수준, 요약}

이 체인 덕분에 모든 발견은 원 정찰 소스와 중간 검증 단계로 완전히 소급된다 — 포렌식 감사가 가능하다.

7. 조정과 메모리

7.1 Coordinator — 공격 그래프와 능력 레지스트리

단순 순차 실행을 넘어, 코디네이터가 공격 그래프(attack graph) 를 유지한다. 발견된 표면과 가설을 노드·엣지로 두고, 능력 레지스트리(capability registry)로 "지금 어떤 스페셜리스트가 어떤 행동을 할 수 있는가"를 관리한다. 위임 예산(delegation budget)이 폭주를 막는다 — 무한 위임 대신 예산 소진 시 정지·동결한다.

7.2 Memory — dead-end와 분해

메모리 계층은 실패 경로(dead-end)와 작업 분해(decomposer)를 관리하고, 임베딩 기반 검색으로 과거 유사 상황을 회수한다. 상태를 모델 머리 밖 파일·저장소로 외부화하므로, 컨텍스트가 압축돼도 "무엇을 이미 시도했는가"가 보존된다.

8. 설계 패턴

8.1 기능-컨텍스트 분리

LLM 대면 파라미터에서 시스템 내부 값을 제거한다.

// 피해야 할 패턴 — 시스템 노이즈가 LLM 입력에 혼재
{ target_url: "...", run_id: "uuid...", workspace_path: "/data/..." }
 
// 올바른 패턴 — 깔끔한 LLM 입력
{ target_url: "...", mode: "normal" }
 
// 시스템 값은 별도 컨텍스트로 주입
context.set("run_id", runUuid);
context.set("workspace", workspacePath);

LLM의 주의를 인프라 배관이 아니라 보안 로직에 집중시킨다.

8.2 단일 쓰기 경로

슈퍼바이저만 영속 저장소에 쓴다. 스페셜리스트는 의도를 신호하고 슈퍼바이저가 실행한다.

8.3 스택 무관 설계

에이전트 코드에 하드코딩된 선택자·타임아웃·크리덴셜이 없다. 인증 탐침은 감지된 스택에 적응하는 런타임 구성으로 주도된다.

9. 운영 고려사항

9.1 다층 타임아웃

수준범위
도구 수준개별 서브프로세스 (짧은 curl 타임아웃)
래퍼 수준샌드박스 컨테이너
스페셜리스트 수준에이전트 maxSteps
슈퍼바이저 수준전체 실행 (스텝·비용 예산)

9.2 조기 종료

  • 사람 개입 필요(MFA/CAPTCHA/OAuth): 인증 탐침 중단, 공개 정찰 계속
  • 비용 예산 소진: 즉시 전체 중단
  • 증거 임계값 달성: 신뢰도 도달 시 나머지 가설 건너뜀

10. 설계 교훈

안티패턴정공법
단일 모놀리식 에이전트 → 컨텍스트 과부하계층적 위임 → 집중된 책임
샌드박싱 없는 셸 실행 → 보안 위험다중 백엔드 격리 → 감사 가능한 실행
공유 변경 가능 상태 → 경쟁 조건read-only 스페셜리스트 → 단일 쓰기 경로
LLM 자기 판정 → 완료·확증 편향결정론 오라클·모니터 → 외부화된 판정

트레이드오프는 분명하다. 다단계 검증은 벽시계 시간과 토큰을 더 쓴다. 하지만 보안 평가는 빠른 반복보다 정확성과 감사 가능성에서 더 많은 이득을 얻는다. 이 설계는 속도보다 그 둘을 우선한다.

마치며

정교한 자율 보안 평가에는 유능한 단일 LLM 이상이 필요하다. 이 아키텍처의 강점은 다섯 가지에서 나온다.

  1. 역할 분리 — 각 에이전트가 집중된 책임
  2. 결정론 판정 — 가드레일·오라클·RoE 모니터가 경계마다 불변성 강제, 판정을 모델 밖으로
  3. 출처 무결성 — 완전한 감사 추적
  4. 우아한 저하 — 폴백 경로가 적대적 조건 처리
  5. 조정 가능한 안전 — 예산·타임아웃·격리가 폭주 차단

일반화하면, 계층적 위임과 read-only 스페셜리스트, 그리고 판정 권한을 결정론 코드로 외부화하는 규율이 이 청사진의 핵심이다. 보안처럼 오판 비용이 큰 도메인에서 신뢰할 수 있는 자율 AI를 세우는 재사용 가능한 패턴이다.

참고