하트블리드

위키백과, 우리 모두의 백과사전.

하트블리드
심장출혈을 나타내는 로고이다. 이 로고와 "하트블리드"라는 이름은 이 문제에 대한 대중의 인식을 이끌어내는데 기여했다.[1][2]
CVE 식별자CVE-2014-0160
발견일2014년 4월 1일(9년 전)(2014-04-01)
패치일2014년 4월 7일(9년 전)(2014-04-07)
발견자닐 메타(Neel Mehta)
영향을 받는 소프트웨어OpenSSL (1.0.1)
웹사이트heartbleed.com

하트블리드(영어: Heartbleed)는 2014년 4월에 발견된 오픈 소스 암호화 라이브러리인 OpenSSL소프트웨어 버그이다. 발표에 따르면, 인증 기관에서 인증받은 안전한 웹 서버의 약 17%(약 50만대)가 이 공격으로 개인 키세션 쿠키암호를 훔칠 수 있는 상태이다.[3][4][5][6][7]

역사[편집]

출현[편집]

전송 계층 보안(TLS) 및 데이터그램 전송 계층 보안(DTLS) 프로토콜의 하트비트 확장은 2012년 2월 출판된 RFC 6520이 지정한 제안된 표준이다. 이 확장은 매번 연결을 재협상하지 않아도 안전한 통신 연결을 테스트하고 유지시키는 방법을 제공한다.

그 뒤 2011년 뒤스부르크-에센 대학교의 박사과정을 밟던 학생인 로빈 세글먼(Robin Seggelmann)이 OpenSSL의 하트비트 확장을 구현하였다. OpenSSL에 그의 노고의 결과물을 넣어달라는 세글먼의 요청에 따라[8][9][10], OpenSSL 소속의 4명의 핵심 개발자들 중 한 명인 스티븐 N. 헨슨(Stephen N. Henson)은 그의 변경 사항을 검토하기에 이르렀다. 헨슨은 세글먼의 구현체 안에 들어있던 버그를 눈치채지 못했고[11] 취약한 코드가 OpenSSL의 소스 코드 저장소에 2011년 12월 31일 들어가게 되었다. 이 취약성 코드는 2012년 3월 14일 OpenSSL 버전 1.0.1 출시와 더불어 널리 이용되었다. 하트비트 지원은 기본적으로 활성화되어 있었고, 이에 따라 영향을 받는 버전들은 기본적으로 취약성에 노출되게 되었다.[12][13][14]

발견[편집]

OpenSSL의 마크 J. 콕스(Mark J. Cox)에 따르면 구글 보안팀의 닐 메타(Neel Mehta)는 2014년 4월 1일 하트블리드를 보고했다.[15] 이 버그는 TLS 하트비트 확장 구현체에서 심각한 메모리 처리 오류를 따라다녔다.[16][17] 이 결함은 매 하트비트마다 응용 프로그램 메모리의 최대 64 킬로바이트를 들추어내는데 이용될 수 있었다.[17]

이 버그의 이름은 버그를 대중에게 설명할 목적으로, 피가 흘러내리는 심장의 로고를 만들어 도메인 Heartbleed.com를 시작한 핀란드의 보안 업체인 코데노미콘의 한 기술자가 지은 것이다.[18] 코데노미콘에 따르면 닐 메타는 처음으로 이 버그를 OpenSSL에 보고했으나, 구글과 코데노미콘 모두 이 버그를 독립적으로 발견하였다.[12]

코데노미콘은 4월 3일을 이 버그의 발견일이자 NCSC-FI(이전 이름: CERT-FI)의 통보일로 보고하고 있다.[12][19]

해결[편집]

2014년 3월 21일 구글의 보도 모엘러(Bodo Moeller)와 애덤 랭글리(Adam Langley)는 이 버그를 수정한 패치를 기록하였다.[20] 패치일은 레드햇의 이슈 트래커를 통해 알려져 있다. 이어, 웹사이트 성능 및 보안 기업인 클라우드플레어는 2014년 3월 31일 시스템 상의 결점을 수정하였다.[21]

동작 원리[편집]

하트블리드의 설명

패치[편집]

이 버그는 버퍼 초과 읽기로 분류되는데[22], 소프트웨어가 허용된 것보다 더 많은 데이터를 읽게 하는 상황을 가리킨다.[23] 이 문제는 필요한 양 보다 더 많은 데이터를 요청하는 하트비트 요청 메시지를 무시함으로써 수정할 수 있다.

