← Back to CVE Explorer

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.

Severity
MEDIUM
CVSS score
5.3 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-07-23 18:16:53.920000
Last modified
2026-10-24 13:10:00.147000
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]"
    }
  ]
}