부동소수점 파싱할 때 힙 오버플로 발생 (CVE-2013-4164)

루비에서 부동소수점 숫자를 파싱할 때 오버플로가 있었습니다. 본 취약점은 CVE에 식별자 CVE-2013-4164로 할당되었습니다.

세부사항

문자열을 부동소수점 값으로 변환할 때, 의도적으로 조작된 문자열이 힙 오버플로를 일으킬 수 있습니다. 이것은 세그멘테이션 폴트와 가능한 의도적 코드 실행을 통해 서비스 거부(DoS)로 이어질 수 있습니다. 기원을 알 수 없는 입력을 부동소수점 값으로 변환하는(특히 JSON을 입력받을 때 흔한) 모든 프로그램은 취약합니다.

취약한 코드는 다음과 같은 형태입니다:

untrusted_data.to_f

그러나 외부 데이터로부터 부동소수점 값을 생성하는 모든 코드는 취약합니다. 다음과 같은 것들입니다:

JSON.parse untrusted_data

이 버그는 CVE-2009-0689와 비슷한 것입니다.

영향을 받는 릴리스를 실행하는 모든 사용자들은 루비의 수정된 버전으로 업그레이드 해야 합니다.

영향을 받는 버전

  • 루비 1.8 모든 버전
  • 루비 1.9.3 패치레벨 484 이전의 루비 1.9의 모든 버전
  • 루비 2.0.0 패치레벨 353 이전의 루비 2.0의 모든 버전
  • 루비 2.1.0 프리뷰2 이전의 루비 2.1의 모든 버전
  • 트렁크 리비전 43780 이전

해결책

모든 사용자들에게 루비 1.9.3 패치레벨 484, 루비 2.0.0 패치레벨 353 혹은 루비 2.1.0 프리뷰2로 업그레이드할 것을 권고합니다.

루비 1.8 시리즈 혹은 그 이전의 릴리스는 이미 폐기되었음을 기억해 주십시오. 해당 버전에 대한 새로운 수정된 버전을 릴리스할 계획은 없습니다. 이러한 버전의 사용자들은 지원되지 않는 릴리스에 대한 보안 수정의 지속적인 가용성을 보장할 수 없으므로 최대한 빨리 업그레이드하는 것이 좋습니다.

크레딧

본 이슈를 보고해 주신 Charlie Somerville께 감사드립니다!

문서이력

  • 2013-11-22 04:00:00 UTC에 최초로 발행되었습니다
  • 2013-11-22 06:46:00 UTC에 이차로 발행되었습니다