
AI 범용 상태 공간 탐색 엔진으로, 자율 침투 테스트에서 먼저 검증되었습니다.
Cairn은 범용 문제 해결 엔진입니다.
역할이나 워크플로를 정의하지 않습니다. 출발점과 목표가 주어지면, 알려지지 않은 상태 공간을 통해 경로를 탐색합니다.
AI 침투 테스트는 그러한 문제 중 하나이며, 입증된 사례입니다.
침투 테스트는 본질적으로 무한에 가까운 상태 공간을 통한 방향성 탐색입니다:
이 구조는 침투 테스트에만 국한되지 않습니다. 취약점 연구, 수학적 증명, CTF 챌린지 — 명확한 시작점, 명확한 성공 조건, 그리고 그 사이의 알려지지 않은 경로를 가진 모든 문제는 동일한 형태를 공유합니다.
Cairn은 이러한 유형의 문제를 위해 제작되었습니다. 침투 테스트는 이 엔진이 처음으로 검증된 도메인입니다.
이 엔진은 명시적인 사실-의도 그래프(Fact-Intent Graph)를 가진 블랙보드 아키텍처(Blackboard Architecture) 위에 구축되었습니다. 세 가지 기본 요소만 있으면 됩니다:
| 개념 | 의미 |
|---|---|
| Fact | 보드에 기록된 확인된 객관적 발견 |
| Intent | 아직 실행되지 않은 탐색 방향 선언 |
| Hint | 언제든지 주입되는 인간의 판단; 다음 읽기 시 에이전트가 흡수 |
그래프는 출발점(origin)에서 목표(goal)를 향해 성장합니다. 모든 새로운 Fact는 디딤돌이고, 모든 Intent는 미지의 세계로의 한 걸음입니다.
Agent Worker는 OODA 루프를 실행합니다 — 전체 그래프 관찰(Observe), 현재 상태 정향(Orient), 다음 Intent 결정(Decide), 탐색 실행(Act) — 그리고 그 결과를 새로운 Fact로 기록합니다. Worker는 고정된 역할이 없습니다. 작업은 사전 정의된 직무 설명이 아닌, 그래프의 현재 상태에서 런타임에 생성됩니다.
에이전트는 공유 보드를 통해서만 조정합니다(Stigmergy). 직접적인 통신은 없습니다. 정보 사일로도 없습니다.
https://github.com/user-attachments/assets/e557b1ac-dda4-41cb-87dd-9d56dbf05133
세 가지 작업 유형, 모두 동일한 Worker에 의해 실행됩니다:
| 작업 | 수행 기능 | 출력 |
|---|---|---|
| Bootstrap | 프로젝트 시작 시 문제를 직접 해결 시도 | Fact + 가능한 Complete |
시스템 아키텍처:
┌──────────────────────────────────┐
│ Cairn 서버 │
│ Facts + Intents + Hints │
└─────────────────┬────────────────┘
│
읽기 / 쓰기 API
│
┌─────────────────┴────────────────┐
│ Dispatcher │
│ 작업 스케줄링, 컨테이너 관리, │
│ 프로토콜 기록 │
└──────────┬───────────────┬───────┘
│ │
┌───────────────┴──┐ ┌──────┴──────────────┐
│ Worker Container │ │ Worker Container │
│ (프로젝트 A) │ │ (프로젝트 B) │
│ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │
│ │ W. │ │ W. │ │ │ │ W. │ │ W. │ │
│ └────┘ └────┘ │ │ └────┘ └────┘ │
└──────────────────┘ └─────────────────────┘
Cairn Server는 그래프 일관성만 유지합니다.
Cairn Dispatcher는 그래프를 읽고, 작업을 스케줄링하며, Worker 컨테이너를 시작 및 종료하고, 프로토콜에 기록하는 유일한 주체입니다. 각 프로젝트는 자체 Worker Container를 가지며, 여러 Agent Worker가 그 안에서 동시에 실행됩니다. Agent Worker는 프롬프트만 받고 구조화된 출력을 반환합니다.
지원되는 Worker 백엔드: Claude Code, Codex, Pi.
Tencent Cloud Hackathon · AI Penetration Testing Challenge · 2nd Edition
610개 팀 · 1,345명 참가자 · 중국 전역의 최상위 대학 및 보안 기업
| 지표 | 값 |
|---|---|
| 해결한 문제 수 | 54 / 54 — 유일하게 AK 달성 |
| 최종 순위 | 3위 |
이 시스템은 대회 전에 한 번도 테스트되지 않았습니다. 전체 파이프라인이 대회 당일 오전 4시에 처음으로 가동되었습니다. 훈련, 튜닝, 도메인별 도구는 전혀 없었습니다. MCP 도구, RAG, 사전 정의된 에이전트 역할도 전혀 없었습니다.
필수 조건
두 설정 방법 모두 Worker 컨테이너 이미지가 필요합니다:
docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest
로컬 Dispatcher 설정 파일을 만들고 LLM 엔드포인트 및 API 키를 입력하세요:
cp dispatch.example.yaml dispatch.yaml
Cairn 빌드에 사용되는 기본 이미지를 가져옵니다:
docker pull ghcr.io/astral-sh/uv:python3.13-trixie
docker compose up --build
이 명령은 cairn-server를 포트 8000에서 시작하고, 서버가 상태 확인을 통과하면 cairn-dispatcher를 시작합니다. Dispatcher는 프로젝트 루트의 dispatch.yaml을 마운트하고 호스트 소켓을 통해 Docker에 연결합니다. 데이터는 ./datas/cairn/에 저장됩니다.
# 서버 시작
uv run --project cairn cairn serve
# Dispatcher 실행
uv run --project cairn cairn dispatch --config dispatch.yaml
# 시작 상태 확인만 실행
uv run --project cairn cairn dispatch --config dispatch.yaml --startup-healthcheck-only
Docker나 실제 모델 엔드포인트 없이 빠른 회귀 테스트 스위트를 실행:
uv run --project cairn --group dev pytest
Cairn은 범용 문제 해결 엔진입니다. 침투 테스트, CTF 해결, 보안 평가 및 취약점 연구 워크플로를 지원하지만, 명시적인 수행 권한이 있는 환경에서만 사용해야 합니다.
이 프로젝트를 어떻게 사용하는지는 전적으로 귀하의 책임입니다. 소유자나 운영자의 명확한 사전 허가 없이 시스템, 네트워크, 애플리케이션 또는 데이터에 대해 Cairn을 사용하지 마십시오. 승인되지 않은 보안 테스트, 익스플로잇 또는 데이터 접근은 불법일 수 있으며 피해를 초래할 수 있습니다.
이 프로젝트의 개발자와 기여자는 사용으로 인한 오용, 남용, 손해, 손실 또는 법적 결과에 대해 어떠한 책임도 지지 않으며, 이를 묵인하지도 않습니다. 이 프로젝트를 사용함으로써 귀하는 귀하의 활동이 관할 구역의 모든 관련 법률, 규정, 계약상 의무, 전문가 또는 조직 정책을 준수하도록 보장하는 데 동의합니다.
이 프로젝트는 개인 및 교육용으로 GNU AGPLv3에 따라 라이선스가 부여됩니다.
상업적 사용: AGPL-3.0 오픈소스 의무 없이 상업적 또는 독점 환경에서 이 프로젝트를 사용하려면 상업용 라이선스를 위해 연락해 주시기 바랍니다.
기여: Pull Request를 제출함으로써 귀하는 귀하의 기여가 AGPL-3.0 및 프로젝트의 상업용 라이선스 모두에서 사용될 수 있음에 동의합니다.
| Reason | 전체 그래프 읽기: 목표가 달성되었는가? 다음에 무엇을 탐색해야 하는가? | Complete / 새로운 Intent / no-op |
| Explore | 하나의 Intent를 획득하여 탐색 실행, 결과 보고 | 하나의 Fact |