🇰🇷 한글 설명
Payload CMS의 @payloadcms/storage-s3 라이브러리에서 인증된 사용자가 다른 컬렉션의 S3 객체를 덮어쓸 수 있는 취약점이 발견되었습니다. useCompositePrefixes 설정이 비활성화된 경우, 공격자는 대상 컬렉션의 접근 제어 및 파일 검증을 우회하여 기존 파일을 변조할 수 있습니다.
💡 쉬운 설명
로그인 권한이 있는 사용자가 다른 사람이 올린 파일을 몰래 수정하거나 덮어쓸 수 있는 보안 결함입니다. 파일 저장 경로 설정이 제대로 되어 있지 않을 때 발생하며, 이를 통해 중요한 데이터가 바뀔 위험이 있습니다.
🇺🇸 원문 (English)
Payload is a free and open source headless content management system. In @payloadcms/storage-s3 versions before 3.90.0 and canary versions before 4.0.0-canary.34, an authenticated user can overwrite an existing S3 object belonging to another upload collection when client uploads are enabled for multiple collections sharing a bucket and useCompositePrefixes is false or unset. This bypasses the target collection's access controls and prior file validation. This issue is fixed in versions 3.90.0 and 4.0.0-canary.34.
📍 영향받는 시스템
@payloadcms/storage-s3 < 3.90.0 및 4.0.0-canary.34 미만의 canary 버전
⚔️ 공격 벡터
인증된 사용자가 동일한 S3 버킷을 공유하는 다른 컬렉션의 파일 경로로 업로드를 시도하여 기존 객체를 덮어씀
🛡️ 대응 방법
@payloadcms/storage-s3 버전을 3.90.0 또는 4.0.0-canary.34 이상으로 업데이트하거나 useCompositePrefixes 설정을 true로 변경
🔧 검증 코드
출력된 버전이 3.90.0 미만이거나 4.0.0-canary.34 미만인 경우 취약한 상태임
npm list @payloadcms/storage-s3