🇰🇷 한글 설명
Budibase 3.38.2 이전 버전에서 공개 API의 역할 해제 엔드포인트가 CouchDB 사용자 문서는 수정하지만 Redis 캐시를 무효화하지 않아 권한 취소된 사용자가 최대 1시간 동안 기존 권한을 유지할 수 있는 취약점입니다. 인증 미들웨어가 3600초의 TTL을 가진 Redis 캐시에서 사용자 정보와 권한을 읽기 때문에 권한 변경이 실시간으로 반영되지 않습니다.
💡 쉬운 설명
Budibase에서 관리자가 사용자의 권한을 빼앗았어도, 그 사용자는 1시간 동안 여전히 관리자 권한을 사용할 수 있습니다. 권한을 즉시 제거하는 메커니즘이 없기 때문입니다.
🇺🇸 원문 (English)
Budibase is an open-source low-code platform. Prior to 3.38.2, the public API role unassignment endpoint (POST /api/public/v1/roles/unassign) updates user documents in CouchDB but does not invalidate the corresponding Redis user cache entries. Because the authentication middleware resolves user identity and permissions from this cache (TTL: 3600 seconds), a user whose admin, builder, or app-level roles have been revoked via the public API retains those privileges for up to 1 hour. This vulnerability is fixed in 3.38.2.
📍 영향받는 시스템
Budibase < 3.38.2
⚔️ 공격 벡터
공개 API의 역할 해제 엔드포인트(POST /api/public/v1/roles/unassign)를 호출한 후 Redis 캐시가 만료될 때까지(최대 1시간) 이미 해제된 권한으로 접근 시도
🛡️ 대응 방법
Budibase를 3.38.2 이상으로 업그레이드하거나, Redis 캐시 무효화 로직을 추가하여 역할 해제 시 해당 사용자의 캐시 항목 즉시 삭제
🔧 검증 코드
반환된 버전이 3.38.2 이상이면 안전하고, 3.38.2 미만이면 취약점 존재. Budibase가 실행 중이 아니면 설치 확인 필요
curl -s http://your-budibase-instance/api/system/version | jq '.version' 2>/dev/null || echo 'Budibase not running'