AX Code 받기 · 무료문서

이 페이지는 영어 문서의 번역입니다. 명령, 식별자, 예제는 그대로입니다. 런타임 7.24.4 · SDK 2.6.7. 영어 원문

보안 정책

지원되는 버전

보안 패치를 받는 것은 최신 마이너 라인뿐입니다. 더 오래된 라인의 취약점을 보고하기 전에 현재 마이너로 업그레이드합니다.

버전 지원
7.24.x 예
< 7.24 아니요

취약점 보고

보안을 진지하게 다룹니다. 취약점을 발견하면 책임 있게 보고해 주십시오.

  1. 비공개 연락: AutomatosX 연락 경로로 기밀 보안 보고 경로를 요청합니다. 공개 커뮤니티 메시지에 익스플로잇 세부 사항이나 자격 증명을 넣지 마십시오.
  2. Discord: Discord에서 보고합니다. https://discord.gg/gf9UyPxaN2

보고는 영업일 6일 안에 받았음을 알리고, 수정으로 가는 진행을 계속 알립니다.

참고: AI가 생성한 보안 보고는 받지 않습니다. 그런 보고를 제출하면 프로젝트에서 차단됩니다. 보고에는 구체적인 재현 단계가 있고, 실제 영향이 드러나야 합니다.


위협 모델

개요

ax-code는 사용자 기계에서 로컬로 실행되는 AI 코딩 도우미입니다. 셸 실행, 파일 작업, 웹 접근을 포함한 강력한 도구에 접근하는 에이전트 시스템을 제공합니다.

런타임 격리의 기본값은 full-access(샌드박스 꺼짐)이며, 파일 시스템 쓰기와 네트워크 접근은 제한이 없습니다. 이것은 신뢰하는 로컬 프로젝트를 위한 편의 태세이며, 보안 경계가 아닙니다. 신뢰할 수 없는 저장소나 사람 없는 작업에 AX Code를 쓰기 전에 workspace-write 또는 read-only를 선택합니다.

실행 격리 샌드박스

ax-code에는 AI 에이전트가 접근할 수 있는 것을 제한하는 내장 실행 격리 샌드박스가 있습니다. 모드는 세 가지입니다.

모드 동작
전체 접근(기본값) 격리를 완전히 끄고 네트워크 접근을 켭니다
워크스페이스 쓰기 워크스페이스 안의 쓰기만 허용합니다. .git와 .ax-code는 항상 보호됩니다. 네트워크는 기본적으로 꺼집니다
읽기 전용 모든 파일 변경과 셸 명령을 막습니다

주요 성질:

  • 기본 동작 — AX Code는 full-access로 시작합니다. --sandbox, AX_CODE_ISOLATION_MODE, 또는 구성이 다른 모드를 설정한 경우는 예외입니다
  • 권장하는 제한 모드 — 신뢰할 수 없거나 팀의 저장소에는 workspace-write를 사용합니다. 쓰기를 워크스페이스로 가두고 네트워크를 기본적으로 끕니다
  • 도구 수준 강제 — 모든 변경 도구(bash, edit, write, apply_patch)와 네트워크 도구(webfetch, websearch, codesearch)는 실행 전에 격리 정책을 검사합니다
  • 보호 경로 — .git와 .ax-code 디렉터리는 워크스페이스 쓰기 모드에서도 항상 쓰기로부터 보호됩니다
  • 상향 프롬프트 — 제한 모드에서 격리 위반은 조용히 실패하지 않고 승인 대화 상자를 보여 줍니다. 사용자는 구성을 바꾸지 않고 막힌 작업을 한 번 허용할 수 있습니다
  • CLI 제어 — --sandbox read-only, --sandbox workspace-write, --sandbox full-access
  • 환경 변수 — AX_CODE_ISOLATION_MODE

격리 백엔드

백엔드 동작
app(기본값) 모든 도구에 대한 이식 가능한 애플리케이션 계층 검사
os 앱 검사에 더해 bash용 커널 샌드박스(sandbox-exec를 통한 macOS Seatbelt, bwrap가 설치되면 Linux bubblewrap). OS 도구가 없으면 실패하며 닫힙니다
auto 가능하면 OS bash 래핑을 선호하고, 아니면 앱 계층만으로 돌아갑니다
{
  "isolation": {
    "mode": "workspace-write",
    "network": false,
    "backend": "auto"
  }
}

또는 AX_CODE_ISOLATION_BACKEND=os|auto|app를 설정합니다.

