🔍 CVE-2026-126085

5.3
CVSS Score
MEDIUM
2026-11-10
2026-11-10 22:18
✅ 완료

🇰🇷 한글 설명

Active Storage의 GCSService#url_for_direct_upload가 서명된 직접 업로드 URL에 선언된 콘텐츠 길이를 바인딩하지 않아, 해당 URL로 선언된 크기보다 큰 파일을 업로드할 수 있습니다. 이로 인해 애플리케이션의 파일 크기 검증과 쿼터가 우회될 수 있습니다. 8.1.4.1 및 8.0.5.2 이전 버전이 영향을 받습니다.

💡 쉬운 설명

사용자가 파일을 올릴 때 서버에 알린 크기보다 더 큰 파일을 실제로 업로드할 수 있는 문제입니다. 이를 통해 파일 크기 제한이나 저장 용량 제한을 우회할 수 있습니다.

🇺🇸 원문 (English)

Active Storage makes it simple to upload and reference files in cloud services and attach those files to Active Record objects. Prior to 8.1.4.1 and 8.0.5.2, ActiveStorage::Service::GCSService#url_for_direct_upload does not bind the declared content length into the signed direct-upload URL, and #headers_for_direct_upload returns no length constraint, so the URL authorizes an upload body of any size. A direct-upload client could store a file larger than the byte_size it declared, and the resulting blob keeps the declared size, possibly bypassing application file size validations and quotas. This is the weakness that CVE-2020-8162 fixed in the S3 service. Applications that store files in Google Cloud Storage and accept direct uploads are affected. This issue is fixed in versions 8.1.4.1 and 8.0.5.2.

📍 영향받는 시스템

Rails Active Storage를 사용해 Google Cloud Storage에 직접 업로드를 허용하는 애플리케이션 (8.1.4.1 / 8.0.5.2 이전 버전)

⚔️ 공격 벡터

직접 업로드 URL을 발급받은 뒤, 선언한 byte_size보다 큰 본문을 GCS에 업로드하여 크기 검증과 쿼터를 우회

🛡️ 대응 방법

Rails를 8.1.4.1 또는 8.0.5.2 이상으로 업데이트하고, 업데이트 전까지는 직접 업로드 기능 사용을 제한하거나 업로드 후 실제 크기를 검증

🔧 검증 코드

출력된 activestorage 버전이 8.1.4.1 또는 8.0.5.2 이상이면 패치된 상태이며, 그보다 낮거나 설치되지 않았다면(not loaded) 해당 프로젝트의 Gemfile.lock을 확인해야 합니다.

Shell / Script
bundle exec ruby -e "puts Gem.loaded_specs['activestorage']&.version || 'not loaded'" 2>/dev/null || gem list activestorage 2>/dev/null

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Cloud Services