🇰🇷 한글 설명
EspoCRM 9.3.3 버전에서 발생하는 비즈니스 로직 결함으로, 권한이 낮은 사용자가 부모 객체에 대한 편집 권한 없이도 임의의 노트를 고정할 수 있습니다. 백엔드 API가 권한을 확인하기 전에 데이터를 먼저 수정하는 '선 쓰기, 후 인증' 방식의 결함으로 인해 발생합니다.
💡 쉬운 설명
권한이 없는 사용자가 시스템의 규칙을 어기고 특정 메모를 상단에 고정할 수 있는 보안 취약점입니다. 서버가 '안 된다'고 거절하기 전에 이미 데이터베이스의 내용을 바꿔버리는 문제가 있습니다.
🇺🇸 원문 (English)
EspoCRM is an open source customer relationship management application. Prior to 9.3.5, a business logic flaw (Broken Access Control) in EspoCRM 9.3.3 allows low-privileged users to pin arbitrary notes without having the required edit permissions for the parent object. Due to a "write first, authorize later" execution flaw in the backend API, even though the server correctly returns a 403 Forbidden error, the targeted note's pinned status is already persistently modified in the database. The root cause lies in the server-side processing of the POST /api/v1/Note/{id}/pin endpoint. In application/Espo/Tools/Stream/Api/PostNotePin.php, the process() method first calls getNote($id) before calling checkParent($note). This vulnerability is fixed in 9.3.5.
📍 영향받는 시스템
EspoCRM 9.3.3 미만 버전
⚔️ 공격 벡터
낮은 권한을 가진 사용자가 POST /api/v1/Note/{id}/pin 엔드포인트를 호출하여 권한 검증 우회
🛡️ 대응 방법
EspoCRM을 9.3.5 이상의 버전으로 업데이트
🔧 검증 코드
403 Forbidden 에러가 발생하더라도 실제 데이터베이스에서 해당 노트의 고정 상태가 변경되었는지 확인해야 함
curl -s http://<target_ip>/api/v1/Note/1/pin -X POST -H 'Authorization: Bearer <low_priv_token>' | grep -E '403|200'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server