🔍 CVE-2026-54497

6.8
CVSS Score
MEDIUM
2026-07-17
2026-10-24 20:10
✅ 완료

🇰🇷 한글 설명

view_component는 Ruby on Rails에서 재사용 가능하고 테스트 가능한 뷰 컴포넌트를 만드는 프레임워크입니다. 4.0.0부터 4.12.0 이전 버전까지 ViewComponent::Base 인스턴스가 render_in 호출 간에 렌더링 범위 객체를 유지하여, 동일한 컴포넌트 인스턴스를 여러 요청·사용자·테넌트·스레드에서 재사용할 경우 이전 렌더링의 헬퍼, 컨트롤러, 요청 정보, 슬롯 컨텍스트가 잘못 사용될 수 있습니다.

💡 쉬운 설명

웹 화면을 만드는 부품(컴포넌트)이 이전 사용자의 정보를 기억하고 있다가 다음 사용자 화면에 잘못 사용할 수 있는 문제입니다. 이로 인해 권한이 낮은 사용자가 권한이 높은 사용자용 화면을 보거나 다른 요청의 정보가 섞일 수 있습니다.

🇺🇸 원문 (English)

view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. From 4.0.0 until 4.12.0, ViewComponent::Base instances retain render-scoped objects across calls to render_in; if the same component, collection, or spacer component instance is reused across requests, users, tenants, or threads, later renders can use stale helpers, controller, request, view_flow, format/variant details, and slot child context from an earlier render. This can cause authorization-aware components to render privileged UI for a lower-privileged user, generate links using a stale Host header, leak slot/helper state, and mix request context under concurrent rendering. This issue is fixed in version 4.12.0.

📍 영향받는 시스템

view_component gem 4.0.0 이상 4.12.0 미만을 사용하는 Ruby on Rails 애플리케이션

⚔️ 공격 벡터

컴포넌트 인스턴스가 여러 요청·사용자 간에 재사용되는 환경에서, 낮은 권한 사용자가 이전 렌더링의 잔여 상태(권한 UI, Host 헤더 기반 링크, 슬롯 상태)를 전달받아 정보 노출 또는 권한 우회 효과를 얻을 수 있습니다.

🛡️ 대응 방법

view_component를 4.12.0 이상으로 업그레이드하고 bundle update view_component 후 재배포합니다.

🔧 검증 코드

출력된 버전이 4.12.0 미만이면 취약하므로 업그레이드가 필요하고, 4.12.0 이상이면 패치가 적용된 것입니다.

Shell / Script
bundle exec ruby -e "puts Gem.loaded_specs['view_component']&.version" 2>/dev/null || grep -E '^\s*view_component ' Gemfile.lock

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Ruby on Rails