drift: AI 에이전트를 위한 지속적인 위임(mandate) 강제화
요약
본 글은 AI 에이전트가 지출하는 자금에 대한 지속적인 위임(mandate) 강제화의 필요성을 다룹니다. 현재 프로토콜은 초기 검증 후 에이전트가 독자적으로 행동할 때, 지출 권한이 대체되지 않았는지 충분히 검증하지 못하는 보안 취약점이 있습니다. 'drift'는 이러한 문제를 해결하기 위해 행동 전에 금액, 수취인, 청중 등 6가지 규칙을 강제 확인하며, 안전한 자금 지출에 필수적인 장벽 역할을 합니다.
핵심 포인트
- AI 에이전트의 자금 지출 시 지속적 위임 검증 필요성 제기
- 현재 프로토콜은 초기 검증 후 권한 대체 여부를 충분히 검증하지 못함
- 'drift'는 행동 전 6가지 핵심 규칙(amount, payee 등)을 강제 확인하는 메커니즘 제공
- Google AP2 SDK의 취약점을 분석하며 보안 장벽 구축의 중요성 강조
🛡️ drift — AI 에이전트를 위한 지속적인 위임(mandate) 강제화
에이전트에게는 지불할 대상, 금액, 통화, 그리고 기한까지의 위임이 부여됩니다. AP2는 이 위임을 서명 시점에 한 번 검증합니다. 그 이후 에이전트는 독자적으로 행동합니다.
이는 이론적인 내용이 아닙니다. Google의 AP2 Python SDK에서 verify_chain은 터미널 홉(terminal hop)에서 expected_aud를 강제한다고 문서화하고 있습니다. 하지만 verify_expected_claims는 오직 typ in TYP_TERMINAL일 때만 실행되며, 페이로드에 cnf가 포함될 경우 SDK 자체가 생성하는 kb+sd-jwt+kb 토큰은 TYP_INTERMEDIATE로 분류됩니다:
aud in token : https://attacker.example/ap2
expected_aud : https://honest-merchant.example/ap2
→ 잘못된 청중(audience)에 대한 토큰이 수락됨
에이전트가 지출 권한을 신뢰하는 프로토콜은 그 권한이 대체되지 않았는지 검증하지 않습니다. drift는 이를 합니다.
행동 전에 확인되는 6가지 규칙들은 기본적으로 거부됩니다:
amount · payee · audience · currency · window · intent
금액의 정수 소단위(Integer minor units)로 지불. 동결된 위임(Frozen mandate). 체인 지문이 있는 추가 전용 원장(Append-only ledger with a chain fingerprint).
MCP: drift_check · drift_session · drift_explain. 표준 라이브러리만 사용 가능.
무료: 하루 100회 검사, 등록 필요 없음. 136개 테스트 통과 (21 core, 41 protocol, 26 rate limit, 48 x402).
코드 및 상세 설명: https://github.com/mrpkk/drift
결함 분석: https://mrpkk.github.io/drift/ap2-expected-aud-not-enforced/
만약 귀하의 에이전트가 돈을 지출한다면, 이 장벽(barrier)이 필요합니다.
이 격차가 실제인 이유: Google의 AP2 Python SDK에서는 키에 바운드된 홉(key-bound hops)에 대해 청중 검사(audience check)를 건너뛰기 때문에, 다른 청중을 위해 발행된 토큰이 수락됩니다. 재현 가능한 사례와 함께한 전체 분석은 프로젝트 사이트에서 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기