CVE-2026-66066: 심각한 Rails 결함, 이미지 업로드를 통해 서버 파일 노출

CVE-2026-66066: 심각한 Rails 결함, 이미지 업로드를 통해 서버 파일 노출

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

Add to my AI research

루비 온 레일즈는 인가되지 않은 공격자가 조작된 이미지 업로드를 통해 애플리케이션 서버에서 임의의 파일을 읽을 수 있는 심각한 Active Storage 취약점에 대한 보안 업데이트를 발표했습니다. CVE-2026-66066으로 추적되며 CVSS 척도에서 9.5로 평가된 이 결함은 Rails 프로세스에 접근할 수 있는 비밀을 노출시킬 수 있으며, 원격 코드 실행이나 연결된 시스템으로의 침투를 가능하게 할 수 있습니다.

이 문제는 Active Storage와 이미지 처리 라이브러리 libvips 간의 상호작용에서 발생합니다. Rails 애플리케이션이 load_defaults 7.0 및 이후 기본값을 사용할 때 선택된 것입니다. 신뢰할 수 없는 사용자의 이미지 업로드를 허용하는 기본 Rails 설정에서는 libvips의 안전하지 않은 작업이 악성 파일을 처리하고 업로드된 이미지를 통해 접근해서는 안 되는 데이터를 노출할 수 있습니다.

CVE-2026-66066에 대한 가장 중요한 세부사항은 잠재적으로 노출되는 정보의 민감성입니다. 공격자는 Rails 프로세스 환경, secret_key_base, Rails 마스터 키, 데이터베이스 자격증명, 클라우드 스토리지 키, 타사 API 토큰을 가져올 수 있습니다. 얻은 비밀에 따라 공격은 임의의 파일 노출에서 세션 위조, 애플리케이션 손상 또는 외부 인프라에 대한 접근으로 진행될 수 있습니다.

CVE-2026-66066 분석

이 약점은 애플리케이션이 libvips를 사용할 때 발생하는 Active Storage 변형 처리에 있습니다. Libvips는 파일 형식을 처리하기 위한 수많은 로더, 세이버 및 기타 작업을 지원합니다. 이들 작업 중 일부는 타사 라이브러리에 의존하고 있으며, 적대적인 입력을 처리하기에 안전하지 않기 때문에 “fuzed되지 않은(unfuzzed)” 또는 신뢰할 수 없는 것으로 분류됩니다.

Active Storage는 Vips 분석기 및 변환기로 업로드된 첨부 파일을 전달하기 전에 이러한 작업을 차단하지 않았습니다. 그 결과, 조작된 업로드가 안전하지 않은 작업을 호출하고 Rails 워커가 읽을 수 있는 임의의 파일 내용을 얻을 수 있습니다.

가장 심각한 시나리오에서는 공격자가 이미지 업로드를 통해 서버 파일을 읽고 애플리케이션 환경에서 민감한 값을 복구할 수 있습니다. 이 취약점은 노출되기 위해 전용 크기 조정 또는 썸네일 기능을 필요로 하지 않습니다. Rails의 권고에 따르면, 이미지 변형 생성은 애플리케이션이 취약점을 갖기 위한 별도의 요구 사항이 아닙니다.

CVE-2026-66066은 다음 두 조건을 모두 충족하는 애플리케이션에 영향을 미칩니다:

  • 보통 config.active_storage.variant_processor = :vips를 통해 Active Storage 이미지 처리에 libvips를 사용합니다.
  • 신뢰할 수 없는 사용자에게 이미지 업로드를 허용합니다.

보고된 영향 범위에는 Rails 7.0.0에서 7.2.3.1, Rails 8.0.0에서 8.0.5, 그리고 Rails 8.1.0에서 8.1.3까지 포함됩니다. Rails 6.0과 6.1 애플리케이션도 관리자가 Vips를 이미지 프로세서로 명시적으로 설정할 때 노출될 수 있습니다. 이러한 릴리스에서는 기본 설정으로 제공되지 않았습니다. MiniMagick을 Vips 대신 사용하는 애플리케이션은 이 특정 공격 경로를 통해 노출되지 않습니다.

