CVE-2026-47769
Full vulnerability record from the local CVENow database.
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.
View original CVE JSON
{
"id": "CVE-2026-47769",
"sourceIdentifier": "[email protected]",
"published": "2026-07-23T18:16:53.920",
"lastModified": "2026-10-24T13:10:00.147",
"vulnStatus": "Deferred",
"cveTags": [],
"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."
},
{
"lang": "es",
"value": "APIFold lee una especificación OpenAPI 3.x o Swagger 2.x y genera un endpoint de servidor MCP en vivo y listo para producción. Antes del commit 7f19b52280f414f57af2b79a95333d1c8fbeece5, el endpoint “/webhooks/:serverSlug/:eventName” acepta JSON arbitrario no autenticado y lo almacena en Redis y en la tabla “webhook_events” de PostgreSQL sin ninguna verificación de firma o requisito de autenticación. La causa raíz es que se llama a “createWebhookRouter” en “server.ts:188” sin un mapa de “validators”, por lo que la guarda de encadenamiento opcional de “receivers.ts:80” se evalúa como “undefined” y el bloque de validación de firma (“receiver.ts:81-95”) se omite incondicionalmente. Cualquier cliente de red no autenticado que conozca un slug de servidor válido puede inyectar cargas útiles arbitrarias, las cuales son posteriormente servidas como estado de recurso confiable a clientes MCP legítimos. El commit 7f19b52280f414f57af2b79a95333d1c8fbeece5 corrige el problema."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Work90210",
"product": "APIFold",
"versions": [
{
"version": "< 7f19b52280f414f57af2b79a95333d1c8fbeece5",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 3.9,
"impactScore": 1.4
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-23T18:14:31.043277Z",
"id": "CVE-2026-47769",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-306"
}
]
}
],
"references": [
{
"url": "https://github.com/Work90210/APIFold/commit/7f19b52280f414f57af2b79a95333d1c8fbeece5",
"source": "[email protected]"
},
{
"url": "https://github.com/Work90210/APIFold/pull/235",
"source": "[email protected]"
},
{
"url": "https://github.com/Work90210/APIFold/security/advisories/GHSA-x82h-9r8v-m672",
"source": "[email protected]"
}
]
}