v0.10.1
Vexa-ai/vexav0.10.1Apr 19, 2026by DmitriyG228
Upgrading?
AI Summary
Security patch release closing two CVEs (unauthenticated internal endpoint and SSRF) and implementing upstream hardening packs.
Key Highlights
- Closed CVE-2026-25058: Internal transcript endpoint now requires X-Internal-Secret.
- Closed CVE-2026-25883: Webhook SSRF regression guard with 20+ URL tests.
- Pinned h11>=0.16.0 and bumped httpx to satisfy constraints.
- Gated OpenAPI docs (docs_url, redoc_url, openapi_url) on VEXA_ENV for production.
- CDP WebSocket proxy improvements enabling Playwright support.
Breaking Changes
- GET /internal/transcripts/{id} now fails-closed (503) if INTERNAL_API_SECRET is missing.
- docs_url, redoc_url, and openapi_url disabled by default in production.
- basic-ftp bumped to 5.3.0.
New Features
- CDP WebSocket proxy accepts bare /b/{token}/cdp route without scheme downgrade.
- Webhook URL validation matrix prevents SSRF attacks.
Full Release Notes
Security patch release on top of v0.10 — closes two reporter-filed CVEs and lands 6 upstream-hardening packs.
## CVEs closed
| CVE | Severity | Advisory | Reporter |
|-----|:--------:|----------|----------|
| [CVE-2026-25058](https://github.com/Vexa-ai/vexa/security/advisories/GHSA-w73r-2449-qwgh) | HIGH (7.5) | Unauthenticated internal transcript endpoint exposed by default | Ariel Silver ([@SilverPlate3](https://github.com/SilverPlate3)) |
| [CVE-2026-25883](https://github.com/Vexa-ai/vexa/security/advisories/GHSA-fhr6-8hff-cvg4) | MED (5.8) | SSRF in the Vexa webhook feature | Ariel Silver ([@SilverPlate3](https://github.com/SilverPlate3)) |
Both reports were filed 2026-01-28/29 under a 60-day coordinated disclosure embargo. Fix-and-publish in this release.
## Hardening packs
- **Pack A** — `meeting-api` `GET /internal/transcripts/{id}` now requires `X-Internal-Secret` (fail-closed admin-api pattern; 503 if `INTERNAL_API_SECRET` unset and `DEV_MODE=false`). Closes CVE-2026-25058.
- **Pack B** — webhook SSRF regression guard: 20+ URL pytest matrix (cloud metadata, RFC1918, IPv6 ULA/link-local, multicast, internal Docker hostnames, non-http schemes). `validate_webhook_url` was shipped earlier; this locks it in so a future refactor cannot silently drop it.
- **Pack C.1** — explicit `h11>=0.16.0` pin across every Python service's requirements (10 files). Closes transitive CVE-2025-43859 (HTTP/1.1 pipelined response-header leak). `httpx>=0.28.1` bumped where needed to satisfy the h11 constraint.
- **Pack C.2** — `docs_url` / `redoc_url` / `openapi_url` env-gated on `VEXA_ENV` across 9 FastAPI services. Default-deny on `VEXA_ENV=production`; on in development / staging.
- **Pack D** — CDP WebSocket proxy:
- `webSocketDebuggerUrl` rewrite preserves the inbound scheme via `X-Forwarded-Proto` (emits `wss://` behind HTTPS gateways, not `ws://`).
- Bare `/b/{token}/cdp` accepted as a first-class route (no more 307 scheme-downgrade via FastAPI's default `redirect_slashes=True`).
- Unblocks Playwright `chromium.connectOverCDP()` against hosted deployments. See Vexa-ai/vexa#122.
- **Pack E.1** — `basic-ftp` bumped 5.0.5 → 5.3.0 in both `services/vexa-bot/` lockfiles. Closes `GHSA-6v7q-wjvx-w8wg` (CRLF injection), `GHSA-chqc-8p9q-pq6q` (CRLF injection), `GHSA-rp42-5vxx-qpwr` (DoS).
## Infrastructure
- `deploy/compose/docker-compose.yml` + `deploy/helm/charts/vexa/templates/deployment-meeting-api.yaml` both pass `INTERNAL_API_SECRET` into the meeting-api container; helm reads from the existing admin-token secret.
## PRs
- #214 (`security/260419-oss-security` → `dev`) — the main work
- #215 (`dev` → `main`) — release
## Upgrade
```bash
docker compose pull && docker compose up -d --force-recreate
# or pin explicitly:
IMAGE_TAG=v0.10.1 docker compose up -d --force-recreate
```
`vexaai/*:latest` already points here.
## Credit
Huge thanks to [Ariel Silver](https://github.com/SilverPlate3) for the detailed reports, the CVSS analysis, and for the extended patience through the release cycle.
Related Repositories
public-apis/public-apis★ 491,337
A collective list of free APIs
NousResearch/hermes-agent★ 256,176
The agent that grows with you
yt-dlp/yt-dlp★ 200,391
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,631
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,711
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.