APIFold считывает спецификацию OpenAPI 3.x или Swagger 2.x и создает действующую, готовую к работе конечную точку сервера MCP. Перед фиксацией 7f19b52280f414f57af2b79a95333d1c8fbeece5 конечная точка `/webhooks/:serverSlug/:eventName` принимает произвольный неаутентифицированный JSON и сохраняет его в Redis и таблице `webhook_events` PostgreSQL без какой-либо проверки подписи или требований аутентификации. Основная причина заключается в том, что `createWebhookRouter` вызывается на `server.ts:188` без карты `валидаторов`, поэтому защита дополнительной цепочки `receivers.ts:80` оценивается как `undefine`, и блок проверки подписи (`receiver.ts:81–95`) безоговорочно пропускается.
Любой неаутентифицированный сетевой клиент, который знает действительный пул сервера, может вводить произвольные полезные данные, которые впоследствии передаются в качестве состояния доверенного ресурса законным клиентам MCP. Коммит 7f19b52280f414f57af2b79a95333d1c8fbeece5 исправляет проблему.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v3.1