보안

Agent NAS는 프롬프트 인젝션을 막지 못합니다. 인젝션 이후에 일어나는 일을 제한합니다. 좁은 리스가 실행이 건드릴 수 있는 범위를 묶고, 브랜치가 실수를 되돌릴 수 있게 하며, Rule of Two가 신뢰할 수 없는 콘텐츠를 읽은 세션이 민감한 데이터와 외부로 나가는 경로를 함께 갖지 못하게 하고, 추적 가능한 기록이 남습니다.

v0.2 명세 초안 최종 수정

범위와 신뢰 가정

  • 우리가 지키는 것: NAS 안의 데이터와 이력, 권한의 경계, 기록의 무결성, 메모리의 추적 가능성.
  • 우리가 지키지 않는 것: 에이전트가 NAS 밖에서 하는 일, 컴퓨팅 자체의 격리(샌드박스의 몫), 모델 제공자 쪽에서 일어나는 모든 일.
  • 신뢰 가정: 신뢰 컴퓨팅 기반(TCB)은 NAS 게이트웨이, 정책 엔진, 기록 서비스입니다. 호스트는 침해되지 않았고, 샌드박스는 컴퓨팅을 격리합니다. TCB가 침해되면 이 페이지의 보장은 더 이상 성립하지 않습니다.

Rule of Two: 세션 불변식

세 가지 속성이 있습니다. [A] 세션이 신뢰할 수 없는 콘텐츠를 읽었다, [B] 리스가 민감한 데이터를 읽도록 허용한다, [C] 리스가 보호된 상태를 바꾸거나 외부와 통신하도록 허용한다. 한 세션에서 셋이 모두 성립하면 C를 일으키는 호출은 자동으로 통과시키지 않습니다.

시나리오ABC결과
웹 페이지를 요약해 브랜치에 노트로 남긴다예예아니오 (브랜치뿐)자동: 브랜치 안의 쓰기는 C로 치지 않습니다.
웹 페이지를 읽은 뒤 main에 병합을 제안한다예예예Human Gate.
공개 데이터만 읽고 임시 영역에 쓴다예아니오아니오자동.
외부 이메일을 읽은 뒤 이메일을 보낸다(외부 전송)예예예게이트. secret이 관련되면 거부.

이것은 Meta의 Agents Rule of Two를 스토리지 경계에서 구현한 것입니다. Meta 스스로도 이것이 위험을 줄이기 위한 경험칙이지 종착점이 아니며 최소 권한의 대체물이 아니라고 강조하는데, 우리도 같은 방식으로 씁니다. 메커니즘은 Trust Labels에 있습니다.

위협 모델

위협NAS가 강제할 수 있는 것NAS가 할 수 없는 것남는 위험
T1 간접 프롬프트 인젝션(파일, 웹 페이지, 이메일을 통한)Rule of Two, 리스 범위 제한, 브랜치, 게이트.인젝션이 일어나는 것을 막거나, 일어난 뒤 리스 안에서 벌어지는 악의적인 행동을 막는 것.리스 안에서의 오용.
T2 자격 증명 유출(에이전트가 장기 키를 읽음)장기 자격 증명은 실행의 손에 들어가지 않습니다. 시크릿 스캐너가 secret으로 표시하고, TTL은 짧습니다.에이전트가 리스 안에서 데이터를 승인된 외부 전송 경로로 보내는 것을 막는 것.리스 안에서 빠져나가는 데이터.
T3 과도한 권한과 실수좁은 리스, 브랜치, 소프트 삭제, 모든 리스 바깥의 스냅샷.NAS 밖의 부작용을 되돌리는 것.NAS를 넘어서는 결과.
T4 메모리 오염(역할 간 확산 포함)출처와 오염 표시, 격리, 검토된 것만 자동 로드, 롤백.틀렸지만 그럴듯해 보이는 사실을 알아보는 것.검토자가 통과시킨 오염.
T5 도난되거나 재생된 리스짧은 TTL, 취소 가능, 선택적인 보유자 바인딩(DPoP, mTLS).TTL 안에서의 악용을 막는 것.TTL의 시간 창.
T6 승인 피로와 형식적 승인드문 게이트, NAS가 diff를 직접 렌더링, 다이제스트에 묶인 승인, 승인율 모니터링.사람이 꼼꼼히 보게 만드는 것.사람의 실수.
T7 로그 변조해시 체인, 선택적인 외부 앵커링.앵커링이 없을 때 root가 로그를 파괴하는 것을 막는 것.악의적인 관리자.
T8 데이터 유출(외부 전송, 공유, 검색 결과)외부 전송에는 리스 동작과 게이트가 필요하고, secret은 나갈 수 없으며, 파생물은 라벨을 물려받습니다.사람이 승인한 뒤의 유출과 은닉 채널을 막는 것.승인 이후의 유출.
T9 공급망(스킬, MCP 서버, 플러그인, 모델)스킬과 외부 MCP 서버의 콘텐츠는 external로 취급하고, 스킬 디렉터리는 커밋에 고정할 수 있으며, 런타임 매니페스트는 기록에 남습니다.서드파티 코드가 무해함을 보장하는 것.고정된 악성 버전.
T10 자원 고갈(브랜치 폭탄, 소진된 예산, 읽기 루프)쿼터, TTL, 예산, 서킷 브레이커.정당한 대규모 작업과 폭주를 구분하는 것.국지적인 서비스 거부.