bash의 OS 격리는 워크스페이스 루트 밖의 쓰기를 거부하고, network: false일 때 네트워크를 거부합니다. 앱 계층 검사는 항상 계속 실행됩니다. Seatbelt나 bubblewrap이 없는 플랫폼에서는 backend: "app"나 컨테이너 또는 VM을 사용합니다.

서버 보안

  • 기본적으로 로컬 호스트만 — 서버는 127.0.0.1에 묶이며, 네트워크에서는 접근할 수 없습니다
  • 네트워크 접근에는 암호가 필요 — 0.0.0.0나 로컬 호스트가 아닌 주소에 묶으려면 AX_CODE_SERVER_PASSWORD가 설정되어 있어야 합니다. 없으면 서버는 시작을 거부합니다
  • 기본 인증이 강제됨 — AX_CODE_SERVER_PASSWORD가 설정되면 모든 API 엔드포인트에 HTTP Basic Auth가 필요합니다
  • CORS를 구성할 수 있음 — 추가로 허용할 출처는 --cors로 지정할 수 있습니다

자격 증명 저장

공급자 API 키는 PBKDF2 키 유도를 쓰는 AES-256-GCM으로 저장 시 암호화되고, 로컬 AX Code 데이터 디렉터리(~/.local/share/ax-code/)에 사용자만 접근하는 파일 권한(0600)으로 저장됩니다.

암호화 키는 로컬 기계 속성(호스트 이름, 플랫폼, 아키텍처)에서 유도됩니다. 이것은 우연히 파일을 공유하는 것과 같은 가벼운 오프라인 노출을 막지만, 호스트에 접근하는 단호한 공격자는 막지 못합니다. OS 키체인이나 하드웨어가 뒷받침하는 비밀 저장과 같지 않습니다.

MCP OAuth 토큰, 클라이언트 비밀, 계정 접근 및 새로 고침 토큰도 같은 방식으로 저장 시 암호화됩니다. 민감하지 않은 메타데이터(서버 URL, 만료 시각, 이메일, 계정 ID)는 평문으로 남습니다.

릴리스 산출물 검증

Bash 설치 프로그램(install)과 Windows PowerShell 설치 프로그램(install.ps1)은 모두 다운로드한 GitHub 릴리스 아카이브를 풀기 전에 Minisign으로 검증합니다. 릴리스 아카이브와 PowerShell 설치 스크립트 자체에 분리된 서명이 있습니다. 고정된 AX Code 릴리스 공개 키는 다음과 같습니다.

RWSlDu++afxCz01OqhYWhfo8+L8pVbSYXJBEb2zoWBuK0WACIzbGVZRO

각 설치 프로그램은 선택한 아카이브에 맞는 .minisig 자산을 다운로드하고, 검증이 실패하면 닫히며 실패합니다. minisign가 아직 PATH에 없으면, 설치 프로그램은 https://download.ax-code.com/vendor/minisign/0.12/에서 고정된 공식 Minisign 0.12 아카이브를 다운로드하고, 아카이브 SHA-256을 확인한 뒤, 캐시하기 전에 풀린 실행 파일을 다시 확인합니다. 이미 PATH에 있는 minisign 바이너리는 운영자의 도구이며 다시 해시하지 않습니다. 검증할 수 없는 릴리스 다운로드를 의도적으로 받아들일 때만 AX_CODE_SKIP_MINISIGN_VERIFY=1를 설정합니다.

편리한 한 줄 명령 irm …/install.ps1 | iex는 실행 전에 설치 스크립트를 검증하지 않습니다. 보안에 민감한 설치에서는 install.ps1와 install.ps1.minisig를 다운로드하고, Minisign으로 스크립트를 검증한 뒤 로컬에서 실행합니다(설치와 런타임 경로 참조).

유지관리자는 Minisign 비밀 키를 암호화된 채로 보관해야 합니다. macOS에서 로컬 릴리스 서명에는 암호 문구를 평문 파일이 아니라 키체인에 저장합니다.

security add-generic-password -U -a ax-release -s ax-minisign -w

AX_CODE_MINISIGN_PASSWORD가 설정되지 않으면 릴리스 도구가 그 키체인 항목을 자동으로 읽습니다.

태그로 구동되는 GitHub 릴리스 작업 흐름은 업로드 전에 아카이브에 서명합니다. 다음 저장소 비밀이 필요합니다.

AX_CODE_MINISIGN_SECRET_KEY_B64
AX_CODE_MINISIGN_PASSWORD

