CVE-2026-54350
Budibase: 게시된 앱 쿼리 템플릿을 통한 익명 NoSQL 연산자 주입
- 게시됨
- 2026. 6. 26.
- 업데이트됨
- 2026. 6. 30.
- CNA 할당 중
- GitHub_M
- 증거 관찰됨
- 2026. 8. 8.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N낮음 · 다음 30일
- 백분위수
- 44.0%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
Budibase는 오픈소스 로우코드 플랫폼입니다. 3.39.12 이전 버전에서, 게시된 어떤 Budibase 앱의 인증되지 않은 방문자도 백엔드 MongoDB, CouchDB, Elasticsearch, DynamoDB-PartiQL 또는 REST-with-JSON-body 컬렉션의 모든 문서를 읽을 수 있으며, 빌더가 PUBLIC 쓰기 쿼리를 게시한 경우 단 한 번의 HTTP 요청으로 해당 컬렉션의 모든 문서를 수정할 수 있습니다. packages/server/src/sdk/workspace/queries/queries.ts:121-138의 enrichContext는 쿼리의 원시 JSON 본문에 매개변수 값을 대입한 다음 결과에 JSON.parse를 수행합니다. packages/server/src/api/controllers/query/index.ts:61-71의 validateQueryInputs 검증기는 사용자 입력에서 Handlebars 마커({{, }})만 거부하며 JSON 메타문자(\", \\, })를 이스케이프하지 않습니다. 닫는 따옴표와 추가 키를 포함하는 매개변수 값은 공격자가 제어하는 필드를 파싱된 필터 객체에 유입시킵니다. Mongo find의 경우 파싱된 필터가 collection.find() (packages/server/src/integrations/mongodb.ts:506-510)에 직접 전달됩니다. 중복 키 JSON 파싱은 빌더의 {name: \"...\"}를 {name: {$exists: true}}로 덮어쓰고 모든 문서를 반환합니다. updateMany 쿼리(mongodb.ts:577-585)에 대한 동일한 기법은 필터 범위를 전체 컬렉션으로 확장하는 반면, 빌더가 제어하는 $set 본문은 일치하는 모든 문서에 대해 실행됩니다. packages/server/src/middleware/authorized.ts:141-148의 authorized 미들웨어는 쿼리의 역할이 PUBLIC이면 인증 확인을 건너뜁니다. 이 경로에서는 CSRF가 적용되지 않습니다. POST /api/v2/queries/:queryId (packages/server/src/api/routes/query.ts:63)는 세션 없이도, 게시된 앱 URL에서 공개되는 x-budibase-app-id 헤더만으로 호출을 수락합니다. 이 취약점은 3.39.12에서 수정되었습니다.
소스
1PoC for CVE-2026-54350 — Budibase의 인증되지 않은 NoSQL 연산자 주입 (CVSS 10.0). PUBLIC 쿼리를 통해 모든 문서 컬렉션을 읽거나 대량 쓰기.
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.