Beyond free-roaming Agents: Architecting a Deterministic 4-node Graph pipeline for zero-false-positive Autonomous VAPT
개요
Okwute는 자유롭게 탐색하는 Agent 방식에서 벗어나, 결정론적 4노드 그래프 파이프라인을 구축하여 거의 제로에 가까운 오탐(false-positive)율을 달성하는 자율 VAPT(Vulnerability Assessment and Penetration Testing) 시스템입니다.
주요 내용
* 기존 LLM 기반 VAPT의 한계:
* 일시적인 컨텍스트: LLM의 컨텍스트 창 제한으로 인해 복잡한 정보가 유지되지 못하고 시간이 지남에 따라 사라집니다.
* 가짜 오탐: 환각(hallucination) 현상으로 존재하지 않는 취약점을 추적하는 데 많은 시간을 낭비합니다.
* 마찰 및 지연: 각 실행 단계마다 지속적인 수동 프롬프트 입력이 필요합니다.
* .claude Harness: 지속적인 컨텍스트 확보 시도:
* LLM의 컨텍스트 고갈 문제를 해결하기 위해 실행 상태를 관리하는 엔진을 개발했습니다.
* 모든 메모리, 단계 진행, 취약점 증거를 결정론적 파일 시스템 아티팩트에 저장하여 LLM의 컨텍스트 세션과 분리했습니다.
* 3단계 메모리 시스템:
* Tier 1 (조직 전체 지식): 조직 전체 보안 기준 및 오탐 필터 (읽기 전용).
* Tier 2 (제품별 동적 메모리): 동일 제품군 내 여러 대상 간에 동적 벡터 공유.
* Tier 3 (작업별 메모리): 개별 세션의 임시 스크래치패드 및 탐색 샌드박스.
* state.json 및 findings.md에 모든 관찰, 엔드포인트, 발견 사항을 기록하여 호스트 재시작, 프로세스 충돌, API 연결 해제 시에도 컨텍스트를 유지했습니다.
* James Kettle의 HTTP Terminator에서 영감:
* AI가 새로운 공격 기법을 발명하고 제로데이를 발견할 수 있는지에 대한 연구에서 영감을 얻었습니다.
* HTTP Terminator는 LLM의 한계(상태 추적, 구조화된 실행, 정확한 페이로드 형식)를 극복하기 위해 4단계 발견 루프를 사용했습니다.
* 아이디어 구상 (Micro-Inspiration): RFC를 기반으로 고유한 desync 페이로드 후보를 생성합니다.
* 평가: 간단한 실행 하니스에서 HTTP 요청과 desync 트리거를 쌍으로 묶어 응답의 비정상적인 차이를 탐지합니다.
* 무기화: raw desync 트리거를 검증된 영향(예: Response Queue Poisoning)으로 전환합니다.
* 연쇄 반응 (Cascade): 검증된 발견 사항을 피드백하여 유사한 동작을 탐지하고 다른 공격 가능성을 탐색합니다.
* Okwute: 결정론적 4노드 그래프 파이프라인:
* James Kettle의 4단계 방법론을 엄격하고 수학적으로 강제되는 Directed Acyclic Graph (DAG)로 구현했습니다.
* 각 단계는 독립적인 데이터베이스 경계 내에 고정되어 느슨한 단계 드리프트를 제거했습니다.
* 4개 노드:
* Mapper (순수 정찰): 하위 도메인 열거, 포트 스캔, 수동 트래픽 분석을 수행하고 발견된 엔드포인트를 SQLite 데이터베이스에 삽입합니다. (네트워크 패킷 생성 또는 페이로드 생성 금지)
* Generator (위협 모델러): 엔드포인트 매개변수, 헤더, 기술 스택을 평가하여 LLM을 사용하여 특정 테스트 케이스(SQLi, IDOR 등)를 생성하고 예상 동작을 기록합니다. (네트워크 패킷 전송 금지)
* Executor (기계적 실행): test_cases 테이블에서 HTTP 요청을 가져와 헤드리스 Burp Suite Professional을 통해 실행하고 결과를 기록합니다. (취약점 유효성 검사 없음)
* Validator (판사): execution_results에서 비정상적인 응답을 읽고 생성기의 예상 동작과 비교하여 자동화된 재현 가능한 PoC를 통해 검증된 취약점만 verified_findings에 기록합니다.
* SQLite 핵심: 모든 상태가 SQLite에 저장되어 변경 불가능한 감사 추적을 제공하며, 데이터는 삭제되지 않고 상태 수명 주기를 거칩니다.
* 중앙 집중식 메모리: Obsidian으로의 전환:
* 이전의 마크다운 파일 기반 메모리 관리에서 발생하는 동시 쓰기 충돌 및 병합 충돌 문제를 해결하기 위해 SQLite 기반의 통계적 교차 타겟 메모리 엔진(appsec_memory.db)을 구축했습니다.
* Obsidian 동기화: 관계형 테이블 데이터를 인간이 읽기 쉬운 Obsidian Vault로 동적으로 변환하여, 기계가 읽는 원시 데이터(Machine Ledger)와 사람이 주석을 추가하는 영역(Human Ledger)을 분리했습니다.
* 오케스트레이션 레이어: 다중 모드 제어 평면:
* 연속 DevSecOps (헤드리스 CI/CD): Forgejo Actions (또는 GitHub Actions) CI/CD 파이프라인 내에서 자동화된 스캔을 수행합니다.
* 터미널 네이티브 하네스 (개발자 CLI): Claude Code 또는 OpenCode와 같은 환경에서 터미널 기반의 대화형 테스트를 지원합니다.
* 사용자 정의 명령 대시보드 (웹 제어 평면): 라이브 텔레메트리 시각화, 상호 작용 가능한 그래프, Burp Repeater 탭과의 통합 기능을 제공하는 웹 UI를 통해 인간의 개입을 추상화합니다.
시사점
AI는 보안 엔지니어를 대체하는 것이 아니라, 결정론적 그래프 엔지니어링을 사용하여 워크플로우를 자동화하는 보안 엔지니어는 그렇지 않은 엔지니어를 훨씬 능가할 것입니다. Okwute와 같은 구조화되고 데이터베이스 기반의 상태 머신을 구축함으로써 AI가 추론, 분류, 패턴 생성과 같은 강점을 발휘하도록 하면서도, 기본 인프라를 안전하고 규율 있으며 결정론적으로 유지할 수 있습니다.
댓글
GitHub Discussions