🔍 CVE-2023-40027

3.7
CVSS Score
LOW
2023-08-15
2026-06-17 06:15
✅ 완료

🇰🇷 한글 설명

Node.js 기반의 오픈 소스 CMS인 Keystone에서 `ui.isAccessAllowed` 설정이 `undefined`로 되어 있을 경우, `adminMeta` GraphQL 쿼리가 세션 없이도 공개적으로 접근 가능한 취약점입니다. 이는 세션 전략이 설정되어 있더라도 관리자 UI 미들웨어와 다르게 동작하여 발생하며, `@keystone-6/core` 5.5.1 버전에서 패치되었습니다. 해당 취약점은 `@keystone-6/auth` 패키지를 사용하거나 직접 `isAccessAllowed`를 구현한 경우에는 영향을 받지 않습니다.

💡 쉬운 설명

관리자 페이지의 정보를 확인하는 기능이 로그인 없이도 누구나 접근할 수 있게 설정될 수 있는 보안 허점입니다. 관리자 권한이 없는 외부인이 시스템의 관리 정보를 몰래 훔쳐볼 위험이 있습니다.

🇺🇸 원문 (English)

Keystone is an open source headless CMS for Node.js — built with GraphQL and React. When `ui.isAccessAllowed` is set as `undefined`, the `adminMeta` GraphQL query is publicly accessible (no session required). This is different to the behaviour of the default AdminUI middleware, which by default will only be publicly accessible (no session required) if a `session` strategy is not defined. This vulnerability does not affect developers using the `@keystone-6/auth` package, or any users that have written their own `ui.isAccessAllowed` (that is to say, `isAccessAllowed` is not `undefined`). This vulnerability does affect users who believed that their `session` strategy will, by default, enforce that `adminMeta` is inaccessible by the public in accordance with that strategy; akin to the behaviour of the AdminUI middleware. This vulnerability has been patched in `@keystone-6/core` version `5.5.1`. Users are advised to upgrade. Users unable to upgrade may opt to write their own `isAccessAllowed` functionality to work-around this vulnerability.

📍 영향받는 시스템

Keystone CMS (@keystone-6/core 5.5.1 미만 버전 중 ui.isAccessAllowed가 undefined인 경우)

⚔️ 공격 벡터

인증되지 않은 공격자가 공개된 `adminMeta` GraphQL 쿼리를 호출하여 관리자 메타데이터를 탈취

🛡️ 대응 방법

@keystone-6/core 버전을 5.5.1 이상으로 업그레이드하거나, 직접 `isAccessAllowed` 함수를 구현하여 접근 제어를 설정

🔧 검증 코드

출력된 버전이 5.5.1 미만인지 확인하여 취약 여부를 판단합니다.

Shell / Script
npm list @keystone-6/core

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js