🇰🇷 한글 설명
ActiveRecord의 PostgreSQL 어댑터(7.0.4.1 미만, 6.1.7.1 미만)에 취약점이 존재합니다. 64비트 부호 있는 정수 범위를 벗어난 값이 입력되면 대상 컬럼 타입을 numeric으로 처리하며, 정수 값과 numeric 값을 비교할 때 느린 순차 스캔이 발생해 서비스 거부(DoS)가 가능합니다.
💡 쉬운 설명
데이터베이스에 아주 큰 숫자를 입력하면 검색 방식이 비효율적으로 바뀌어 서버가 느려지거나 멈출 수 있습니다. 공격자가 이를 반복 악용하면 서비스가 마비될 수 있습니다.
🇺🇸 원문 (English)
A denial of service vulnerability present in ActiveRecord's PostgreSQL adapter <7.0.4.1 and <6.1.7.1. When a value outside the range for a 64bit signed integer is provided to the PostgreSQL connection adapter, it will treat the target column type as numeric. Comparing integer values against numeric values can result in a slow sequential scan resulting in potential Denial of Service.
📍 영향받는 시스템
Ruby on Rails ActiveRecord 6.1.7.1 미만 및 7.0.4.1 미만을 사용하는 PostgreSQL 기반 애플리케이션
⚔️ 공격 벡터
공격자가 64비트 정수 범위를 벗어난 큰 숫자 값을 전달하는 요청을 반복적으로 보내 데이터베이스 순차 스캔을 유발
🛡️ 대응 방법
ActiveRecord를 6.1.7.1 이상 또는 7.0.4.1 이상으로 업그레이드하고 입력값에 정수 범위 검증을 추가
🔧 검증 코드
출력된 버전이 6.1.7.1 이상(6.1.x 계열) 또는 7.0.4.1 이상(7.0.x 계열)이면 패치된 것이며, 그보다 낮으면 취약합니다.
bundle exec gem list activerecord 2>/dev/null | grep -E 'activerecord \('