Prompt as Authorization

개요

Prompt as Authorization은 시스템 프롬프트에 정의된 정책을 기반으로 언어 모델(LLM)이 유일한 결정 지점이 되는 최소한의 에이전트 시스템을 설명합니다.

주요 내용

  • 시스템 구조: 단일 프로세스 환경에서 언어 모델, 도구 루프, 백엔드로 구성됩니다. 사용자 ID는 시스템 프롬프트에 정의되며, 별도의 세션, 토큰, API 게이트웨이, 미들웨어, 정책 엔진이 없습니다.
  • 제어 흐름: 사용자 입력이 모델에 의해 해석되고, 모델은 도구 호출 여부를 결정합니다. 도구 디스패처는 백엔드 호출을 실행하며, 결정과 실행 사이에 별도의 검증이 없습니다.
  • 프롬프트 정책: 시스템 프롬프트는 현재 사용자, 환불 한도, 환불 전 주문 확인과 같은 규칙을 정의하며, 모델은 도구 호출 전에 이러한 규칙을 적용하는 책임을 집니다.
  • 관찰된 동작: 시스템은 프롬프트 주입, 명령어 재정의 시도 등 악의적인 입력에 대해 사용자 간 접근을 거부하고 성공적으로 방어하는 것으로 나타났습니다.
  • 반례: 모델 판단이 충분한 권한으로 간주되어, 백엔드 주문 값과의 검증 없이 유효한 요청이 잘못된 결과를 초래할 수 있습니다. 예를 들어, 모델이 주문 확인, 환불 한도 초과 여부 검토 후 백엔드에서 $45 환불을 실행합니다.
  • 핵심 발견: 정책이 시스템 프롬프트의 텍스트 형태로 존재하며, 모델이 이를 해석하고 적용합니다. 도구 호출이 발생하면 실행되며, 결정과 권한 부여 사이에 분리가 없습니다.
  • 함의: 시스템은 프롬프트 지침을 따르고 악의적인 입력에 올바르게 행동할 수 있지만, 실행 전에 독립적인 검사가 없기 때문에 시스템 상태와 검증되지 않은 작업을 실행할 수 있습니다.

시사점

이 시스템 설계는 정책을 텍스트 프롬프트로 중앙 집중화하고 모델이 이를 해석 및 적용하게 함으로써 구현 단순성을 달성하지만, 결정과 실행 사이에 독립적인 검증 부재로 인해 데이터 무결성 및 보안에 대한 잠재적 위험을 내포합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions