YAML URI 이스케이프 파싱의 힙 오버플로 (CVE-2014-2525)

루비의 YAML URI 이스케이프 파싱의 오버플로 문제가 있습니다. 이 취약점은 CVE 처리번호 CVE-2014-2525에 할당되었습니다.

상세

tag가 있는 YAML 안의 문자열을 파싱할 때, 특정 문자열이 힙 오버플로를 발생시켜, 임의의 코드를 실행시킬 가능성이 있습니다.

예:

YAML.load <code_from_unknown_source>

영향받는 버전

루비 1.9.3-p0 이상에는 기본 YAML 파서로 psych가 들어 있습니다. libyaml <= 0.1.5에 링크되어있는 모든 psych는 영향을 받습니다.

libyaml의 버전은 다음 명령을 실행하여 확인할 수 있습니다.

그리고, 다음 버전의 루비는 libyaml 버전에 영향을 받습니다.

  • 루비 2.0.0-p451 이전
  • 루비 2.1.0, 루비 2.1.1
$ ruby -rpsych -e 'p Psych.libyaml_version'
[0, 1, 5]

해결책

libyaml을 시스템에 설치하신 분들은 0.1.6 버전으로 업데이트하시길 바랍니다. 루비를 리컴파일 할 때, 업데이트된 libyaml을 지정해 주세요.

./configure --with-yaml-dir=/path/to/libyaml

시스템 libyaml를 사용하지 않고 내장된 libyaml을 사용하시는 분들은 libyaml 0.1.6를 사용하는 psych 2.0.5로 업데이트하시길 바랍니다.

$ gem install psych

아니면 루비 2.0.0-p481, 2.1.2 이상의 버전으로 업데이트하세요.

수정이력

  • 2014-03-29 01:49:25 UTC 공개
  • 2014-03-29 09:37:00 UTC 수정
  • 2014-05-09 03:00:00 UTC 수정