1. CVE-2025-55193: Active Record 로깅의 ANSI 이스케이프 주입
이 취약점은 Active Record의 로깅 메커니즘에서 발생하는 ANSI 이스케이프 주입 문제입니다. ANSI 이스케이프 문자는 터미널에서 텍스트 색상을 변경하거나 터미널 동작을 제어하는 데 사용되는 특수 문자입니다. 공격자가 악성 이스케이프 문자를 Rails 로그에 삽입하고, 취약한 터미널에서 해당 로그를 읽을 경우 원격 코드 실행(RCE)이 발생할 수 있습니다.
- 작동 방식: 공격자는 URL의 ID와 같은 사용자 제어 입력 필드에 악성 문자열 페이로드를 주입하여 Rails 로그를 오염시킬 수 있습니다. 예를 들어,
ActiveRecord::RecordNotFound
오류 메시지에 악성 이스케이프 시퀀스가 포함될 수 있습니다. - 악용 시나리오:
\e]2;ping google.com \a\e]2;?\a
와 같은 페이로드는 특정 터미널 에뮬레이터에서 터미널 제목을 변경하는 대신ping google.com
명령을 실행할 수 있습니다. 이는 RCE 외에도 피싱 공격이나 로그 내 페이로드 숨김에 사용될 수 있습니다. - 영향: 모든 터미널에서 RCE가 가능한 것은 아니지만, 일부 취약한 터미널에서는 심각한 보안 위협이 됩니다.
2. CVE-2025-24293: Active Storage의 안전하지 않은 변환
이 취약점은 image_processing
gem이 mini_magick
을 이미지 프로세서로 사용하고, 사용자 제어 문자열을 이미지 변환 인자로 직접 전달하는 애플리케이션에 영향을 미칩니다. 이는 임의 파일 생성으로 이어질 수 있습니다.
- 취약한 코드 예시:
image_tag blob.variant(resize: params[:dimensions])
와 같이params[:dimensions]
와 같은 사용자 입력이resize
옵션에 직접 전달될 때 발생합니다. - 악용 시나리오: 공격자가
dimensions[payload][]=-write&dimensions[payload][]=/tmp/file.erb
와 같은 페이로드를 전송하면,/tmp
경로에payload
내용을 가진 파일이 생성될 수 있습니다. 이 파일 생성 취약점은 다른 취약점과 결합될 경우 더 심각한 문제를 야기할 수 있습니다. - 완화 방안: 엄격한 ImageMagick 보안 정책을 적용하고, 사용자 제어 데이터를 이러한 메서드에 직접 전달하지 않도록 주의해야 합니다.