ARTEX 작동 방식:두 그래프 위에서 플래너 하나, 워커 셋, 가드가 움직입니다.
ARTEX는 Next.js 콘솔을 갖춘 Go 바이너리 하나로, PostgreSQL 위에서 동작합니다. 이 페이지는 실행 과정, 바이너리 내부 구성, 모델이 호출할 수 있는 도구 31개, 가드, 그리고 v0.3.2부터 v0.3.25까지의 모든 릴리스를 설명합니다.
ARTEX 루프:계획, 작업, 가드, 검증, 그리고 다시 계획.
01
계획
그래프가 바뀌면 플래너가 깨어납니다. 커버리지와 범위를 읽고 할 일 목록을 갱신한 뒤, 각각 자산 하나에 연결된 인텐트를 배정합니다.
02
작업
워커는 기본 3개입니다. 각 워커는 인텐트 하나를 맡아 nmap, curl, Playwright 같은 실제 도구를 실행하고, 사실과 발견 사항을 기록한 뒤 종료합니다.
03
가드
모든 도구 호출은 인터셉트 규칙, LLM 판정자, 사람 순서로 검사를 거칩니다. 모든 트래픽은 증거로 남도록 포트 8788의 기록 프록시를 통과합니다.
04
검증
기록이 생길 때마다 플래너가 다시 깨어나며, prove_goal이 목표를 닫을 때까지 반복합니다. 리포터는 중복을 병합하고, 리테스터는 수정 여부를 확인합니다.

