🇰🇷 한글 설명
MinIO 7aac2a2 버전 이하에서 x-amz-* 헤더 검증 미흡으로 인해 발생하는 취약점입니다. 공격자가 서명되지 않은 헤더를 추가하여 권한을 우회함으로써, 단일 객체에 대한 쓰기 권한만으로도 서명자가 읽을 수 있는 모든 객체를 서버 측에서 복사할 수 있습니다.
💡 쉬운 설명
사용자가 허락받은 파일 하나만 건드릴 수 있어야 하는데, 교묘한 명령어를 섞어 보내면 서버가 다른 모든 파일을 마음대로 복사해버리는 보안 구멍이 발견되었습니다. 이로 인해 원래 접근할 수 없던 데이터까지 유출될 위험이 있습니다.
🇺🇸 원문 (English)
MinIO through 7aac2a2 does not verify that every x-amz-* header present on a request also appears in the client-supplied X-Amz-SignedHeaders list. extractSignedHeaders() in cmd/signature-v4-utils.go iterates only the claimed list and never enumerates the headers that actually arrived, and thus a header that arrives unsigned is neither hashed into the canonical request nor rejected. Because cmd/api-router.go dispatches CopyObject on the presence of x-amz-copy-source alone, the holder of a presigned PUT URL scoped to a single object can add that header to the unmodified URL and cause a server-side copy, executed as the signer, of any object the signing key can read. A grant to write one object becomes a read of every bucket that key can reach. Amazon S3 rejects the equivalent request with HTTP 403 AccessDenied. The minio/minio GitHub repository was archived in April 2026; pgsty/silo before 1233254 is also affected.
📍 영향받는 시스템
MinIO (7aac2a2 이하 버전), pgsty/silo (1233254 미만 버전)
⚔️ 공격 벡터
서명된 URL에 x-amz-copy-source 헤더를 임의로 추가하여 서버 측 복사 명령 실행
🛡️ 대응 방법
MinIO 및 관련 시스템을 최신 보안 패치가 적용된 버전으로 업데이트하거나, 해당 헤더 검증 로직이 포함된 수정본을 적용하십시오.
🔧 검증 코드
출력된 버전 정보가 취약한 버전 범위(7aac2a2 이하)에 해당하면 취약한 상태입니다.
minio --version 2>/dev/null | grep -E '7aac2a2|older'