{"id":"CVE-2026-47769","state":"PUBLISHED","title":"APIFold Vulnerable to Unauthenticated Webhook Event Injection","description":"APIFold reads an OpenAPI 3.x or Swagger 2.x specification and generates a live, production-ready MCP server endpoint. Prior to commit 7f19b52280f414f57af2b79a95333d1c8fbeece5, the `/webhooks/:serverSlug/:eventName` endpoint accepts arbitrary unauthenticated JSON and stores it in Redis and the `webhook_events` PostgreSQL table without any signature check or authentication requirement. The root cause is that `createWebhookRouter` is called at `server.ts:188` without a `validators` map, so `receivers.ts:80`'s optional-chaining guard evaluates to `undefined` and the signature-validation block (`receiver.ts:81–95`) is unconditionally skipped. Any unauthenticated network client that knows a valid server slug can inject arbitrary payloads, which are subsequently served as trusted resource state to legitimate MCP clients. Commit 7f19b52280f414f57af2b79a95333d1c8fbeece5 patches the issue.","publishedAt":"2026-07-23T17:23:27.570Z","updatedAt":"2026-07-23T18:14:38.774Z","severity":{"score":5.3,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["Work90210 APIFold"],"affected":[{"vendor":"Work90210","product":"APIFold","versions":[{"version":"< 7f19b52280f414f57af2b79a95333d1c8fbeece5","status":"affected"}]}],"references":["https://github.com/Work90210/APIFold/security/advisories/GHSA-x82h-9r8v-m672","https://github.com/Work90210/APIFold/pull/235","https://github.com/Work90210/APIFold/commit/7f19b52280f414f57af2b79a95333d1c8fbeece5"],"weaknesses":["CWE-306"],"ingestedAt":"2026-10-29T20:12:07.131Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/47xxx/CVE-2026-47769.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-47769","state":"PUBLISHED","datePublished":"2026-07-23T17:23:27.570Z","dateUpdated":"2026-07-23T18:14:38.774Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-05-19T22:36:16.882Z"},"containers":{"cna":{"title":"APIFold Vulnerable to Unauthenticated Webhook Event Injection","descriptions":[{"lang":"en","value":"APIFold reads an OpenAPI 3.x or Swagger 2.x specification and generates a live, production-ready MCP server endpoint. Prior to commit 7f19b52280f414f57af2b79a95333d1c8fbeece5, the `/webhooks/:serverSlug/:eventName` endpoint accepts arbitrary unauthenticated JSON and stores it in Redis and the `webhook_events` PostgreSQL table without any signature check or authentication requirement. The root cause is that `createWebhookRouter` is called at `server.ts:188` without a `validators` map, so `receivers.ts:80`'s optional-chaining guard evaluates to `undefined` and the signature-validation block (`receiver.ts:81–95`) is unconditionally skipped. Any unauthenticated network client that knows a valid server slug can inject arbitrary payloads, which are subsequently served as trusted resource state to legitimate MCP clients. Commit 7f19b52280f414f57af2b79a95333d1c8fbeece5 patches the issue."}],"affected":[{"vendor":"Work90210","product":"APIFold","versions":[{"version":"< 7f19b52280f414f57af2b79a95333d1c8fbeece5","status":"affected"}]}],"references":[{"url":"https://github.com/Work90210/APIFold/security/advisories/GHSA-x82h-9r8v-m672","name":"https://github.com/Work90210/APIFold/security/advisories/GHSA-x82h-9r8v-m672","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/Work90210/APIFold/pull/235","name":"https://github.com/Work90210/APIFold/pull/235","tags":["x_refsource_MISC"]},{"url":"https://github.com/Work90210/APIFold/commit/7f19b52280f414f57af2b79a95333d1c8fbeece5","name":"https://github.com/Work90210/APIFold/commit/7f19b52280f414f57af2b79a95333d1c8fbeece5","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.3,"baseSeverity":"MEDIUM","confidentialityImpact":"NONE","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-306","lang":"en","description":"CWE-306: Missing Authentication for Critical Function","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-07-23T17:23:27.570Z"},"source":{"advisory":"GHSA-x82h-9r8v-m672","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-07-23T18:14:31.043277Z","id":"CVE-2026-47769","options":[{"Exploitation":"poc"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-07-23T18:14:38.774Z"}}]}}}