AX_CODE_MINISIGN_SECRET_KEY_B64는 암호화된 ax.minisign.key Minisign 비밀 키의 base64 인코딩 내용이어야 합니다. 로컬 경로는 ax.sec를 가리키는 심볼릭 링크일 수 있습니다. 작업 흐름은 그것을 임시 0600 키 파일에 쓰고, 고정된 공개 키를 검증하고, 각 릴리스 아카이브에 서명한 뒤, 맞는 .minisig 자산을 아카이브와 함께 업로드합니다.

macOS CLI 아카이브의 경우, 작업 흐름은 다음 저장소 비밀로 Apple Developer ID 인증서를 요구하고 가져옵니다.

APPLE_CERTIFICATE
APPLE_CERTIFICATE_PASSWORD
APPLE_TEAM_ID
APPLE_API_KEY_B64
APPLE_API_KEY_ID
APPLE_API_ISSUER

그 경로에서 함께 제공되는 네이티브 라이브러리는 가져온 Developer ID Application 신원으로 서명되고, macOS ZIP은 Apple의 공증 서비스에 제출되며, 바뀌지 않은 ZIP은 그다음 분리된 Minisign 서명으로 보호됩니다. ZIP 아카이브는 스테이플할 수 없으므로, 공증은 산출물 업로드 전과 .minisig 생성 전에 일어나야 합니다. Apple 서명이나 공증 자격 증명이 하나라도 없으면 릴리스 빌드는 닫히며 실패합니다.

릴리스 서명 키 이력

효력 날짜 키 ID 공개 키 상태
2026-07-19 CF42FC69BEEF0EA5 RWSlDu++afxCz01OqhYWhfo8+L8pVbSYXJBEb2zoWBuK0WACIzbGVZRO 현재
2026-07-19 2D5140E0904E48B3 RWSzSE6Q4EBRLeUmabk1YM6bzP/wn54tXE09il3d2srulrCfaB4Uyt1n 교체되어 제외
2026-06-16 5B7AB63CD6D674BE RWS+dNbWPLZ6W9TH486c9zdH84NiiuFnm4VpVTRlXoMHClyQx/fY7W2A 교체되어 제외
2026-06-16 이전 8138FAD32CAD95BA RWS6la0s0/o4gdFUZ0Bk/BkrnN8qC2CFOfLXVP5OtQTrvm1BQeOvXgao 교체되어 제외

릴리스 서명 키는 가장 최근에 2026-07-19에 교체되었습니다. 설치 프로그램과 릴리스 작업 흐름은 현재 키만 고정하므로, 퇴역한 키로 서명한 아카이브는 서명 검증에 실패합니다. 교체 뒤에 유지관리자는 script/resign-release-assets.ts로 역사적 릴리스 아카이브에 다시 서명해야 합니다. 그래서 공개된 모든 릴리스가 퇴역한 키를 신뢰하지 않고 고정된 키에 대해 검증됩니다.

기존 릴리스의 .minisig 자산을 현재 키로 다시 서명하고 다시 업로드하려면 다음을 사용합니다.

tsx script/resign-release-assets.ts --tag v5.5.0 --key-dir ~/signkey

범위

범위 안

범주 예
샌드박스 우회 허용된 경계 밖에서 명령을 실행하거나 파일을 쓰기
인증 우회 서버 모드에서 AX_CODE_SERVER_PASSWORD를 우회하기
키 유출 로컬 기계 접근 없이 저장된 API 키를 추출하기
경로 탈출 의도한 작업 디렉터리 밖을 읽거나 쓰는 도구
명령 주입 격리를 우회해 임의의 명령을 실행하도록 만든 입력
의존성 취약점 실현 가능한 공격 경로가 있는, 함께 제공되는 의존성의 알려진 CVE

범위 밖

범주 이유
LLM 공급자의 데이터 처리 구성한 공급자로 보낸 데이터는 그 공급자의 정책이 다스립니다
MCP 서버 동작 사용자가 구성하는 외부 MCP 서버는 우리의 신뢰 경계 밖입니다
악의적인 구성 파일 구성은 사용자가 제어합니다. 그것을 바꾸려면 로컬 접근이 필요합니다
사회 공학 신뢰할 수 없는 저장소를 통한 프롬프트 주입은 알려진 LLM 에이전트 한계입니다
OS 수준 샌드박스 탈출 격리 샌드박스는 애플리케이션 계층에서 동작하며, OS 프로세스 계층이 아닙니다

