🔍 CVE-2026-39857

5.3
CVSS Score
MEDIUM
2026-04-15
2026-10-26 22:10
✅ 완료

🇰🇷 한글 설명

ApostropheCMS 4.28.0 이하의 REST API에서 choices와 counts 쿼리 파라미터가 MongoDB distinct() 작업을 통해 공개 데이터 제한(publicApiProjection)을 우회합니다. 인증되지 않은 공격자가 모든 스키마 필드의 고유 값과 문서 개수를 추출할 수 있으며, 권한 제한이 있는 필드까지 노출됩니다.

💡 쉬운 설명

ApostropheCMS의 웹 API가 특정 쿼리를 통해 숨겨야 할 데이터를 외부에 노출합니다. 누구나 인증 없이 데이터베이스의 민감한 정보(필드 값, 개수 등)를 조회할 수 있습니다.

🇺🇸 원문 (English)

ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain an authorization bypass vulnerability in the choices and counts query parameters of the REST API, where these query builders execute MongoDB distinct() operations that bypass the publicApiProjection restrictions intended to limit which fields are exposed publicly. The choices and counts parameters are processed via applyBuildersSafely before the projection is applied, and MongoDB's distinct operation does not respect projections, returning all distinct values directly. The results are returned in the API response without any filtering against publicApiProjection or removeForbiddenFields. An unauthenticated attacker can extract all distinct field values for any schema field type that has a registered query builder, including string, integer, float, select, boolean, date, slug, and relationship fields. Fields protected with viewPermission are similarly exposed, and the counts variant additionally reveals how many documents have each distinct value. Both the piece-type and page REST APIs are affected. This issue has been fixed in version 4.29.0.

📍 영향받는 시스템

ApostropheCMS 버전 4.28.0 이하 (4.29.0에서 수정)

⚔️ 공격 벡터

REST API의 /api/v1/pieces 또는 /api/v1/pages 엔드포인트에 ?choices=fieldName 또는 ?counts=fieldName 파라미터 추가로 비인가 데이터 추출

🛡️ 대응 방법

ApostropheCMS를 4.29.0 이상으로 업그레이드

🔧 검증 코드

설치된 ApostropheCMS 버전이 4.28.0 이하면 취약함, 4.29.0 이상이면 패치됨

Shell / Script
npm list apostrophecms 2>/dev/null | grep apostrophecms || cat package.json | grep -A1 '"apostrophecms"'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

💻 영향받는 소프트웨어

Node.js