CVE-2015-7551: Fiddle, DL의 tainted 문자열 사용 취약점

신용할 수 없는 tainted 문자열 사용에 관한 취약점이 발견되었습니다. 이 취약점은 CVE 아이디 CVE-2015-7551에 할당 되었습니다.

상세

Fiddle과 DL에 신용할 수 없는 tainted 문자열 사용에 관한 취약점이 발견되었습니다. 이 문제는 DL에서 처음 보고되어 CVE-2009-5147에서 수정되었습니다만, Fiddle, libffi에 재구현할 때 재발했습니다.

그리고 DL의 CVE-2009-5147은 루비 1.9.1에서 수정되었지만, DL이 포함된 다른 루비 브랜치에서는 수정되지 않았고 취약점이 아직 있습니다.

영향을 받는 코드는 이렇습니다.

handle = Fiddle::Handle.new(dangerous_user_input)

또는

handle = Fiddle::Handle.new(some_library)
function_pointer = handle[dangerous_user_input]

영향을 받는 릴리스를 사용 중인 사용자는 즉시 업그레이드 하시거나, 다음 해결책 중 하나를 사용하시기를 권장합니다.

영향을 받는 버전

  • 루비 1.9.2, 1.9.3의 모든 패치 릴리스(DL, Fiddle).
  • 루비 2.0.0 패치레벨 648 이전의 루비 2.0의 모든 버전(DL, Fiddle).
  • 루비 2.1.8 이전의 루비 2.1의 모든 버전(DL, Fiddle).
  • 루비 2.2.4 이전의 루비 2.2의 모든 버전(Fiddle).
  • 루비 2.3.0 preview 1, preview 2(Fiddle).
  • 트렁크 리비전 53153 이전(Fiddle).

해결책

업그레이드를 할 수 없다면, 다음 몽키 패치를 Fiddle에 적용해 해결할 수 있습니다.

class Fiddle::Handle
  alias :old_initialize :initialize

  def initialize file, *args
    raise SecurityError if file.tainted? && $SAFE > 0
    old_initialize file, *args
  end

  alias :sym :[]
  alias :old_call :[]

  def [] fun
    raise SecurityError if fun.tainted? && $SAFE > 0
    old_call fun
  end
end

DL을 사용 중이면, 대신 Fiddle을 사용하세요.

크레딧

이 문제를 보고해주신 Christian Hofstaedtler zeha@debian.org 님께 감사드립니다.

이력

  • 2015-12-16 12:00:00 UTC 작성