임의의 파일 읽기가 달성되면 공격자는 다음을 표적으로 삼을 수 있습니다:

  • secret_key_base
  • config/master.key 또는 RAILS_MASTER_KEY 환경 변수
  • config/credentials.yml.enc에서 복호화된 비밀
  • 데이터베이스 사용자 이름과 암호
  • Amazon S3, Google Cloud Storage 또는 Azure 스토리지 키
  • 결제, 메시징, 모니터링 및 기타 타사 서비스의 토큰

secret_key_base를 획득하면 특히 위험할 수 있습니다. 이는 Rails가 서명된 및 암호화된 애플리케이션 데이터를 보호하기 위해 사용되기 때문입니다. 애플리케이션과 사용 가능한 가젯 체인에 따라, 도난된 값은 공격자가 신뢰할 수 있는 데이터를 위조하고 코드 실행으로 발전할 수 있게 할 수 있습니다. 클라우드 또는 API 자격증명도 손상된 Rails 서버를 넘어선 횡단 이동을 지원할 수 있습니다.

CVE-2026-66066의 제3자 PoC는 조정된 공개 직후 등장했으며, 격리된 Docker 환경에서 임의 파일 읽기에서 RCE 체인을 재현한다고 주장합니다. Hacker News는 수정된 보고 시점에서 해당 코드를 독립적으로 확인하지 않았으며, 원래 연구 팀은 관리자가 패치할 시간을 주기 위해 세부적인 exploit mechanics를 의도적으로 withheld했습니다.

현재 CVE-2026-66066 IOCs에 대해 공급업체가 게시한 것은 없으며, 야생에서의 확정된 악용 보고도 없습니다. Rails Security Team은 공개 전후에 악용 시도에 대해 알지 못했지만, 알려진 공격이 없다고 해서 노출된 애플리케이션이 안전하다는 증거로 해석해서는 안됩니다.

CVE-2026-66066 완화

관리자는 Active Storage를 다음 수정 릴리스 중 하나로 업그레이드해야 합니다:

  • Rails 7.2.3.2 또는 이후 버전
  • Rails 8.0.5.1 또는 이후 버전
  • Rails 8.1.3.1 또는 이후 버전

Rails 7.0 및 7.1은 더 이상 보안 지원을 받지 않으며, 백포트된 수정을 받지 않게 됩니다. 이러한 브랜치를 실행하는 애플리케이션은 Rails 7.2.3.2 이상 버전 또는 새로운 지원 릴리스로 마이그레이션해야 합니다.

수정된 구성은 libvips 8.13 이상도 요구합니다. ruby-vips gem을 직접 사용하는 애플리케이션은 ruby-vips 2.2.1 이상을 실행해야 합니다. 이 수정은 Active Storage 초기화 중에 Vips.block_untrusted(true)를 호출하여 안전하지 않은 libvips 작업이 적대적인 업로드를 처리하지 않도록 방지합니다.

업그레이드는 취약한 처리 경로를 닫지만, 이미 노출된 비밀을 무효화하지는 않습니다. 조직은 Rails 애플리케이션 프로세스에서 읽을 수 있는 모든 값을 잠재적으로 손상된 것으로 취급하고 회전해야 합니다. 여기에는 애플리케이션 서명 비밀, 마스터 키, 데이터베이스 자격증명, 스토리지 서비스 키 및 타사 토큰이 포함됩니다.

secret_key_base를 변경하면 활성 세션이 무효화되고 사용자가 다시 로그인해야 합니다. 이는 암호화된 쿠키, 서명된 쿠키, 서명된 글로벌 ID 및 이전에 발행된 Active Storage URL에도 영향을 미칩니다. 관리자는 회전 후에도 백업으로 노출된 비밀을 유지하지 말아야 합니다.

