AOSSIE-Org / AOSSIE-Org/Ell-ena
Vexa API key stored without documented rotation policy - bot integration key leak gives attacker control over meeting bots
- Dominant language
- Dart
- Stars
- 54
- Forks
- 110
- PR merge metrics
- No merged PRs in 30d
Description
## Problem
The `VEXA_API_KEY` is stored as an environment variable (shown in
`.env.example`) with no documentation on:
- What the Vexa API key authorizes (e.g. whether it can create unlimited bots
that consume transcription minutes).
- How to detect unauthorized usage of the key.
- How to rotate the key if it is leaked.
- Whether the key is scoped to specific meetings or is a global account key.
If the key is leaked (e.g. accidentally committed to the repository or exposed
in server logs), an attacker can start Vexa bots for any meeting, consuming
the account's transcription quota or incurring charges without limit.
## Impact
- Unauthorized meeting bot creation and quota exhaustion.
- Potential exposure of meeting invites and transcription data if bots are
started for meetings the attacker does not own.
- Financial cost from unauthorized usage of a paid transcription service.
## Suggested Fix
1. Document in `BACKEND.md` the minimum required Vexa API permissions and
how to create a restricted-scope key if the Vexa API supports it.
2. Add usage monitoring (Vexa dashboard alerts or webhook notifications) to
detect unexpected bot activity.
3. Document a key rotation procedure in `BACKEND.md`.
4. Store the Vexa key only in Supabase Edge Function secrets, never in the
Flutter client or any client-accessible configuration.
5. Add `.env` to `.gitignore` (verify it is not currently tracked) to prevent
accidental commits.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.