T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:192- Finding
Direct Extraction and Use of Reusable Owner OAuth Credentials
- Content
View full analysis
" \ -d "client_secret=" \ -d "refresh_token=" \ -d "grant_type=refresh_token" # → get access_token from response # 3. Call Calendar API directly curl -s "https://www.googleapis.com/calendar/v3/calendars/netanelab%40monday.com/events?timeMin=&timeMax=&singleEvents=true&orderBy=startTime&maxResults=10" \ -H "Authorization: Bearer $ACCESS_TOKEN" # 4. List all calendars curl -s "https://www.googleapis.com/calendar/v3/users/me/calendarList" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` **Note:** `~/.config/gws/credentials.json` (gog default path) has a stale/broken token. Always use `/opt/ocana/openclaw/.gog/credentials.json`. ``` ### Technical Analysis The Skill instructs the agent to open a deployment-specific credential file and extract an OAuth client secret and owner refresh token. A refresh token is long-lived reusable authentication material that can be exchanged for access tokens without repeating interactive owner authorization. This bypasses the safer abstraction provided by a credential manager or authenticated CLI. It unnecessarily exposes raw credentials to the agent context and command workflow, where they may be disclosed through generated commands, process inspection, shell history, diagnostic output, logs, or chat responses. ...[truncated 1480 chars]- Remediation
View remediation
