Skip to content
Heist/ feed
Back to feed
Medium

APIFold Vulnerable to Unauthenticated Webhook Event Injection

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-47769
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 03:52 UTC · Revision 1

Source evidence

APIFold Vulnerable to Unauthenticated Webhook Event Injection

core-osv · Original source

Published 23 Jul 2026, 17:23 UTC

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.

osv:CVE-2026-47769
Complete source record
{
  "id": "68e03fe19b5d691d4e1e30a4246f474a3e01cf080ae8b5a313f268eb7d7897b5",
  "url": "https://osv.dev/vulnerability/CVE-2026-47769",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "APIFold Vulnerable to Unauthenticated Webhook Event Injection",
    "summary": "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.",
    "evidence": "osv:CVE-2026-47769",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-47769",
      "aliases": [
        "CVE-2026-47769",
        "GHSA-x82h-9r8v-m672"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/work90210/apifold",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7f19b52280f414f57af2b79a95333d1c8fbeece5"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "7f19b52280f414f57af2b79a95333d1c8fbeece5"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "7f19b52280f414f57af2b79a95333d1c8fbeece5"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "7f19b52280f414f57af2b79a95333d1c8fbeece5"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-47769.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:32.845868861Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47769.json",
        "https://github.com/Work90210/APIFold/security/advisories/GHSA-x82h-9r8v-m672",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-47769",
        "https://github.com/Work90210/APIFold/commit/7f19b52280f414f57af2b79a95333d1c8fbeece5",
        "https://github.com/Work90210/APIFold/pull/235"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-306"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47769.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-47769",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 500136,
  "published_at": "2026-07-23T17:23:27.57+00:00"
}