피드로 돌아가기
Dev.toSecurity
원문 읽기
OpenClaw의 device-pair 플러그인이 callerScopes 파라미터 전달을 누락해 operator.pairing 권한으로 operator.admin 스코프 승인 가능한 CVSS 9.9 권한 상승 취약점 발생
When /pair approve Bypasses the Scope Guard
AI 요약
Context
OpenClaw의 approveDevicePairing 함수는 callerScopes 파라미터를 선택적으로 받아 권한을 검증하는 견고한 설계를 갖추고 있었다. 하지만 이 함수를 호출하는 /pair approve 슬래시 커맨드 경로가 callerScopes를 전달하지 않았고, 함수의 선택적 파라미터가 누락 시 호출자를 신뢰한다는 가정과 충돌하면서 보안 검증 우회가 발생했다.
Technical Solution
- 선택적 callerScopes 파라미터를 필수 파라미터로 변경: 함수 서명을 수정해 모든 호출자가 권한 정보를 명시적으로 전달하도록 강제
- /pair approve 슬래시 커맨드에서 callerScopes 전달: gatewayClientScopes를 approveDevicePairing 함수의 callerScopes 인자로 전달
- 각 권한 경로별 독립적 테스트 추가: RPC, 슬래시 커맨드, API 엔드포인트, cron 핸들러 각각에 대한 권한 검증 테스트
- 권한 검증 로직의 일원화: 권한 검증 여부를 함수 호출자의 선택이 아닌 함수 구현으로 관리
Key Takeaway
선택적 보안 파라미터는 호출자에게 누락할 기회를 제공하므로 권한 검증이 필요한 함수에서는 필수 파라미터로 강제해야 하며, 같은 동작을 여러 경로로 제공할 때 각 경로가 동일한 권한 검증을 수행하는지 독립적으로 테스트해야 한다.
실천 포인트
다중 호출 경로(API, 슬래시 커맨드, RPC 등)를 지원하는 권한 관련 시스템에서 신뢰 부여 작업(pairing, provisioning)을 구현할 때, 권한 검증 파라미터를 선택적으로 설계하지 말고 모든 진입점에서 동일하게 callerScopes와 같은 권한 정보를 필수로 전달 및 검증하도록 강제하면 편의성 래퍼 레이어에서 발생하는 인증 우회 취약점을 근본적으로 차단할 수 있다.