버전 1.0.1g의 OpenSSL은 몇 가지 바운드 검사를 추가하여 버퍼 초과 읽기를 방지한다. 예를 들면 다음 코드와 같은 변수 검사를

if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */

이 밑에 나오는 줄 바로 위에 입력하면 된다.

pl = p;

완전한 변경 사항 목록은 git.openssl.org에서 참조할 수 있다.[24]

영향을 받는 서비스[편집]

다음 OpenSSL 버전은 취약한 것으로 결정되었다:

다음 OpenSSL 버전은 하트블리드 버그를 해결한 패치를 포함하고 있다.:

  • OpenSSL 1.0.2 베타 2 (예정)
  • OpenSSL 1.0.1g
  • OpenSSL 1.0.0 (및 1.0.0 브랜치 릴리즈)
  • OpenSSL 0.9.8 (및 0.9.8 브랜치 릴리즈) (이 버전은 Heartbeat 자체를 지원하지 않는다)

버그를 해결하려면 서버 관리자가 1.0.1g 버전을 사용하거나 DOPENSSL_NO_HEARTBEATS 같이 취약한 기능을 비활성화한 상태로 OpenSSL을 다시 컴파일하면 된다.

웹사이트 및 웹 서비스[편집]

다음의 사이트들은 버그에 대응하여 사용자가 암호를 변경할 것을 권고하는 발표를 하였거나 버그에 영향을 받은 서비스들을 포함하고 있다:

2

라스트패스 패스워드 매니저순방향 비밀성을 사용하여 취약하지는 않았지만 라스트패스에 저장된 취약한 웹사이트의 암호를 변경할 것을 권장하고 있다.[42] 로그인은 "OpenSSL에 의존하는 자사 서비스들 중 일부와 수많은 제품들을 업데이트하였다"고 주장하였다.[43]

