🔍 CVE-2026-32731

9.9
CVSS Score
CRITICAL
2026-03-18
2026-06-17 10:36
✅ 완료

🇰🇷 한글 설명

ApostropheCMS의 @apostrophecms/import-export 패키지 3.5.3 미만 버전에서 발생하는 Zip Slip 취약점입니다. 압축 해제 과정에서 파일 경로에 포함된 상위 디렉토리 이동 문자(..)를 적절히 검증하지 않아, 공격자가 임의의 경로에 파일을 생성할 수 있습니다. 이를 통해 권한이 있는 사용자가 악성 파일을 업로드하면 시스템 전체의 제어권을 탈취할 수 있습니다.

💡 쉬운 설명

압축 파일을 풀 때 파일 이름에 '상위 폴더로 이동'하는 명령이 숨겨져 있으면, 원래 풀어야 할 폴더가 아닌 시스템의 중요한 폴더에 파일을 몰래 저장할 수 있는 문제입니다. 이를 통해 해커가 컴퓨터의 중요한 파일을 바꾸거나 악성 프로그램을 설치할 수 있습니다.

🇺🇸 원문 (English)

ApostropheCMS is an open-source content management framework. Prior to version 3.5.3 of `@apostrophecms/import-export`, The `extract()` function in `gzip.js` constructs file-write paths using `fs.createWriteStream(path.join(exportPath, header.name))`. `path.join()` does not resolve or sanitise traversal segments such as `../`. It concatenates them as-is, meaning a tar entry named `../../evil.js` resolves to a path outside the intended extraction directory. No canonical-path check is performed before the write stream is opened. This is a textbook Zip Slip vulnerability. Any user who has been granted the Global Content Modify permission — a role routinely assigned to content editors and site managers — can upload a crafted `.tar.gz` file through the standard CMS import UI and write attacker-controlled content to any path the Node.js process can reach on the host filesystem. Version 3.5.3 of `@apostrophecms/import-export` fixes the issue.

📍 영향받는 시스템

@apostrophecms/import-export version < 3.5.3

⚔️ 공격 벡터

Global Content Modify 권한을 가진 사용자가 경로 조작 문자가 포함된 악성 .tar.gz 파일을 CMS 임포트 기능을 통해 업로드

🛡️ 대응 방법

@apostrophecms/import-export 패키지를 3.5.3 버전 이상으로 업데이트

🔧 검증 코드

출력된 결과에서 @apostrophecms/import-export의 버전이 3.5.3 미만인지 확인

Shell / Script
npm list @apostrophecms/import-export

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js