{"id":"CVE-2026-48039","title":"Meta Ads MCP is a Model Context Protocol (MCP) server that lets AI assistants run Meta Ads","summary":"Meta Ads MCP is a Model Context Protocol (MCP) server that lets AI assistants run Meta Ads. Prior to version 1.0.109, `AuthInjectionMiddleware.dispatch()` at `http_auth_integration.py:272` unconditionally forwards unauthenticated Streama…","severity":"critical","cvss":9.1,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","cwe":["CWE-287","CWE-209","CWE-522"],"vendor":"meta-ads-mcp","product":"meta-ads-mcp","affected":["meta-ads-mcp <= 1.0.108"],"patched":["meta-ads-mcp 1.0.109"],"published":"2026-08-07","updated":"2026-09-10","sourceUpdated":"2026-09-10T20:42:39.707","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-48039","references":[{"url":"https://github.com/pipeboard-co/meta-ads-mcp/releases/tag/1.0.109","label":"security-advisories@github.com"},{"url":"https://github.com/pipeboard-co/meta-ads-mcp/security/advisories/GHSA-9gw6-46qc-99vr","label":"security-advisories@github.com"},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/meta-ads-mcp/PYSEC-2026-413.yaml","label":"security-advisories@github.com"},{"url":"https://github.com/pipeboard-co/meta-ads-mcp/security/advisories/GHSA-9gw6-46qc-99vr","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"},{"url":"https://github.com/advisories/GHSA-9gw6-46qc-99vr"}],"tags":["nvd","ghsa","pip"],"epss":0.00426,"epssPercentile":0.36515,"aliases":["GHSA-9gw6-46qc-99vr"],"ecosystem":"pip","ingestedAt":"2026-07-07T15:41:59.311Z","slug":"CVE-2026-48039","body":"## Overview\n\nMeta Ads MCP is a Model Context Protocol (MCP) server that lets AI assistants run Meta Ads. Prior to version 1.0.109, `AuthInjectionMiddleware.dispatch()` at `http_auth_integration.py:272` unconditionally forwards unauthenticated Streamable HTTP requests to downstream MCP tool handlers without issuing a `401` response, allowing any network-reachable caller to invoke MCP tools without authentication. When no per-request credential is present, tool handlers fall back to the `META_ACCESS_TOKEN` environment variable, and when the downstream Meta Graph API call fails, `api.py:263–269` serialises the raw `httpx` request URL—including the operator's `access_token` as a query parameter—into the JSON-RPC response body, delivering the credential to the unauthenticated caller. Version 1.0.109 fixes the issue.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-48039)\n\nAffected packages:\n\n- `meta-ads-mcp <= 1.0.108`\n\nPatched in:\n\n- `meta-ads-mcp 1.0.109`\n\nSource: https://github.com/advisories/GHSA-9gw6-46qc-99vr","depth":"midnight","depthScore":50,"depthScoreParts":{"impact":50.1,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}