A2A 승인을 가로채는 Loopjacking, 승인자가 20을 승인했는데 2,000이 실행됐다

Loopjacking in A2A Implementations: Hijacking Human-in-the-Loop Approvals

A2A 승인을 가로채는 Loopjacking, 승인자가 20을 승인했는데 2,000이 실행됐다

LangGraph Agent Server의 A2A 경로에서 승인자가 20단위 송금을 승인한 뒤, maker가 같은 Task와 tool-call ID로 인자를 2,000단위로 바꾸는 공격이 재현됐다. 승인자의 결정은 현재 스레드 상태에서 재구성된 호출에 그대로 사용됐고, mock ledger에는 2,000이 기록됐다. A2A 명세는 Task ID가 승인 범위를 보장하지 않는다고 명확히 했지만, 구현이 실행 직전에 승인된 작업과 현재 작업을 비교하지 않으면 Loopjacking이 성립한다.

승인자의 권한은 A에 대해 내려진 결정에 붙어 있었다. 실행 경로는 그 권한을 현재 호출인 B에 사용했지만, B가 그 결정의 범위 안에 있다는 것을 증명하지 않았다.

이 날의 다른 글

2026-09-25