Net::HTTPS 보안 취약성

net/https 라이브러리의 보안 취약점이 보고 되었습니다.

자세한 정보는 아래 주소에서 찾을 수 있습니다. <URL:http://www.isecpartners.com/advisories/2007-006-rubyssl.txt>

영향력

이 취약점은 http.rb 파일에 있는 연결 메서드에서 발견되었습니다. SSL 연결 네고시에이션(negotiation)을 마친 후 post_connection_check 호출이 실패하는 것입니다. 서버 인증서의 CN이 요청한 DNS 이름에 의한 유효성 체크를 하지 않기 때문에, 공격자는 SSL 연결에서 해당 서버의 사용자로 위장 가능합니다. 그렇게 되면 SSL이 제공하는 무결성이나 비밀성 등의 혜택이 사라집니다.

취약한 버전

1.8.x
  • 1.8.4 이하의 모든 버전
  • 1.8.5-p113 이하의 모든 버전
  • 1.8.6-p110 이하의 모든 버전
개발 버전(1.9.x)
2006-09-23 이전의 모든 버전

해결책

1.8.x

1.8.6-p111이나 1.8.5-p114로 업그래이드 하십시오.

그리고 Net::HTTP#enable_post_connection_check= 메서드를 이용해 post_connection_check를 활성화합니다.

http = Net::HTTP.new(host, 443)
http.use_ssl = true
http.enable_post_connection_check = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
store = OpenSSL::X509::Store.new
store.set_default_paths
http.cert_store = store
http.start {
  response = http.get("/")
}

현재 사용 중인 패키지 매니저 소프트웨어에서 이 취약점이 이미 해결된 것인지 확인하시기 바랍니다.

개발 버전(1.9.x)
루비를 2006-09-23 이후 버전으로 업데이트하세요. 루비 1.9에서 Net::HTTP#enable_post_connection_check의 기본값은 true입니다.

변경 사항

  • 2007-10-04 16:30 +09:00 enable_post_connection_check 메서드에 해결 방법에 관한 설명이 추가되었습니다.