OpenSSL 보안 결함 발견

wu-* 씨리즈에 둘째가라면 서러운 보안버그 단골 OpenSSL이 또 보안 버그를 발표했습니다. (크크 — 뭔가 혼자 즐겁다;;)

이번 버그는 인증서 데이터를 인코딩할 때 사용되는 ASN.1의 파서에서 발견되었는데, 사실상 대부분의 SSL 코드에서 ASN.1 파싱은 꼭 거치기 때문에 서버가 계속 나자빠지는 등;; 위험하게 작용하게 됩니다. 구체적으로 적용되는 부분을 번역해 보자면:

  • OpenSSL 0.9.7에만 적용되는 문제: 잘못된 형식의 ASN.1이 들어왔을 때 SSL을 거절하는 경우에 메모리 해제(deallocation)가 일어나게 되는데 이 부분에서 잘못된 해제 코드가 들어있어서 결국 프로세스가 죽게 되는 등의 Denial of Service 공격에 사용될 수 있는 버그가 발견되었습니다.

  • 몇가지 자주 사용되지 않는 ASN.1 태그에서, 버퍼 아웃바운드 문제 발견. 버퍼 끝을 잘못 포인트해서 읽게 유도할 수 있기 때문에 마찬가지로 루틴이 죽을 수 있어서 DoS공격에 악용될 수 있습니다. 이 버그는 0.9.6에도 적용됩니다.

  • 인증서에 잘못된 형식의 퍼블릭 키가 들어있는 경우에 제대로 되어있는지 디코딩 전에 확인하는 루틴에서 인증서 잘못을 무시하는 경우에 프로세스가 크래쉬할 수 있습니다. 일반적으로 디버깅 옵션을 끈 상태에서는 항상 무시되기 때문에 늘 악용될 수 있는 버그라고 할 수 있습니다.

  • SSL/TLS 프로토콜 핸들링의 에러로 인해서 서버가 특별히 요청하지 않은 상황에서도 클라이언트의 인증서를 읽게 된다고 합니다. 이 부분은 직접적으로 연결되는 보안 취약점이 있는 것은 아니지만, SSLv1, SSLv2, SSLv3의 각각 프로토콜 자체상의 결함을 상위 버전에서 원치 않게 허용할 수 있게 된답니다.

  • 이번 버그는 OpenSSH건처럼 root가 뚫린다던지 하는 일은 없지만 모두 쉽게 발생시킬 수 있는 DoS코드들이 이미 공개되어 있기 때문에, 원한을 산 분들은 얼른 얼른 업데이트 하셔야 될 듯 합니다. 적용되는 버전은 구석기시대의 SSLeay를 포함한 OpenSSL 0.9.7b까지의 버전이라고 합니다. 간단히 말해서 “지금 쓰는 모든 버전은 구멍이 숭숭~” 이란 말;; =3 =33

    지금 글을 쓰고 있는 현재 FreeBSD에는 보안 패치가 적용되어 있지 않고, Python은 2.3.2에서 0.9.7c를 기반으로 작업할 예정이라고 합니다.

    즐 패치~;;;

    7 thoughts on “OpenSSL 보안 결함 발견”

    Comments are closed.