CVE-2015-7551: Fiddle, DL의 tainted 문자열 사용 취약점
작성자: usa (2015-12-16)
번역자: marocchino
신용할 수 없는 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
endDL을 사용 중이면, 대신 Fiddle을 사용하세요.
크레딧
이 문제를 보고해주신 Christian Hofstaedtler zeha@debian.org 님께 감사드립니다.
이력
- 2015-12-16 12:00:00 UTC 작성
최근 소식
Ruby 4.0.0 릴리스
Ruby 4.0.0 릴리스를 알리게 되어 기쁩니다. Ruby 4.0은 Ruby::Box와 “ZJIT”를 도입하고, 많은 개선을 추가합니다.
작성자: naruse (2025-12-25)
Ruby 문서의 새로운 모습
ruby-lang.org 재디자인에 이어, Ruby의 30주년을 기념하는 또 다른 소식을 전합니다. docs.ruby-lang.org가 RDoc의 새로운 기본 테마인 Aliki와 함께 완전히 새로운 모습으로 탈바꿈했습니다.
작성자: Stan Lo (2025-12-23)
사이트 아이덴티티 재디자인
사이트의 전면적인 재디자인을 발표하게 되어 기쁩니다. 이번 업데이트의 디자인은 Taeko Akatsuka가 제작했습니다.
작성자: Hiroshi SHIBATA (2025-12-22)
Ruby 4.0.0 preview3 릴리스
Ruby 4.0.0-preview3 릴리스를 알리게 되어 기쁩니다. Ruby 4.0은 Ruby::Box와 “ZJIT”를 도입하고, 많은 개선을 추가합니다.
작성자: naruse (2025-12-18)