🇰🇷 한글 설명
APITable 1.13.0-beta.1 이하 버전에서 InternalNotifyController의 생성 핸들러가 인증 없이 접근 가능하도록 설정되어 있습니다. 공격자는 인증되지 않은 상태로 임의의 알림을 생성하여 특정 사용자에게 시스템 알림으로 위장한 악성 메시지를 전달할 수 있습니다.
💡 쉬운 설명
로그인하지 않은 외부인이 시스템 관리자인 것처럼 속여 사용자에게 가짜 알림 메시지를 보낼 수 있는 보안 결함입니다. 이를 통해 사용자를 속이거나 악성 링크를 클릭하게 유도할 수 있습니다.
🇺🇸 원문 (English)
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.
📍 영향받는 시스템
APITable 1.13.0-beta.1 및 그 이전 버전
⚔️ 공격 벡터
인증되지 않은 상태에서 POST /api/v1/internal/notification/create 엔드포인트에 직접 요청을 보내 알림 생성
🛡️ 대응 방법
해당 취약점이 해결된 최신 버전으로 업데이트하거나, ResourceInterceptor에서 인증 검증이 누락되지 않도록 설정 수정
🔧 검증 코드
명령어 결과가 200 또는 201을 반환하면 인증 없이 알림 생성이 가능한 취약한 상태입니다.
curl -X POST -s -o /dev/null -w "%{http_code}" http://<target-ip>/api/v1/internal/notification/create