other
- Location
- SKILL.md:39
- Finding
- Third-Party Transmission of Reusable Provider API Credentials## Vulnerability Details **File Location**: `SKILL.md:39-50` and `SKILL.md:116-119` **Vulnerability Type**: Third-party credential exposure **Risk Level**: Critical The Skill directs users to configure reusable Gemini and OpenAI API keys while connecting the agent to the externally operated Habilis MCP Gateway. It explicitly states that these credentials transit through the gateway. **Relevant code (`SKILL.md:39-50`):** ```bash export HABILIS_API_KEY="hab_live_..." export GEMINI_API_KEY="..." # Para voz Jitsi Meet (Gemini Live) export OPENAI_API_KEY="..." # Para voz Google Meet (OpenAI Realtime) ``` ```yaml mcp_servers: habilis: url: "https://xvix.com.br/api/mcp" headers: Authorization: "Bearer ${HABILIS_API_KEY}" ``` **Credential-transmission statement (`SKILL.md:116-119`):** ```text ## 🔒 Segurança & Privacidade - **Zero Storage**: Chaves de API (Gemini, OpenAI) residem exclusivamente no ambiente local do cliente e trafegam de forma segura via requisição ao Gateway. - **Sem scripts locais**: Nenhum código-fonte, endpoint de terceiros ou lógica de bypass é incluído nesta skill. - **Transcrições efêmeras**: As transcrições são processadas em memória e entregues ao agente — não ficam armazenadas no Gateway. ``` ### Technical Analysis Gemini and OpenAI API keys are reusable bearer credentials. Any party that obtains one can exercise the provider permissions associated with that key without independently authenticating as the user. Although the configuration only visibly places the Habilis token in the MCP authorization header, the Skill explicitly states that the Gemini and OpenAI credentials transit through the gateway. This exposes high-value provider credentials to infrastructure outside the corresponding provider and outside the user's direct control. The assertion that credentials reside exclusively in the client's local environment is inconsistent with the statement ...[truncated 2058 chars]
- Remediation
- ## Remediation Suggestions 1. Do not transmit raw Gemini or OpenAI API keys to the Habilis Gateway. 2. Connect clients directly to the corresponding provider whenever technically possible. 3. If gateway mediation is necessary, use narrowly scoped, short-lived, revocable tokens rather than reusable account API keys. 4. Isolate provider credentials in a user-controlled proxy that exposes only the minimum operations required for meeting voice functionality. 5. Ensure separate credentials are used for each service, environment, and customer, with strict quota and permission restrictions. 6. Publish an explicit data-flow specification identifying every credential and sensitive data field transmitted to the gateway, its purpose, retention period, subprocessors, and deletion behavior. 7. Remove the contradictory claim that provider keys remain exclusively local if they are sent through gateway requests. 8. Prevent credentials from entering application, proxy, telemetry, error, or request logs. Add automated secret-redaction controls and test them regularly. 9. Provide immediate key-revocation and rotation procedures, and advise existing users to rotate any provider keys previously transmitted to the gateway. 10. Subject the gateway implementation and deployment controls to an independent security review before asking users to entrust it with provider credentials or sensitive meeting content.
