AI Briefing

LangGraph Agent Server, 승인 후 인자 변형으로 권한 우회 가능한 'Loopjacking' 취약점 발견

·2026.09.22 01:00

핵심 내용

연구자가 LangGraph Agent Server에서 승인 후 작업 인자 변형을 통해 권한을 우회하는 'Loopjacking' 공격을 시연했다.

1 / 4

자세히 보기

취약점 메커니즘

'Loopjacking' 공격은 LangGraph Agent Server가 인간 승인을 특정 도구 호출에 바인딩하는 방식의 허점을 악용한다. 통제된 테스트에서 공격자('Maker')는 $20 송금과 같은 무해한 작업을 제출해 인간 개입(Human-in-the-loop) 인터럽트를 유발했다. 작업이 TASK_STATE_AUTH_REQUIRED 상태일 때, 공격자는 LangGraph 전용 message.command.update 메시지를 사용해 작업 인자를 공격자 계정으로의 $2,000 송금 등 악성 동작으로 변경했다. 이후 인간 승인자가 승인을 제출하면, 시스템은 승인된 상태가 아닌 현재 (변경된) 작업 상태를 기반으로 도구 호출을 재구성하여 무단 동작을 실행했다. 출처는 message.command.update가 Agent Server 명령어일 뿐, 일반적인 A2A 승인 원시(primitive)가 아님을 강조한다.

영향받는 버전 및 범위

  • 영향받는 소프트웨어: LangGraph Agent Server.
  • 증거: 131개 안정화 휠(wheel)의 해시 검증 스캔 결과, 0.7.5부터 0.13.4까지 130개 릴리스에서 관련 전달 경로가 존재함을 확인했다. 다만 출처는 이를 소스 코드 증거로 명시하며 런타임 시연은 아님을 밝힌다. 런타임 테스트에서는 0.14.0을 포함해 샘플링된 12개 버전에서 취약점이 확인되었다. 관련 코드 경로가 존재하지 않았던 0.7.4는 영향을 받지 않았다.
  • 프로토콜 맥락: A2A 사양 업데이트 PR #2081 (2026년 7월 30일 병합) 이전에는 승인 범위를 정의할 책임을 명시하지 않아 구현상 모호성이 존재했다. 출처는 이것이 A2A 프로토콜의 핵심 취약점이 아닌 사양 명확성 부족 문제임을 분명히 한다.

완화 및 수정 사항

A2A 사양은 섹션 7.6.4를 업데이트하여 AUTH_REQUIRED가 단순한 조정 상태일 뿐, 구속력 있는 승인이 아님을 명확히 했다. 출처는 개발자에게 다음 사항을 권장한다:

  • 작업 바인딩 승인: 승인 시점의 정규화된 작업(도구 이름, 인자, 주체) 해시를 저장한다.
  • 실행 시점 검증: 디스패치 직전 저장된 해시를 현재 작업과 비교한다. 불일치 시 거부한다.
  • 불변 디스패치 큐: 승인 시 해결된 불변 작업을 큐에 넣어, 디스패처가 가변적인 작업 상태가 아닌 큐에 있는 항목만 실행하도록 보장한다.
  • 정책 제어: 작업이 승인 대기 중일 때 권한 없는 역할(예: 'Maker')의 command.update 메시지를 거부한다. 출처는 승인 중 메이커 업데이트를 거부하는 지원되는 Auth 정책이 테스트에서 공격을 성공적으로 차단했다고 언급한다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.