Skip to content

Commit 90bebea

Browse files
authored
docs(security): document GHSA-2v2f-mvfg-ph56 in SECURITY.md (#139)
Add the X-Pipeboard-Token auth-bypass advisory entry (fixed in 1.0.115) alongside the existing GHSA-45gf and GHSA-9gw6 entries. Documentation only; the fix already shipped.
1 parent 7d99263 commit 90bebea

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

‎SECURITY.md‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,36 @@ the JSON-RPC error payload, exposing the long-lived operator credential.
8080
- If you exposed an earlier version to an untrusted network, rotate the Meta
8181
access token (`https://developers.facebook.com/tools/debug/accesstoken/`)
8282
and review Graph API access logs for unexpected calls.
83+
84+
### GHSA-2v2f-mvfg-ph56 — `X-Pipeboard-Token` header bypasses auth and reuses operator Meta access token
85+
86+
- **Severity:** High (CVSS 3.1 7.4 — `AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N`)
87+
- **Affected versions:** `<= 1.0.113` when run with `--transport streamable-http`
88+
and a `META_ACCESS_TOKEN` environment variable.
89+
- **Fixed in:** `1.0.115`
90+
- **Affected configurations:** Self-hosted deployments that expose the
91+
streamable-HTTP port on a reachable network interface with `META_ACCESS_TOKEN`
92+
set. The hosted MCP at `*.mcp.pipeboard.co` was not affected — it does not set
93+
`META_ACCESS_TOKEN` and binds the Python process to localhost behind an
94+
authenticating proxy.
95+
96+
**What went wrong.** This is a follow-up to GHSA-9gw6-46qc-99vr. After that fix,
97+
`AuthInjectionMiddleware` rejected a request only when *both* a primary token and
98+
a supplementary token were absent. `X-Pipeboard-Token` is a supplementary service
99+
token (used only for the duplication callback) and is read into the supplementary
100+
slot, so a request carrying `X-Pipeboard-Token` alone — with any arbitrary value —
101+
satisfied the guard and passed through. No request auth context was set, so tool
102+
handlers fell back to the operator's `META_ACCESS_TOKEN`, letting a
103+
network-reachable caller act as the operator.
104+
105+
**Fix.** `AuthInjectionMiddleware` now requires a primary access-token credential
106+
(`Authorization: Bearer`, `X-META-ACCESS-TOKEN`, or `X-PIPEBOARD-API-TOKEN`) and
107+
returns `401 Unauthorized` otherwise. `X-Pipeboard-Token` is treated as a
108+
supplementary token only and cannot, on its own, admit a request.
109+
110+
**Action for operators.**
111+
- Upgrade to `1.0.115` or later.
112+
- If you exposed an earlier version on a reachable network with
113+
`META_ACCESS_TOKEN` set, rotate the Meta access token
114+
(`https://developers.facebook.com/tools/debug/accesstoken/`) and review Graph
115+
API access logs for unexpected calls.

0 commit comments

Comments
 (0)