T05 · Unauthorized Access and Privilege Escalation
Error
- Location
- SKILL.md:550
- Finding
- Published Projects Expose Privileged MCP Tools Without Authentication## Vulnerability Details **File Location**: `SKILL.md:550-586` **Supporting Location**: `wodeapp-ai-skill.json:70-76` **Vulnerability Type**: Missing authentication and insufficient authorization **Risk Level**: High ### Vulnerable Code Snippet ```markdown ### 3. Project-Level MCP (Per-Project, No Auth Needed) Each published project exposes its own MCP server at its subdomain. The AI Agent connects and **auto-discovers** all project capabilities — data CRUD, workflows, AI, TTS, video, and digital human. ```json { "mcpServers": { "my-project": { "type": "sse", "url": "https://my-project.wodeapp.ai/mcp" } } } ``` **Auto-discovered tools per project:** | Category | Tools | Description | |----------|-------|-------------| | Data CRUD | `query_{col}` / `create_` / `update_` / `delete_` | Auto-generated from project collections | | Workflows | `run_workflow_{id}` + `get_workflow_status` + `get_workflow_schema` | Auto-extracted with input schemas, model override, wait-for-result | | AI | `ai_chat` / `ai_generate_image` / `ai_generate_json` | Text, image, JSON generation | | TTS | `tts_generate` / `tts_list_voices` | Text-to-speech with voice selection | | Video | `video_task_create` / `video_task_status` / `video_providers` | Unified Video API (replaces kling_*) | | Digital Human | `kling_avatar` | Portrait + audio → talking head video | | Custom Components | `component_create` / `component_list` / `component_get` / `component_delete` | AI-generate React components on demand | | Feishu Chat | `feishu_send` / `feishu_send_card` / `feishu_list_chats` | Send messages/cards to Feishu groups | | Feishu Bitable | `feishu_bitable_list_tables` / `feishu_bitable_list_records` / `feishu_bitable_create_record` / `feishu_bitable_update_record` / `feishu_bitable_search` | CRUD on Feishu spreadsheet data | | Feishu Docs | `feishu_doc_create` / `feishu_doc_read` | Create and read Feishu documents | | WeCom | `wecom_send` / `wecom_send_image` / `wecom_ ...[truncated 3920 chars]
- Remediation
- ## Remediation Suggestions 1. Require authentication for every project MCP and workflow request. A project subdomain must never serve as the sole authorization mechanism. 2. Issue project-scoped credentials or short-lived signed capability tokens with explicit audience, project, tool, action, and expiration claims. 3. Enforce server-side authorization independently for every tool invocation rather than relying only on authentication at the MCP connection layer. 4. Apply least-privilege scopes, separating permissions such as: - Data read, create, update, and delete. - Workflow discovery and execution. - AI or media generation. - Page and component modification. - Enterprise messaging. - Document and organizational-directory access. 5. Disable mutation, messaging, organizational-data, and billable-generation tools for anonymous or public access by default. 6. Make public sharing opt-in and restrict shared capabilities to explicitly selected read-only tools or workflows. 7. Protect `/mcp/tools` and workflow-schema endpoints when their output reveals private collections, workflow structure, actions, or integrations. 8. Add per-project rate limits, spending limits, execution quotas, audit logs, anomaly detection, and immediate token revocation. 9. Require additional confirmation or stronger authorization for destructive operations, external messaging, and high-cost generation. 10. Review existing published projects and rotate or revoke associated access capabilities after authentication is introduced.
