Description
APITable through 1.13.0-beta.1 annotates the create handler of InternalNotifyController with requiredLogin = false. ResourceInterceptor honours that annotation by returning before any session or API key is validated, and the nginx gateway shipped with the product proxies every /api request to the backend server, so POST /api/v1/internal/notification/create is reachable by any unauthenticated client that can reach the gateway. An attacker can persist arbitrary notifications in apitable_player_notification against any user ID they name, and because fromUserId can be set to 0 the message is stored with the system sender and renders in the victim's inbox as a legitimate system notification. The body extras content is stored verbatim and forwarded to the frontend.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| apitable | apitable | ≤ 1.13.0-beta.1 | — |
References
- GitHub Issue #1813 issue-tracking
- https://github.com/apitable/apitable product
- https://github.com/apitable/apitable/blob/88b24ce9f359cc434778be75d03603182882dc76/backend-server/application/src/main/java/com/apitable/internal/controller/InternalNotifyController.java#L50 technical-description
- VulnCheck Advisory: APITable through 1.13.0-beta.1 Missing Authentication on the Internal Notification Create Endpoint third-party-advisory