🇰🇷 한글 설명
APIFold의 특정 버전에서 `/webhooks/:serverSlug/:eventName` 엔드포인트가 인증 및 서명 검증 없이 임의의 JSON 데이터를 수락하는 취약점이 발견되었습니다. 이로 인해 공격자가 Redis와 PostgreSQL에 조작된 데이터를 주입하여 MCP 클라이언트에 신뢰할 수 없는 리소스 상태를 전달할 수 있습니다. 해당 문제는 커밋 7f19b52280f414f57af2b79a95333d1c8fbeece5에서 수정되었습니다.
💡 쉬운 설명
인증 절차 없이 누구나 가짜 데이터를 서버에 보낼 수 있는 보안 구멍이 있습니다. 공격자가 이 구멍을 통해 가짜 정보를 입력하면, 사용자는 이를 진짜 정보로 착각하게 됩니다.
🇺🇸 원문 (English)
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.
📍 영향받는 시스템
APIFold (commit 7f19b52280f414f57af2b79a95333d1c8fbeece5 이전 버전)
⚔️ 공격 벡터
인증되지 않은 네트워크 클라이언트가 유효한 serverSlug를 사용하여 조작된 JSON 페이로드를 웹훅 엔드포인트로 전송
🛡️ 대응 방법
APIFold를 커밋 7f19b52280f414f57af2b79a95333d1c8fbeece5 이상 버전으로 업데이트하여 validators 맵을 적용하십시오.
🔧 검증 코드
출력된 커밋 해시가 7f19b52280f414f57af2b79a95333d1c8fbeece5와 같거나 그 이후인지 확인하십시오.