OpenShell: 안전한 LLM 에이전트를 위한 프로세스 외 집행

OpenShell: 안전한 LLM 에이전트를 위한 프로세스 외 집행

OpenShell은 프로세스 외 집행을 통해 안전한 에이전트 런타임을 제공

OpenShell은 신뢰 경계 내에서 LLM 에이전트를 배포할 수 있게 해주는 보안 및 런타임 레이어입니다. 시스템 프롬프트에 의존하는 기존 에이전트 안전 방법과 달리, OpenShell은 에이전트 프로세스 외부에서 정책을 집행하는 "슈퍼바이저"를 사용하여 프롬프트 인젝션이나 탈옥으로 에이전트가 손상되더라도 보안 제약이 유지되도록 합니다.

NemoClaw 청사진 패턴

NemoClaw은 특화된 에이전트를 구축하기 위한 공개 청사진입니다. 완전한 NemoClaw 청사진은 세 가지 교체 가능한 구성 요소로 이루어집니다:

  1. The Harness: 계획 및 도구 호출을 담당하는 에이전트 루프(예: OpenClaw, Hermes, 또는 LangChain DeepAgents).
  2. The Model: 일반적으로 NVIDIA Nemotron 모델인 추론 엔진.
  3. The Runtime: 샌드박싱, 정책 집행 및 네트워크 격리를 처리하는 OpenShell.

사용 사례에 따라 Harness와 Model은 교체할 수 있지만, OpenShell은 에이전트가 정의된 보안 매개변수 내에서 작동하도록 보장하는 일관된 런타임 역할을 합니다.

LangChain DeepAgents를 Harness로 사용

LangChain의 Deep Agent 프레임워크는 장기 작업을 위해 설계된 모델에 구애받지 않는 Harness입니다. 이는 다음과 같은 프로덕션 수준 에이전트 패턴을 구현합니다:

  • Planning Loops: 할 일 목록을 통해 작업을 추적하는 구조화된 프로세스.
  • Sub-agents: 메인 에이전트가 하위 작업을 위해 특화된 에이전트를 생성할 수 있는 기능.
  • Integrated File Systems: 상태와 데이터를 관리하기 위해 파일을 읽고 쓰는 기능.

OpenShell과 결합될 때, 이러한 기능은 신뢰 경계 내에서 제한되어 에이전트가 호스트 머신의 민감한 데이터에 접근하는 것을 방지합니다.

프로세스 외 집행 vs. 프롬프트 기반 안전

전통적인 에이전트 안전은 시스템 프롬프트(예: "당신은 X를 하면 안 됩니다")에 의존합니다. LLM은 조건부 확률 기계이기 때문에 프롬프트 인젝션을 통해 이러한 규칙을 무시하도록 조작될 수 있습니다.

OpenShell은 이를 프로세스 외 집행으로 대체합니다. 슈퍼바이저 구성 요소가 에이전트보다 먼저 시작되고, 에이전트를 제한된 자식 프로세스로 실행합니다. 슈퍼바이저는 네트워크 연결, 파일 쓰기, 추론 호출 등 모든 행동을 정책에 따라 평가한 뒤 실행합니다. 집행이 에이전트 프로세스 외부에서 이루어지므로, 에이전트는 내부 상태나 지시와 관계없이 이러한 규칙을 우회할 수 없습니다.

슈퍼바이저 제어의 네 가지 기둥

OpenShell 슈퍼바이저는 다음 공격 표면을 제어합니다:

1. 네트워크 격리

OpenShell은 "기본 차단" 방식을 사용합니다. 목적지가 명시적으로 허용 목록에 추가되지 않는 한 샌드박스에서 트래픽이 외부로 나갈 수 없습니다(예: 특정 검색 API 또는 추론 엔드포인트). 이는 데이터가 무단 외부 서버로 유출되지 않음을 보장하는 검증 가능한 약속을 컴플라이언스 팀에 제공합니다.

2. 파일 시스템 샌드박싱

에이전트는 전용 작업 공간 내에서만 동작합니다. 호스트 디렉터리는 샌드박스에 마운트되지 않으므로 에이전트가 호스트의 홈 디렉터리, SSH 키 또는 환경 파일에 접근할 수 없습니다.

3. 관리형 추론 호출

모든 모델 호출은 관리형 내부 엔드포인트(inference.local)를 통해 라우팅됩니다. 슈퍼바이저가 실제 라우팅 목적지를 결정하여 외부 LLM API에 대한 제공자 자격 증명이 에이전트에 노출되지 않도록 합니다.

4. 자격 증명 관리

API 키는 샌드박스 내 디스크에 저장되지 않습니다. 정책에 정의된 경로를 통해 슈퍼바이저가 런타임에만 주입합니다. 에이전트가 손상되더라도 디스크에 지속적인 비밀이 없어 탈취당할 위험이 없습니다.

OpenShell 정책 구현

OpenShell의 정책은 YAML 파일로 정의되며, 코드처럼 취급됩니다(리포지토리에서 버전 관리 및 풀 리퀘스트를 통한 검토 가능).

  • 네트워크 및 추론 정책: 샌드박스를 재시작하지 않고도 핫 리로드가 가능합니다.
  • 파일 시스템 정책: 샌드박스 시작 시 잠기며, 변경하려면 샌드박스를 재생성해야 합니다.

정책을 샌드박스에 배포하려면 openshell policy set 명령을 사용하여 샌드박스 이름을 특정 YAML 정책 파일에 연결합니다.


요약: OpenShell은 슈퍼바이저를 사용해 에이전트 프로세스 외부에서 네트워크, 파일, 자격 증명 정책을 집행함으로써 LLM 에이전트에 안전한 런타임을 제공하고, 프롬프트 인젝션 및 탈옥 공격을 방지합니다.

제목: OpenShell: 안전한 LLM 에이전트를 위한 프로세스 외 집행

Sources