- 01그래프가 바뀌면 플래너가 깨어납니다(디바운스, 약 800 ms).
- 02플래너는 graph_overview, 커버리지, 범위를 읽습니다.
- 03인텐트를 0개에서 N개까지 프런티어 큐에 배정합니다.
- 04워커가 인텐트 하나를 맡아 해당 자산을 불러옵니다.
- 05워커는 가드와 기록 프록시를 거쳐 도구를 실행합니다.
- 06사실, 자산, 발견 사항을 두 그래프에 기록합니다.
- 07기록이 생기면 플래너가 다시 깨어나며, prove_goal까지 반복합니다.
ARTEX 전체 실행 과정,새 작업부터 병합된 보고서까지 9단계.
01
작업 생성
설명, 대상, 선택형 템플릿, 작업별 허용 및 차단 규칙, 순서가 정해진 LLM 프로필 체인을 지정합니다. 작업은 이전 작업의 사실을 물려받을 수 있습니다.
02
자산 불러오기
자산은 공유 자산 그래프에 들어가며, 에이전트가 입력하거나 ScopeSentry에서 가져옵니다. DNS와 HTTP 정보 보강은 백그라운드에서 실행됩니다.
03
목표로 분할
목표 에이전트가 작업을 목표 노드로 나누고 범위를 추출합니다.
04
계획
플래너가 깨어나 그래프 개요, 커버리지, 범위를 읽고 할 일 목록을 갱신한 뒤, 자산에 연결된 인텐트를 배정합니다. 차단된 자산은 이 단계에서 거부됩니다.
05
작업
워커(기본 3개)는 각각 인텐트 하나를 맡아 가드와 기록 프록시를 거쳐 실제 도구를 실행합니다.
06
결과 기록
워커는 사실, 새 자산, 선택적으로 자격 증명, 그리고 발견 사항을 기록하며, 각각 증거와 캡처된 트래픽을 함께 남깁니다.
07
반복
기록이 생길 때마다 플래너가 다시 깨어나며, 목표가 검증되거나 예산 또는 시간이 소진될 때까지 반복합니다. 워커에는 기본 1,200초가 주어집니다.
08
보고
리포터는 발견 사항마다 보고서를 하나씩 작성하고, 같은 결함의 중복을 취약점 폴더로 병합하며, 메신저로 알림을 보낼 수 있습니다. 리테스터는 수정 여부를 다시 확인합니다.
09
조정
사람은 언제든 개입할 수 있습니다. 메인 에이전트와 대화하고, 힌트를 추가하고, 실행 중인 워커에 메시지를 보내거나 일시 정지하고, /btw 곁가지 질문을 할 수 있습니다.
ARTEX 내부의 두 그래프:앵커로 연결된 자산과 발견 사항.
ARTEX는 Next.js 콘솔을 내장한 Go 바이너리 하나로, PostgreSQL 위에서 동작합니다. 알고 있는 정보는 두 그래프에 저장합니다.
- LLM에 노출된 도구
- 31
- PostgreSQL 테이블
- 60
- LLM 통신 형식
- 4
- 작업당 기본 워커 수
- 3
탐색 그래프
작업마다 하나
- 목표
- 인텐트
- 사실
- 발견 사항
- 힌트
앵커는 각 인텐트, 사실, 발견 사항을 그것이 다룬 자산에 연결합니다. 이 연결로 커버리지 맵이 만들어집니다.
- 루트 도메인
- 서브도메인
- IP
- 서비스
- 앱
- 엔드포인트
자산 그래프
전역, 모든 작업이 공유
ARTEX 바이너리 내부:플래너부터 트래픽 기록기까지 12개 구성 요소.
엔진
server/engine.go작업마다 플래너 루프 하나와 워커 루틴 N개를 돌립니다. 인텐트 할당, 타임아웃, 일시 정지와 드레인을 처리합니다.
목표 에이전트
agent/goals.go작업을 목표로 나누고 범위를 추출합니다.
플래너
agent/planner.go인텐트를 만드는 유일한 에이전트입니다. 깨어날 때마다 이어지는 공유 할 일 목록을 유지해, 여러 단계로 이어지는 작업이 순서대로 진행됩니다.
워커
agent/worker.go인텐트 하나를 맡아 도구를 실행하고, 결과를 두 그래프에 기록한 뒤 종료합니다.
메인 에이전트
agent/mainagent.go작업 안의 채팅 에이전트입니다. 사람이 대화할 수 있고, 에이전트는 인텐트와 힌트를 추가할 수 있습니다.
리포터와 리테스터
agent/finding_recorder.go발견 사항 보고서를 작성하고, 중복을 취약점 폴더로 병합하며, 발견 사항을 재현됨, 수정됨, 미확인으로 재검사합니다.
가드
guard/, intercept/모든 도구 호출을 인터셉트 규칙, LLM 판정자, 사람 승인 순서로 검사합니다. 감사 로그를 남깁니다.
트래픽 기록기
traffic/자체 인증 기관(CA)을 갖춘 포트 8788의 기록 프록시입니다. 워커의 모든 HTTP 및 셸 트래픽이 증거로 저장됩니다.
정보 보강
enrich/enrich.go새 자산의 DNS와 HTTP 정보를 백그라운드에서 조회합니다.
LLM 풀
llmpool/, llmrec/모델 프로필을 보관하고, 프로필 간 장애 조치를 수행하며, 원본 요청과 응답을 기록합니다.
알림
notify/발견 사항을 DingTalk, Feishu, WeCom, Telegram, 이메일, 웹훅으로 실시간 또는 30분 단위 요약으로 보냅니다.
자체 업데이트
selfupdate/GitHub Releases에서 원클릭으로 업데이트하며, 체크섬 확인, 스모크 테스트, 부팅 3회 실패 시 롤백을 지원합니다.
ARTEX 모델이 호출할 수 있는 도구 31개,그리고 셸, HTTP, 웹 검색, MCP.
ARTEX가 LLM에 제공하는 그래프 및 보고서 도구입니다. 워커는 이 밖에도 셸, HTTP 요청, 파일 읽기, 웹 검색, 원격 MCP 서버, 스킬을 사용합니다.
그래프 및 보고서 도구31
- add_intent
- add_hint
- prove_goal
- graph_overview
- node_detail
- list_goals
- list_facts
- record_fact
- record_intelligence
- insert_assets
- list_assets
- list_untested_assets
- list_companies
- report_finding
- update_finding_report
- update_finding_case_report
- search_finding_duplicates
- list_findings
- list_task_findings
- get_finding_record
- get_finding_case
- get_finding_traffic
- search_all_worker_traces
- list_worker_traces
- get_worker_trace
- get_worker_output
- get_task_graph
- get_task_node_detail
- list_task_worker_traces
- get_task_worker_trace
- spawn_task
Docker 이미지에 포함된 프로그램12
- nmap
- curl
- wget
- ripgrep
- jq
- git
- dig
- netcat
- whois
- Node.js 22
- Playwright + Chromium
- Playwright MCP
ARTEX 가드:규칙, LLM 판정자, 그리고 사람.
모든 도구 호출은 실행 전에 가드를 통과합니다. 공개 코드에 있는 통제 항목과 각 항목이 추가된 버전입니다.
인터셉트 규칙
v0.3.15허용 및 거부 규칙과 함께, HTTP DELETE나 삭제성 경로 같은 파괴적 호출에 대한 내장 규칙이 있습니다.
LLM 판정자
v0.3.11규칙으로 결정되지 않는 호출을 검토합니다. v0.3.23부터는 판정자가 실패하면 호출을 통과시키지 않고 사람 승인으로 넘깁니다.
자산 차단 목록
v0.3.13기본으로 .gov, .gov.cn, .edu, .edu.cn을 차단하며, 그 위에 작업별 허용 및 차단 목록을 둘 수 있습니다.
스크립트 검토
v0.3.18판정자는 각 스크립트의 스냅샷(경로, 크기, SHA-256)을 봅니다. 스냅샷이 불완전하면 사람 검토로 넘어갑니다.
Basic Auth
v0.3.16콘솔 앞단의 선택형 HTTP Basic Auth로, RuoJi6가 추가했습니다.
기록 프록시
모든 도구 트래픽이 포트 8788의 프록시를 거치므로, 워커가 보내는 모든 요청이 증거로 남습니다.
공개 코드에는 한때 교전 규칙(RoE) 범위 검사가 있었습니다. 이 기능은 제거되었고, ThreatBook은 공개판에 내장 안전 통제가 없다고 밝혔습니다.
ARTEX가 쓸 수 있는 모델:Anthropic 또는 OpenAI 호환 엔드포인트라면 무엇이든.
anthropic
Messages API
openai
Chat Completions
openai-responses
Responses API, v0.3.5부터
jev
TypeSafe System One, 승인 판정용
- base URL 설정으로 DeepSeek, GLM, Qwen, 게이트웨이를 프로필로 연결할 수 있습니다.
- 작업마다 순서가 정해진 프로필 체인이 있습니다. 할당량 또는 결제 오류일 때만 다음 프로필로 넘어갑니다.
- 재시도 계층 5개: 연결, 빈 응답, 안전한 재전송, 서킷 브레이커, 인텐트 재실행.
- CrowdStrike는 ARTEX가 DeepSeek v4.1-flash에서 실행되는 것을 확인했고, 주변에서 GLM-5.3과 Grok 4.6도 발견했습니다.
ARTEX 스택:Go, Next.js, PostgreSQL, SQLite.
- LLM에 노출된 도구
- 31
- PostgreSQL 테이블
- 60
- LLM 통신 형식
- 4
- 작업당 기본 워커 수
- 3
- 백엔드
- Go 1.26, 단일 바이너리, server-sent events를 지원하는 REST API
- 콘솔
- Next.js 16, React 19, Tailwind 4, 바이너리에 내장
- 에이전트 SDK
- Autumn-27의 norma v0.4.3, Apache-2.0, 아직 공개 상태
- 주 저장소
- PostgreSQL 16: 두 그래프, 작업, 발견 사항, 설정, 테이블 60개
- 트래픽 저장소
- ./data 아래의 SQLite
- 포트 8787
- 웹 콘솔, API, 실시간 스트림
- 포트 8788
- 기록 프록시, Docker Compose에서는 localhost에 바인딩
- Docker 이미지
- amd64 및 arm64용 ruoji6/artex. 원본 autumn27/artex는 사라졌습니다
- 코드 규모
- v0.3.25 기준 173,504줄: Go 100,569줄, TypeScript 62,418줄
- 이력
- 커밋 458개, 첫 커밋 2026-07-26
- 라이선스
- AGPL-3.0
ARTEX의 모든 릴리스,v0.3.2부터 v0.3.25까지, 원본과 RuoJi6.
v0.3.15까지는 원작자 Autumn-27의 릴리스입니다. v0.3.16부터는 주요 유지 관리 포크인 RuoJi6/ARTEX의 릴리스입니다.
| 버전 | 날짜 | 배포 | 변경 사항 |
|---|---|---|---|
| v0.3.25 | 2026-10-29 | RuoJi6 | 송신 IP 배너, 자동 제목, 발견 사항 정렬 수정, 실행 시간에서 일시 정지 시간 제외 |
| v0.3.24 | 2026-10-26 | RuoJi6 | Go 1.26.10 (eMudhra CA 불신 대응), 발견 사항에 Burp Repeater 방식의 요청 재전송, 프롬프트에서 'flag' 표현 제거 |
| v0.3.23 | 2026-10-20 | RuoJi6 | 모델 판정 실패 시 기본값을 사람 승인으로 변경; 선택형 작업 인텔리전스 기록 |
| v0.3.22 | 2026-10-19 | RuoJi6 | Vercel 모의 데모 자동 배포, 업데이트 프록시, 예약 작업 수정 |
| v0.3.21 | 2026-10-15 | RuoJi6 | 실패 시 판정자 재시도, 엄격한 LLM 요청 속도 제한 |
| v0.3.20 | 2026-10-13 | RuoJi6 | 스크립트 스냅샷 오탐 수정, 기본 모델 검토 |
| v0.3.19 | 2026-10-12 | RuoJi6 | 명령 오판 수정, 스크립트 검토 정책 설정 |
| v0.3.18 | 2026-10-12 | RuoJi6 | 스크립트 검토 스냅샷, 승인 화면 곁가지 Q&A, 승인 검색 |
| v0.3.17 | 2026-10-10 | RuoJi6 | 캘린더 예약 작업 |
| v0.3.16 | 2026-10-09 | RuoJi6 | 선택형 HTTP Basic Auth; 중복 발견 사항을 취약점 폴더로 병합 |
| v0.3.15마지막 원본 릴리스 | 2026-10-07 | Autumn-27 | 삭제 경로 인터셉트 규칙; 판정자 토큰 계량; DingTalk/Feishu/WeCom/웹훅/Telegram/이메일 IM 푸시와 SSRF 방어 강화. RuoJi6가 2026-10-09 첫 릴리스로 다시 배포 |
| v0.3.14로그인 우회 | 2026-09-24 | Autumn-27 | 작업 목록 취약점 열; graph_overview 축소. ARTXploit가 악용한 fail-open 인증 버그 포함 (커밋 b55ceb1) |
| v0.3.13 | 2026-09-19 | Autumn-27 | 전역 자산 차단 목록 (기본 .gov/.edu), 작업별 허용/차단, fail-open을 막기 위한 판정자 출력 강화 |
| v0.3.12 | 2026-09-17 | Autumn-27 | 탐색 브로드캐스트 보드; 인텐트 소프트/하드 삭제. v0.3.12 사전 빌드 바이너리는 bear20252026/ARTEX-release에 미러됨 |
| v0.3.11 | 2026-09-15 | Autumn-27 | 승인 출처로 바로 이동; 판정자 입력 축소; 실험적 noa 압축 (norma v0.4.0) |
| v0.3.10 | 2026-09-13 | Autumn-27 | DeepSeek 웹 검색 백엔드; 워커 간 트레이스 검색; add_hint 트리거; enwjx/artex-ymh 공격형 브랜치의 기반 |
| v0.3.9 | 2026-09-11 | Autumn-27 | 다중 세션 메인 에이전트; /btw 곁가지 질문; spawn_task source_task_ids; 빈 턴 수정 |
| v0.3.8 | 2026-09-09 | Autumn-27 | 설정 가능한 재시도 계층 5개; 세션 헤더; 타임아웃 시 그 자리에서 마무리; 플래너 정체 방지 |
| v0.3.7 | 2026-08-31 | Autumn-27 | 최대 출력 토큰; 실행 중인 워커에 메시지 전송; 아카이브 스트리밍 (OOM 수정). Core-RCE/ARTEX-original-version이 보존한 기준 버전이자 대회 후기에서 분석한 버전 |
| v0.3.6 | 2026-08-27 | Autumn-27 | LLM 테스트에서 실제 응답 확인; list_facts 페이지네이션; 도구 호출 통계 |
| v0.3.5 | 2026-08-25 | Autumn-27 | LLM 프로필별 스트리밍 토글; OpenAI Responses API 형식; LLM 원본 통신 기록 |
| v0.3.4 | 2026-08-24 | Autumn-27 | 작업 일괄 분류; 완료된 작업에서 메인 에이전트 add_intent 지원 |
| v0.3.3 | 2026-08-23 | Autumn-27 | 워커 일시 정지/취소 펜스, 일시 정지된 인텐트 상태, FIFO 진입 제어, 워커 실행 시간 제한 600 s -> 1200 s |
| v0.3.2 | 2026-08-20 | Autumn-27 | 원본 작업에서 작업 상속; 할당량 장애 조치를 갖춘 순서형 LLM 프로필 체인; 워커 일시 정지/재개/취소; 정리 작업을 포함한 작업 삭제; 작업 동시 실행 상한 |
