🇰🇷 한글 설명
X-SpringBoot 6.0의 역할 기반 액세스 제어(RBAC) 구현 과정에서 프론트엔드 메뉴 시스템과 백엔드 권한 테이블 간의 동기화가 보장되지 않아 발생하는 취약점입니다. 프론트엔드에서 권한이 회수되더라도 백엔드 권한 테이블에 즉시 반영되지 않아, 공격자가 API를 직접 호출할 경우 여전히 권한이 있는 것처럼 동작할 수 있습니다.
💡 쉬운 설명
화면상에서는 메뉴가 사라져서 권한이 없어진 것처럼 보이지만, 실제 뒷문(API)은 여전히 열려 있는 상태입니다. 공격자가 화면을 통하지 않고 직접 명령을 보내면 관리자 권한을 악용할 수 있습니다.
🇺🇸 원문 (English)
This vulnerability fundamentally arises from yzcheng90 X-SpringBoot 6.0's implementation of role-based access control (RBAC) through dual dependency on frontend menu systems and backend permission tables, without enforcing atomic synchronization between these components. The critical flaw manifests when frontend menu updates (such as privilege revocation) fail to propagate to the backend permission table in real-time, creating a dangerous desynchronization. While users lose access to restricted functions through the web interface (as UI elements properly disappear), the stale permission records still validate unauthorized API requests when accessed directly through tools like Postman. Attackers exploiting this inconsistency can perform privileged operations including but not limited to: creating high-permission user accounts, accessing sensitive data beyond their clearance level, and executing admin-level commands.
📍 영향받는 시스템
yzcheng90 X-SpringBoot 6.0
⚔️ 공격 벡터
프론트엔드 UI를 거치지 않고 Postman과 같은 도구를 사용하여 권한이 만료된 API를 직접 호출
🛡️ 대응 방법
프론트엔드 메뉴 변경 시 백엔드 권한 테이블이 원자적(Atomic)으로 즉시 동기화되도록 로직을 수정하고 API 레벨의 권한 검증을 강화해야 함
🔧 검증 코드
권한이 회수된 토큰으로 API 호출 시 403 Forbidden이 아닌 200 OK가 반환되면 취약한 상태임
curl -X GET -H 'Authorization: Bearer [EXPIRED_TOKEN]' https://[TARGET_API_ENDPOINT] -i