🇰🇷 한글 설명
ApostropheCMS 4.30.0 이하 버전에서 `__proto__` 경로가 비정상적으로 처리되어 인증된 사용자가 Object.prototype을 임의 수정할 수 있습니다. 이를 통해 `publicApiCheck()`의 고스트를 악용하여 프로세스 종료 전까지 모든 비인증 REST API 요청의 권한 검사를 우회할 수 있습니다.
💡 쉬운 설명
관리자 권한을 가진 사용자가 시스템의 핵심 규칙을 변경하여 일반 사용자도 관리자 권한을 가진 것처럼 행동할 수 있게 만드는 치명적인 결함입니다. 이 결함은 현재까지 공식 패치가 제공되지 않았습니다.
🇺🇸 원문 (English)
ApostropheCMS is an open-source Node.js content management system. In versions up to and including 4.30.0, `apos.util.set()` traverses dot-notation paths without sanitizing `__proto__`, allowing an authenticated editor to write arbitrary values to `Object.prototype` via the `$pullAll` patch operator. A confirmed gadget in `publicApiCheck()` causes this to bypass authorization on all piece-type REST API endpoints for every subsequent unauthenticated request, for the lifetime of the Node.js process. As of time of publication, no known patched versions are available.
📍 영향받는 시스템
ApostropheCMS versions <= 4.30.0
⚔️ 공격 벡터
인증된 편집자가 $pullAll 연산자를 사용하여 Object.prototype을 오염시키고, 이를 통해 비인증 REST API 요청의 권한 검사를 우회
🛡️ 대응 방법
공식 패치 출시 전까지 서비스 격리 또는 임시 방편 적용, 패치 출시 즉시 즉시 업그레이드
🔧 검증 코드
출력된 버전이 4.30.0 이하이거나 설치되지 않은 경우 해당 시스템은 영향을 받지 않음
node -e "try { require('apos').version } catch(e) { console.log('not installed') }"