🔍 CVE-2023-44401

5.3
CVSS Score
MEDIUM
2024-01-23
2026-06-17 06:27
✅ 완료

🇰🇷 한글 설명

Silverstripe CMS의 GraphQL 서버에서 페이지네이션된 쿼리 결과에 대해 canView 권한 검사를 우회할 수 있는 취약점입니다. 전체 레코드 수가 페이지당 레코드 수보다 많을 경우, 특정 조건에서 권한이 없는 ORM 데이터가 노출될 수 있습니다.

💡 쉬운 설명

데이터를 나누어서 보여주는 기능(페이지네이션)을 사용할 때, 원래는 볼 수 없는 데이터까지 몰래 보여주는 보안 구멍이 발견되었습니다. 이로 인해 권한이 없는 사용자가 시스템의 민감한 정보를 볼 수 있는 위험이 있습니다.

🇺🇸 원문 (English)

The Silverstripe CMS GraphQL Server serves Silverstripe data as GraphQL representations. In versions 4.0.0 prior to 4.3.7 and 5.0.0 prior to 5.1.3, `canView` permission checks are bypassed for ORM data in paginated GraphQL query results where the total number of records is greater than the number of records per page. Note that this also affects GraphQL queries which have a limit applied, even if the query isn’t paginated per se. This has been fixed in versions 4.3.7 and 5.1.3 by ensuring no new records are pulled in from the database after performing `canView` permission checks for each page of results. This may result in some pages in the query results having less than the maximum number of records per page even when there are more pages of results. This behavior is consistent with how pagination works in other areas of Silverstripe CMS, such as in `GridField`, and is a result of having to perform permission checks in PHP rather than in the database directly. One may disable these permission checks by disabling the `CanViewPermission` plugin.

📍 영향받는 시스템

Silverstripe CMS 4.0.0 ~ 4.3.6 및 5.0.0 ~ 5.1.2

⚔️ 공격 벡터

GraphQL 쿼리 시 페이지네이션 또는 limit 옵션을 사용하여 권한 검사를 우회하고 비인가 데이터에 접근

🛡️ 대응 방법

Silverstripe CMS를 버전 4.3.7 또는 5.1.3 이상으로 업데이트하거나 CanViewPermission 플러그인을 비활성화

🔧 검증 코드

출력된 버전이 4.3.7 미만(4.x 계열)이거나 5.1.3 미만(5.x 계열)이면 취약한 상태입니다.

Shell / Script
composer show silverstripe/silverstripe-graphql | grep 'versions'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Spring for GraphQL