통제

  • 정책 엔진: 결정론적(Cedar나 Rego 방식)이며 기본은 거부이고, 거부할 때는 읽을 수 있는 이유와 일치한 규칙을 제시합니다. LLM을 호출하지 않습니다.
  • 자격 증명 브로커: 장기 키는 브로커에 남고, 승인된 외부 전송 동작 안에서만 실행에 수명이 짧은 하위 토큰을 발급합니다.
  • 격리와 키: 역할마다 홈과 경로 공간이 따로 있고, sensitive 보존 등급은 별도의 키 도메인을 씁니다.
  • 공급망: 스킬, MCP 서버, 플러그인의 콘텐츠는 external로 취급하며, 실행을 시작할 때 쓰인 스킬과 버전을 기록에 남깁니다.

솔직한 한계

  1. 프롬프트 인젝션에 대한 방어가 아닙니다. 결과를 제한하고 눈에 보이게 할 뿐입니다.
  2. 리스 안의 정당한 권한도 오용될 수 있습니다.
  3. NAS 밖의 부작용에 대해서는 할 수 있는 것이 없습니다. 이미 보낸 이메일, 이미 호출한 API 같은 것입니다.
  4. 은닉 채널과 부채널은 범위 밖입니다.
  5. TCB가 침해되면 보장은 무너집니다.
  6. 사람도 실수합니다. 게이트는 그 위험을 낮출 뿐 없애지는 못합니다.
  7. 오염 표시는 보수적이어서 마찰과 오탐을 낳습니다. 조정과 눈에 보이는 거부 이유가 필요합니다.
  8. 암호학적 파기는 우리가 통제하는 사본만 보호합니다.

사고 대응

  • 서킷 브레이커: revoke_run과 revoke_role이 리스를 즉시 취소하고 브랜치를 동결합니다.
  • 롤백: 영향받은 트리를 이전 커밋으로 되돌립니다.
  • 추적: 읽기 매니페스트와 기록 체인으로 실행이 무엇을 읽고 무엇을 썼으며 어떤 노트를 건드렸는지 찾습니다.
  • 정리: Cascade Forget으로 영향받은 파생물을 삭제하고 보고서를 발급합니다.

관측성과 감사

  • 세 가지 데이터: 기록(이벤트), 읽기 매니페스트(입력의 집합), 메트릭과 트레이스.
  • **explain(commit):** 커밋을 만든 실행과 리스, 거친 게이트, 읽은 것, 의존하는 입력을 반환합니다.
  • 기존 관측성과의 통합: 하나의 실행은 하나의 OpenTelemetry GenAI 스팬에 대응하고 리스와 게이트는 이벤트로 붙습니다. 기록은 JSON Lines로 내보내거나 SIEM에 보낼 수 있습니다.
  • 메트릭: 리스 발급률과 거부율, 게이트 대기열 길이와 승인율과 승인 지연, 브랜치 수와 나이, 인덱스 최신성, 예산 소비, 기록 체인 검증 결과.
  • 프라이버시와 보존: 기본적으로 메타데이터만 기록하고 콘텐츠는 기록하지 않습니다. 기록의 보존과 콘텐츠의 삭제는 독립적이며, 기록 자체를 읽으려면 리스가 필요합니다.

이 페이지 인용하기

사람, 검색 엔진, 에이전트를 위한 고정 주소와 권장 인용 형식입니다.

권장 인용 형식
Agent NAS project. “보안.” agentnas.com, 2026-11-11. https://agentnas.com/ko/security/