T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:27- Finding
Unnecessary Zoom API scopes violate least-privilege requirements
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:27-35
Vulnerability Type: Excessive OAuth permissions
Risk Level: MediumVulnerable configuration:
text 2. **Scopes Required**: In the Zoom App Marketplace (Scopes tab), add the following: - **Meetings**: - `meeting:read:admin` / `meeting:read:master` (View meetings) - `meeting:write:admin` / `meeting:write:master` (Create and update meetings) - `meeting:delete:admin` / `meeting:delete:master` (Delete meetings) - **Users**: `user:read:admin` - **Recordings**: `recording:read:admin`Technical Analysis
The Skill instructs users to grant
user:read:adminandrecording:read:admin, but none of the audited scripts calls the Zoom Users API or Recordings API. The implemented operations only authenticate and create, list, retrieve, update, or delete meetings.Enabling
auto_recording: "cloud"when creating a meeting does not require permission to read existing recordings. Consequently, the user-read and recording-read scopes exceed the minimum privileges needed for the declared and implemented functionality.The account-level Server-to-Server OAuth credentials can obtain tokens carrying all scopes assigned to the Zoom application. Any compromise of those credentials or tokens would therefore expose capabilities beyond meeting management.
Attack Path
- A user follows
SKILL.mdand grants all documented scopes to the Server-to-Server OAuth application. - An attacker obtains the Zoom client ID and client secret, or captures a valid OAuth bearer token, through an unrelated host, process, log, backup, or credential compromise.
- The attacker requests an account-level access token from Zoom if only the client credentials were obtained.
- The attacker uses the unnecessarily granted
user:read:adminorrecording:read:adminscope to call Zoom APIs that the Skill itself never uses. - The attacker accesses user o ...[truncated 479 chars]
- A user follows
- Remediation
View remediation
Remediation Suggestions
- Remove
user:read:adminandrecording:read:adminfrom the documented scope requirements and from existing Zoom application configurations. - Grant only the narrowest meeting read, write, and delete scopes required for the commands that users intend to enable.
- Do not instruct users to grant both admin and master variants indiscriminately; document which variant applies to each supported Zoom account type.
- Separate read-only and mutating deployments where practical. A deployment that only lists or retrieves meetings should not receive write or delete permission.
- Revoke existing tokens and rotate the client secret after reducing scopes so previously issued credentials cannot retain broader access.
- Add a permissions-to-command matrix to
SKILL.mdand periodically verify it against the actual API endpoints used by the code.
- Remove