각주[편집]

  1. McKenzie, Patrick (2014년 4월 9일). “What Heartbleed Can Teach The OSS Community About Marketing”. 2014년 4월 10일에 확인함. 
  2. Biggs, John (2014년 4월 9일). “Heartbleed, The First Security Bug With A Cool Logo”. 《TechCrunch. 2014년 4월 10일에 확인함. 
  3. Mutton, Paul (2014년 4월 8일). “Half a million widely trusted websites vulnerable to Heartbleed bug”. Netcraft Ltd. 2014년 4월 8일에 확인함. 
  4. Perlroth, Nicole; Hardy, Quentin (2014년 4월 11일). “Heartbleed Flaw Could Reach to Digital Devices, Experts Say”. 《뉴욕 타임즈. 2014년 4월 11일에 확인함. 
  5. Chen, Brian X. (2014년 4월 9일). “Q. and A. on Heartbleed: A Flaw Missed by the Masses”. 《뉴욕 타임즈. 2014년 4월 10일에 확인함. 
  6. Wood, Molly (2014년 4월 10일). “Flaw Calls for Altering Passwords, Experts Say”. 《뉴욕 타임즈. 2014년 4월 10일에 확인함. 
  7. Manjoo, Farhad (2014년 4월 10일). “Users’ Stark Reminder: As Web Grows, It Grows Less Secure”. 《뉴욕 타임즈. 2014년 4월 10일에 확인함. 
  8. Grubb, Ben (2014년 4월 11일). “Man who introduced serious 'Heartbleed' security flaw denies he inserted it deliberately”. 《The Sydney Morning Herald》. 
  9. “#2658: [PATCH] Add TLS/DTLS Heartbeats”. OpenSSL. 2011. 2017년 8월 8일에 원본 문서에서 보존된 문서. 2014년 4월 22일에 확인함. 
  10. “Meet the man who created the bug that almost broke the Internet”. 《Globe and Mail》. 2014년 4월 11일. 
  11. Site of Appearance and DiscoveryWhat does "Site of Appearance and Discovery" mean?[모호한 표현] on Github
  12. Codenomicon Ltd (2014년 4월 8일). “Heartbleed Bug”. 2014년 4월 7일에 원본 문서에서 보존된 문서. 2014년 4월 22일에 확인함. 
  13. Goodin, Dan (2014년 4월 8일). “Critical crypto bug in OpenSSL opens two-thirds of the Web to eavesdropping”. 《Ars Technica》. 
  14. Hagai Bar-El (2014년 4월 9일). “OpenSSL "Heartbleed" bug: what's at risk on the server and what is not”. 2014년 4월 13일에 원본 문서에서 보존된 문서. 2014년 4월 22일에 확인함. 
  15. “Mark J Cox – #Heartbleed”. 2014년 4월 12일에 확인함. 
  16. Seggelmann, R.; 외. (February 2012). “Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension”. 《RFC 6520》. Internet Engineering Task Force (IETF). 2014년 4월 8일에 확인함. 
  17. The OpenSSL Project (2014년 4월 7일). “OpenSSL Security Advisory [07 Apr 2014]”. 2014년 4월 8일에 원본 문서에서 보존된 문서. 2014년 4월 22일에 확인함. 
  18. “Why is it called the 'Heartbleed Bug'?”. 
  19. “Näin suomalaistutkijat löysivät vakavan vuodon internetin sydämestä - transl/Finnish researchers found a serious leakage of the heart of the Internet”. 2014년 4월 10일. 2014년 4월 13일에 확인함. 
  20. “heartbeat_fix”. 2014년 4월 14일에 확인함. 
  21. “CloudFlare – Update on the Heartbleed OpenSSL Vulnerability”. 2014년 4월 12일. 2014년 7월 31일에 원본 문서에서 보존된 문서. 2014년 4월 22일에 확인함. 
  22. “CVE – CVE-2014-0160”. Cve.mitre.org. 2014년 4월 10일에 확인함. 
  23. “CWE – CWE-126: Buffer Over-read (2.6)”. Cwe.mitre.org. 2014년 2월 18일. 2014년 4월 10일에 확인함. 
  24. “Git – openssl.git/commitdiff”. Git.openssl.org. 2014년 4월 5일. 2014년 4월 10일에 확인함. 
  25. “Heartbleed FAQ: Akamai Systems Patched”. Akamai Technologies. 2014년 4월 8일. 2014년 4월 9일에 확인함. 
  26. “AWS Services Updated to Address OpenSSL Vulnerability”. Amazon Web Services. 2014년 4월 8일. 2014년 4월 9일에 확인함. 
  27. “Dear readers, please change your Ars account passwords ASAP”. Ars Technica. 2014년 4월 8일. 2014년 4월 9일에 확인함. 
  28. “All Heartbleed upgrades are now complete”. BitBucket Blog. 2014년 4월 9일. 2014년 4월 9일에 확인함. 
  29. “Keeping Your BrandVerity Account Safe from the Heartbleed Bug”. BrandVerity Blog. 2014년 4월 9일. 2014년 4월 10일에 확인함. 
  30. “Security: Heartbleed vulnerability”. GitHub. 2014년 4월 8일. 2014년 4월 9일에 확인함. 
  31. “IFTTT Says It Is 'No Longer Vulnerable' To Heartbleed”. LifeHacker. 2014년 4월 8일. 2014년 4월 9일에 확인함. 
  32. “The widespread OpenSSL ‘Heartbleed’ bug is patched in PeerJ”. PeerJ. 2014년 4월 9일. 2014년 4월 9일에 확인함. 
  33. Codey, Brendan (2014년 4월 9일). “Security Update: We’re going to sign out everyone today, here’s why”. SoundCloud. 2014년 4월 9일에 확인함. 
  34. Codey, Brendan (2014년 4월 10일). “Sourceforge response to heartbleed”. SoundCloud. 2014년 4월 10일에 확인함. 
  35. “Heartbleed”. SparkFun. 2014년 4월 9일. 2014년 4월 9일에 확인함. 
  36. “Heartbleed”. Stripe (company). 2014년 4월 9일. 2014년 4월 10일에 확인함. 
  37. “Tumblr Staff-Urgent security update”. 2014년 4월 8일. 2014년 4월 9일에 확인함. 
  38. Hern, Alex (2014년 4월 9일). “Heartbleed: don't rush to update passwords, security experts warn”. The Guardian. 2014년 4월 9일에 확인함. 
  39. Grossmeier, Greg (2014년 4월 10일). “Wikimedia's response to the "Heartbleed" security vulnerability”. 《Wikimedia Foundation blog》. Wikimedia Foundation. 2014년 4월 10일에 확인함. 
  40. “Wunderlist & the Heartbleed OpenSSL Vulnerability”. 2014년 4월 10일. 2014년 4월 13일에 원본 문서에서 보존된 문서. 2014년 4월 13일에 확인함. 
  41. https://twitter.com/KrisJelbring/status/453559871028613121
  42. Staff (2014년 4월 8일). “LastPass and the Heartbleed Bug”. 《LastPass》. 2017년 12월 18일에 원본 문서에서 보존된 문서. 2014년 4월 13일에 확인함. 
  43. “LogMeIn and OpenSSL”. LogMeIn. 2014년 4월 13일에 원본 문서에서 보존된 문서. 2014년 4월 10일에 확인함.