즉각적인 Rails 업그레이드가 불가능한 경우, libvips 8.13 이상을 사용하는 애플리케이션은 다음 환경 변수를 설정할 수 있습니다:

VIPS_BLOCK_UNTRUSTED

ruby-vips 2.2.1 이상을 사용하는 애플리케이션은 대안으로 초기화 프로그램에 다음 호출을 추가할 수 있습니다:

Vips.block_untrusted(true)

libvips 8.13보다 오래된 버전은 안전하지 않은 작업을 차단할 수 없습니다. 그러한 환경에서는 안전한 구성 전용 우회책이 없습니다. 관리자는 libvips를 업그레이드하거나 의존성을 제거해야 합니다. 예를 들어, Gemfile에서 ruby-vips를 제거합니다.

CVE-2026-66066 감지는 Active Storage, Vips 및 신뢰할 수 없는 이미지 업로드를 사용하는 애플리케이션의 목록화로 시작해야 합니다. 보안팀은 비정상적인 업로드 활동, 예상치 못한 이미지 형식, 반복적인 변형 처리 오류 및 의심스러운 세션이나 자격증명 사용이 뒤따르는 요청을 검토해야 합니다.

CVE-2026-66066 노출을 감지하기 위해 팀은 단순히 주요 Rails 버전에만 의존하지 않고 정확한 Active Storage, libvips 및 ruby-vips 버전을 확인해야 합니다. 또한 Rails 프로세스에 이용 가능했던 자격증명과 관련된 무단 액세스 증거를 점검해야 합니다.

Proof of Value

 

FAQ

CVE-2026-66066이란 무엇이며 어떻게 작동합니까?

CVE-2026-66066은 루비 온 레일즈 Active Storage에서 발견된 심각한 임의 파일 읽기 취약점입니다. Active Storage는 인가되지 않은 사용자가 Rails 애플리케이션 프로세스에서 읽을 수 있는 파일을 검색할 수 있게 하는 공격자 제어 업로드를 처리하기 위해 안전하지 않은 libvips 작업을 허용했습니다. 도난된 애플리케이션 비밀은 원격 코드 실행이나 횡단 이동을 지원할 수 있습니다.

CVE-2026-66066은 언제 처음 발견되었습니까?

비공개 발견 날짜는 공개되지 않았습니다. 이 문제는 Ethiack 및 GMO Flatt Security의 연구자들에 의해 독립적으로 보고되었으며, 조정된 Rails 보안 권고는 2026년 7월 29일에 발표되었습니다.

CVE-2026-66066이 시스템에 미치는 영향은 무엇입니까?

직접적인 영향은 임의 파일 노출입니다. 공격자는 애플리케이션 서명 비밀, Rails 자격 증명, 데이터베이스 비밀번호, 클라우드 저장소 키, 또는 타사 토큰을 얻을 수 있습니다. 노출된 데이터 및 애플리케이션 구성에 따라, 손상은 세션 위조, 원격 코드 실행 또는 연결된 서비스에 대한 액세스로 확장될 수 있습니다.

2026년에 CVE-2026-66066이 여전히 영향을 미칠 수 있습니까?

예. 취약한 Active Storage 버전을 사용하고, libvips로 이미지를 처리하며, 신뢰할 수 없는 사용자의 업로드를 수용하는 Rails 애플리케이션은 여전히 노출되어 있습니다. 수명 종료된 Rails 7.0 및 7.1 애플리케이션도 위험에 처해 있으며 지원되는 브랜치로 업그레이드해야 합니다.

CVE-2026-66066로부터 보호하려면 어떻게 해야 합니까?

Rails 7.2.3.2, 8.0.5.1, 8.1.3.1 또는 이후 릴리스로 업그레이드하고 libvips가 8.13 이상인지 확인하며, 적용 가능한 경우 ruby-vips 2.2.1 이상을 사용하십시오. 애플리케이션 프로세스로 접근 가능한 모든 비밀을 회전하고, 업로드 활동을 검토하여 잠재적 악용을 점검하십시오.

SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.

More Articles