Ruby on Rails 치명적 취약점, 모든 이미지 업로드 위험에 처하다
Ruby on Rails의 Active Storage 컴포넌트에서 CVE-2026-66066(심각도 9.5) 취약점이 발견됐다. 인증되지 않은 공격자가 악성 이미지를 업로드해 서버의 민감 파일을 읽거나 RCE까지 유발할 수 있으며, secret_key_base 탈취로 애플리케이션 전체가 위험에 처한다. Rails 7.2.3.2, 8.0.5.1, 8.1.3.1 버전에서 패치됐으므로 즉시 업데이트가 필요하다.
Ruby on Rails(이하 Rails) 웹 애플리케이션 프레임워크에서 새로운 치명적 취약점 CVE-2026-66066이 발견됐다. 이 취약점은 겉보기에는 무해한 이미지를 통해 서버의 비밀 정보를 탈취할 수 있는 문을 열어준다.
7월 30일 공개된 이 취약점은 심각도 9.5점(10점 만점)의 고위험 CVE로, Rails를 사용해 사용자 업로드 이미지를 처리하는 기업 애플리케이션에 상당한 위험을 초래한다. ‘KindaRails2Shell’로 명명된 이 취약점은 오픈소스 프레임워크의 Active Storage 컴포넌트를 공격 대상으로 삼아 인증되지 않은 공격자가 민감 파일을 읽거나 원격 코드 실행(RCE)까지 이어질 수 있게 한다. Active Storage 7.2.3.2, 8.0.5.1, 8.1.3.1 버전에서 수정됐으며, Rails를 운영 중인 기업은 즉시 업데이트해야 한다.
Beauceron Security의 David Shipley는 “공격자가 실제 이미지가 아닌 코드를 이미지로 위장해 업로드하면 서버의 비밀 정보를 탈취할 수 있다는 점이 핵심”이라고 설명했다.
Ruby on Rails는 풀스택 웹 애플리케이션과 API를 구축하는 데 사용되는 오픈소스 서버 사이드 프레임워크다. 확장성이 높고 배우기 쉬우며 빠른 개발이 가능하고, 1,000명 이상의 활발한 커뮤니티와 약 200만 줄에 달하는 방대한 사전 구축 코드 라이브러리를 갖추고 있어 개발자들 사이에서 인기가 높다.
CVE-2026-66066은 Rails에 내장된 Active Storage 컴포넌트를 구체적으로 노린다. Active Storage는 사용자가 클라우드 서비스나 로컬 디스크에 파일을 업로드하고 애플리케이션과 연동하는 기능을 제공한다. 특히 libvips 이미지 처리 라이브러리와 상호작용하는 과정에서 취약점이 발생한다. libvips에는 퍼징(fuzzing) 기법으로 악성 입력에 대한 안전성을 검증하지 않은 ‘unfuzzed’ 연산이 포함돼 있으며, Active Storage는 이를 충분히 비활성화하지 않고 있다.
SOCRadar CISO Ensar Seker는 “이 취약점은 공격자가 계정이나 권한이 없어도 악용할 수 있다는 점에서 특히 위험하다”고 지적했다. 공격자는 특별히 조작된 파일을 업로드해 Active Storage의 안전하지 않은 처리 파이프라인을 이용, Rails 프로세스가 접근 가능한 모든 파일을 읽을 수 있다. 이는 환경 변수, Rails 애플리케이션 비밀 정보, 데이터베이스 자격 증명, 클라우드 접근 키, API 토큰 등으로 이어질 수 있다.
또한 쿠키, 자격 증명, 세션 데이터를 서명하고 암호화하는 secret_key_base를 탈취할 수도 있다. secret_key_base가 유출되면 공격자는 애플리케이션의 핵심 열쇠를 손에 넣게 된다. 즉각적인 취약점은 임의 파일 읽기지만, 이를 통해 다양한 비밀 정보가 탈취될 수 있다.
