🇰🇷 한글 설명
Ruby on Rails의 Active Record 컴포넌트에서 데이터베이스 컬럼의 선언된 데이터 타입을 비교 연산 중에 적용하지 않아 발생하는 취약점입니다. 공격자가 조작된 값을 전송하여 데이터 타입 주입 공격을 수행할 수 있으며, XML 타입 지정 기능과 MySQL 데이터베이스 간의 의도하지 않은 상호작용으로 악용될 수 있습니다.
💡 쉬운 설명
Ruby on Rails가 데이터베이스에 저장된 값과 입력값을 비교할 때 데이터 타입을 제대로 확인하지 않는 문제입니다. 공격자는 이를 이용해 의도한 데이터 타입이 아닌 다른 타입의 데이터를 주입해 애플리케이션의 동작을 변경할 수 있습니다.
🇺🇸 원문 (English)
The Active Record component in Ruby on Rails 2.3.x, 3.0.x, 3.1.x, and 3.2.x does not ensure that the declared data type of a database column is used during comparisons of input values to stored values in that column, which makes it easier for remote attackers to conduct data-type injection attacks against Ruby on Rails applications via a crafted value, as demonstrated by unintended interaction between the "typed XML" feature and a MySQL database.
📍 영향받는 시스템
Ruby on Rails 2.3.x, 3.0.x, 3.1.x, 3.2.x (MySQL 데이터베이스 사용 시)
⚔️ 공격 벡터
조작된 XML 또는 데이터 타입이 다른 입력값을 애플리케이션으로 전송하여 데이터베이스 비교 로직을 우회하는 데이터 타입 주입 공격
🛡️ 대응 방법
Ruby on Rails를 2.3.14.2+, 3.0.14+, 3.1.6+, 3.2.6+로 업그레이드하거나 공식 패치 적용
🔧 검증 코드
Rails 버전이 2.3.14.2 미만, 3.0.14 미만, 3.1.6 미만, 3.2.6 미만이면 취약함
gem list | grep rails | grep -E '(2\.3\.[0-9]+|3\.[0-2]\.[0-5])' && echo 'Vulnerable' || echo 'Check version'