ogham-mcp had credentials embedded in published PyPI sdists -- Neon postgres URLs and Voyage API key
Date: 2026-05
Affected: pip/ogham-mcp
Attack vector: auth-bypass
Category: vulnerability-disclosure
Severity: Medium
CWE: CWE-798

## Summary Between 2026-02 and 2026-04-24 a total of 22 public PyPI sdists of `ogham-mcp` contained development credentials embedded in source files. All credentials have since been rotated on the respective providers. No known exploitation. Upgrade to **v0.11.1** to get a clean release. ## What was leaked | Credential | Location in sdist | Vulnerable range | Count | |---|---|---|---| | 3x Neon postgres URLs with passwords (US / EU / AP development databases) | top-level `Makefile` (`NEON_US`, `NEON_EU`, `NEON_AP` vars) | `>=0.6.5, <0.11.0` | 21 sdists | | 1x Voyage AI API key (`pa-...`) | `tests/test_hooks.py::test_mask_secrets_key_value` -- test fixture that fed a real key into the redaction-function tester | `>=0.6.3, <0.11.1` | 22 sdists | ## Impact - **Primary risk**: any consumer of the affected sdists could have extracted the credentials and used them. The Neon URLs pointed at development databases; the Voyage key was a rate-limited API key. - **Observed exploitation**: none detected. Audit logs on both providers were reviewed post-rotation. - **Remediation on our side**: - Neon passwords for all three regions rotated. - Voyage API key rotated. - All affected versions yanked from PyPI (v0.3.0 through v0.10.4 yanked on 2026-04-24; v0.11.0 pending yank after this advisory). - v0.11.0 removed the Neon URLs and introduced `make publish-check` which scans every sdist for credential patterns before upload. - v0.11.1 scrubs the Voyage key from the test fixture


Mitigations:

Architectural layers (MAESTRO):