엔터프라이즈 보안 능력

AX Code는 다음 강화 기능과 함께 엔터프라이즈 사용을 위해 설계되었습니다.

  • 세밀한 권한: 에이전트별 규칙과 패턴 기반 규칙 집합(allow/deny/ask)입니다. 보안 에이전트의 기본값은 읽기 전용입니다. 규칙은 프로젝트, 에이전트, 승인 목록에 걸쳐 평가됩니다.
  • 세션 감사 추적: 모든 도구 호출, 권한 결정, 파일 변경이 스냅샷과 함께 SQLite에 기록됩니다. 규정 준수 검토를 위해 재생, 분기, 내보내기를 지원합니다.
  • 결정론적 리팩터링(DRE): impact_analyze, refactor_plan, refactor_apply(섀도 워크트리와 lint, typecheck, 테스트)가 감사할 수 있고 되돌릴 수 있는 변경을 제공합니다.
  • 자격 증명 관리: 모든 키와 토큰에 AES-256-GCM 암호화입니다. InstanceState를 통한 디렉터리별 격리입니다.
  • 선택적 샌드박스 강제: bash 명령 구문 분석(tree-sitter)이 있는 애플리케이션 수준 격리입니다. 샌드박스 경계를 강제하려면 workspace-write 또는 read-only를 선택합니다. 보호 경로(.git, .ax-code)는 샌드박스 모드에서 적용됩니다.
  • 서버 강화: 기본적으로 로컬 호스트만입니다. 원격 접근은 Basic Auth로 암호가 보호됩니다.
  • 코드 인텔리전스와 검사: 내장된 비밀과 하드코드 감지, 의존성 영향 분석입니다.

CodeQL이 돕는 코딩 피드백

저장소는 풀 리퀘스트, dev로의 푸시, 예약된 검사, 수동 디스패치에 대해 CodeQL을 배경 보안 분석 계층으로 실행합니다. CodeQL은 실시간 LSP나 코드 인텔리전스 경로의 일부가 아닙니다. 소스 변경이 안정된 뒤에 다루는 편이 나은, 데이터 흐름, 오염, 보안 품질 발견을 위한 더 느리고 깊은 증거 원천입니다.

현재 작업 흐름이 분석하는 것은 다음과 같습니다.

  • JavaScript와 TypeScript 런타임, TUI, SDK, 통합, 스크립트 코드입니다.
  • GitHub Actions 작업 흐름과 로컬 복합 액션입니다.
  • crates/ 아래의 Rust 크레이트입니다. 네이티브 애드온과 TUI 코드가 일관되게 추출되도록 수동 Cargo 빌드를 사용합니다.

의도한 개발자 경험은 다음과 같습니다.

  1. PR 작성자는 기존의 타입 검사, 결정론적 테스트, OSV 의존성 검사, 저장소 구조 가드와 함께 GitHub 코드 검사에서 CodeQL 알림을 받습니다.
  2. 유지관리자는 CodeQL을 단단한 병합 게이트로 다루기 전에 처음 결과를 분류합니다. 그래서 새 발견이 시끄럽기보다 유용합니다.
  3. 미래의 AX Code 검토와 디버그 흐름은 CodeQL SARIF나 GitHub 코드 검사 알림을, source: "codeql", 규칙 id, 심각도, 파일, 줄, 데이터 흐름 추적, 분석된 커밋 SHA 같은 출처 필드가 있는 명시적 보안 증거로 받아들일 수 있습니다.
  4. CodeQL 증거는 로컬 security_scan, hardcode_scan, LSP 진단, 그래프가 뒷받침하는 영향 분석 옆에 보여야 하며, 그 가운데 무엇을 몰래 대체해서는 안 됩니다.

사용자 지정 CodeQL 질의를 추가할 때는 넓은 lint 스타일 검사보다 저장소에 특정한 보안 경계를 선호합니다. 가치가 높은 대상에는 샌드박스 탈출 경로, 정제되지 않은 인자가 있는 명령 실행, 워크스페이스 봉쇄 주변의 경로 탈출, 자식 프로세스로의 비밀과 환경 전파, 빠진 서버 경로 검증이 있습니다.

완전한 엔터프라이즈 거버넌스(RBAC, 코드로서의 정책, SIEM 내보내기, 암호학적 감사)는 AX Trust와 통합합니다. 이것은 로드맵 항목입니다.

격리 구성과 런타임 동작은 docs/guides/sandbox.md를 보십시오.