CVE-2026-54547
nicheAuth Bypass in Meta Ads MCP streamable-http transport (< 1.0.115)
Meta Ads MCP, a Model Context Protocol server that lets AI assistants manage Meta Ads, contains an improper authentication flaw (CWE-287) in AuthInjectionMiddleware (meta_ads_mcp/core/http_auth_integration.py) prior to version 1.0.115. The middleware only rejects HTTP MCP requests when both auth_token and pipeboard_token are absent, while extract_token_from_headers() does not treat X-Pipeboard-Token as a primary credential, so a network attacker using the streamable-http transport can supply any arbitrary X-Pipeboard-Token value to pass the guard without ever establishing an authentication context. This causes get_auth_token() to fall back to the server operator's META_ACCESS_TOKEN, allowing the attacker to invoke MCP tools that read or modify the operator's Meta Ads data under the operator's own credentials. Deployments using the default stdio transport, or running without a META_ACCESS_TOKEN configured, are not affected. The issue is fixed in version 1.0.115; no public proof of concept is known and the flaw is not listed in CISA's KEV catalog.
What to do: Upgrade Meta Ads MCP to version 1.0.115 or later. If upgrading is delayed, switch to the default stdio transport or remove the server-side META_ACCESS_TOKEN to eliminate the credential-fallback path, and restrict network access to the streamable-http endpoint. Operators who ran an exposed streamable-http deployment should review their Meta Ads accounts for unauthorized campaign, audience, or spend changes attributable to MCP tool calls.
| meta-ads-mcp project (open source) Meta Ads MCP | prior to 1.0.115 (affected only when using the streamable-http transport with META_ACCESS_TOKEN configured) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Meta Ads MCP is a Model Context Protocol (MCP) server that lets AI assistants run Meta Ads. Prior to version 1.0.115, AuthInjectionMiddleware in meta_ads_mcp/core/http_auth_integration.py rejects HTTP MCP requests only when both auth_token and pipeboard_token are absent, while extract_token_from_headers() does not recognize X-Pipeboard-Token as a primary credential. A network caller using the streamable-http transport can therefore send any X-Pipeboard-Token value, pass the guard without establishing authentication context, and cause get_auth_token() to fall back to the server operator's META_ACCESS_TOKEN. Subsequent MCP tools execute with the operator's Meta credentials and can read or modify the operator's Meta Ads data. Deployments using the default stdio transport or without META_ACCESS_TOKEN are not affected. This issue is fixed in version 1.0.115.
- Weakness
- CWE-287
- Vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
In the news0 stories
No ingested article mentions this CVE yet.