{{위키데이터 속성 추적}}
{{Infobox bug
| name = 하트블리드
| image = [[파일:Heartbleed.svg|180px]]
| caption = 심장출혈을 나타내는 로고이다. 이 로고와 "하트블리드"라는 이름은 이 문제에 대한 대중의 인식을 이끌어내는데 기여했다.<ref name="McKenzie">{{웹 인용|url=http://www.kalzumeus.com/2014/04/09/what-heartbleed-can-teach-the-oss-community-about-marketing/|제목=What Heartbleed Can Teach The OSS Community About Marketing|last=McKenzie|first=Patrick|date= 2014년 4월 9일|accessdate= 2014년 4월 10일}}</ref><ref name="Biggs">{{웹 인용|url=http://techcrunch.com/2014/04/09/heartbleed-the-first-consumer-grade-exploit/|제목=Heartbleed, The First Security Bug With A Cool Logo|last=Biggs|first=John|date= 2014년 4월 9일|work=[[TechCrunch]]|accessdate=10 April 2014}}</ref>
| CVE = [https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-0160 CVE-2014-0160]
| discovered = {{시작 날짜와 나이|2014|4|1}}
| patched = {{시작 날짜와 나이|2014|4|7}}
| discoverer = 닐 메타(Neel Mehta)
| affected software = [[OpenSSL]] (1.0.1)
| website = {{URL|heartbleed.com}}
}}
'''하트블리드'''({{llang|en|Heartbleed}})는 2014년 4월에 발견된 [[오픈 소스]] [[암호화]] 라이브러리인 [[OpenSSL]]의 [[소프트웨어 버그]]이다. 발표에 따르면, [[인증 기관]]에서 인증받은 안전한 [[웹 서버]]의 약 17%(약 50만대)가 이 공격으로 [[공개 키 암호 방식|개인 키]] 및 [[HTTP 쿠키|세션 쿠키]] 및 [[암호]]를 훔칠 수 있는 상태이다.<ref>{{웹 인용|last=Mutton|first=Paul|제목=Half a million widely trusted websites vulnerable to Heartbleed bug|url=http://news.netcraft.com/archives/2014/04/08/half-a-million-widely-trusted-websites-vulnerable-to-heartbleed-bug.html|publisher=Netcraft Ltd.|accessdate= 2014년 4월 8일|date= 2014년 4월 8일}}</ref><ref name="NYT-20140411">{{뉴스 인용 |last1=Perlroth |first1=Nicole |last2=Hardy |first2=Quentin |제목=Heartbleed Flaw Could Reach to Digital Devices, Experts Say |url=http://www.nytimes.com/2014/04/11/business/security-flaw-could-reach-beyond-websites-to-digital-devices-experts-say.html |date= 2014년 4월 11일 |work=[[뉴욕 타임즈]] |accessdate= 2014년 4월 11일 }}</ref><ref name="NYT-20140409">{{뉴스 인용 |last=Chen |first=Brian X. |제목=Q. and A. on Heartbleed: A Flaw Missed by the Masses |url=http://bits.blogs.nytimes.com/2014/04/09/qa-on-heartbleed-a-flaw-missed-by-the-masses/ |date= 2014년 4월 9일 |work=[[뉴욕 타임즈]] |accessdate= 2014년 4월 10일 }}</ref><ref name="NYT-20140410a">{{뉴스 인용 |last=Wood |first=Molly |제목=Flaw Calls for Altering Passwords, Experts Say |url=http://www.nytimes.com/2014/04/10/technology/flaw-calls-for-altering-passwords-experts-say.html |date= 2014년 4월 10일 |work=[[뉴욕 타임즈]] |accessdate= 2014년 4월 10일 }}</ref><ref name="NYT20140410">{{뉴스 인용 |last=Manjoo |first=Farhad |제목=Users’ Stark Reminder: As Web Grows, It Grows Less Secure |url=http://www.nytimes.com/2014/04/10/technology/users-stark-reminder-as-web-grows-it-grows-less-secure.html |date= 2014년 4월 10일 |work=[[뉴욕 타임즈]] |accessdate= 2014년 4월 10일 }}</ref>

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

그 뒤 2011년 [[뒤스부르크-에센 대학교]]의 박사과정을 밟던 학생인 로빈 세글먼(Robin Seggelmann)이 OpenSSL의 하트비트 확장을 구현하였다. OpenSSL에 그의 노고의 결과물을 넣어달라는 세글먼의 요청에 따라<ref name="smh">{{웹 인용 |url=http://www.smh.com.au/it-pro/security-it/man-who-introduced-serious-heartbleed-security-flaw-denies-he-inserted-it-deliberately-20140410-zqta1.html |제목=Man who introduced serious 'Heartbleed' security flaw denies he inserted it deliberately |date= 2014년 4월 11일 |work=[[The Sydney Morning Herald]]| last=Grubb | first=Ben}}</ref><ref>{{웹 인용 |url=http://rt.openssl.org/Ticket/Display.html?user=guest&pass=guest&id=2658 |제목=#2658: [PATCH] Add TLS/DTLS Heartbeats |publisher=OpenSSL |year=2011 |확인날짜=2014-04-22 |archive-date=2017-08-08 |archive-url=https://web.archive.org/web/20170808193401/https://rt.openssl.org/Ticket/Display.html?user=guest&pass=guest&id=2658 }}</ref><ref>{{뉴스 인용 |url=http://www.theglobeandmail.com/news/national/meet-the-man-that-created-the-bug-that-almost-broke-the-internet/article17941003/ |제목=Meet the man who created the bug that almost broke the Internet |newspaper=Globe and Mail |date= 2014년 4월 11일 }}</ref>, OpenSSL 소속의 4명의 핵심 개발자들 중 한 명인 스티븐 N. 헨슨(Stephen N. Henson)은 그의 변경 사항을 검토하기에 이르렀다.
헨슨은 세글먼의 구현체 안에 들어있던 버그를 눈치채지 못했고<ref>[https://github.com/openssl/openssl/commit/bd6941cfaa31ee8a3f8661cb98227a5cbcc0f9f3#diff-38dc72994741420e2b6c5ee074941a45 Site of Appearance and Discovery]{{Clarify|What does "Site of Appearance and Discovery" mean?|date=April 2014}} on Github</ref> 취약한 코드가 OpenSSL의 소스 코드 저장소에 2011년 12월 31일 들어가게 되었다. 이 취약성 코드는 2012년 3월 14일 OpenSSL 버전 1.0.1 출시와 더불어 널리 이용되었다. 하트비트 지원은 기본적으로 활성화되어 있었고, 이에 따라 영향을 받는 버전들은 기본적으로 취약성에 노출되게 되었다.<ref name="hb" /><ref>{{웹 인용| last = Goodin| first = Dan| 제목 = Critical crypto bug in OpenSSL opens two-thirds of the Web to eavesdropping| work = Ars Technica|  date = 2014년 4월 8일| url = http://arstechnica.com/security/2014/04/critical-crypto-bug-in-openssl-opens-two-thirds-of-the-web-to-eavesdropping/}}</ref><ref name="hbos">{{웹 인용 | 제목 = OpenSSL "Heartbleed" bug: what's at risk on the server and what is not | author = Hagai Bar-El | date = 2014년 4월 9일 | url = http://www.hbarel.com/openssl-heartbleed-bug | 확인날짜 = 2014년 4월 22일 | archive-date = 2014년 4월 13일 | archive-url = https://web.archive.org/web/20140413140412/http://www.hbarel.com/openssl-heartbleed-bug }}</ref>

=== 발견 ===
[[OpenSSL]]의 마크 J. 콕스(Mark J. Cox)에 따르면 구글 보안팀의 닐 메타(Neel Mehta)는 2014년 4월 1일 하트블리드를 보고했다.<ref>{{웹 인용 |제목=Mark J Cox – #Heartbleed |url=https://plus.google.com/+MarkJCox/posts/TmCbp3BhJma |accessdate= 2014년 4월 12일 }}</ref> 이 버그는 TLS 하트비트 확장 구현체에서 심각한 메모리 처리 오류를 따라다녔다.<ref>{{웹 인용|제목=Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension|url=https://tools.ietf.org/html/rfc6520|work=RFC 6520|publisher=Internet Engineering Task Force (IETF)|accessdate= 2014년 4월 8일|author=Seggelmann, R. et al.|date=February 2012}}</ref><ref name="advisory">{{웹 인용|제목=OpenSSL Security Advisory [07 Apr 2014]|url=https://www.openssl.org/news/secadv_20140407.txt|author=The OpenSSL Project|date=2014년 4월 7일|확인날짜=2014년 4월 22일|archive-date=2014년 4월 8일|archive-url=https://web.archive.org/web/20140408195036/https://www.openssl.org/news/secadv_20140407.txt|url-status=}}</ref> 이 결함은 매 하트비트마다 응용 프로그램 메모리의 최대 64 [[킬로바이트]]를 들추어내는데 이용될 수 있었다.<ref name="advisory" />

이 버그의 이름은 버그를 대중에게 설명할 목적으로, 피가 흘러내리는 심장의 로고를 만들어 도메인 <code>[http://heartbleed.com Heartbleed.com]</code>를 시작한 핀란드의 보안 업체인 [[코데노미콘]]의 한 기술자가 지은 것이다.<ref>{{웹 인용|url=http://www.washingtonpost.com/blogs/style-blog/wp/2014/04/09/why-is-it-called-the-heartbleed-bug/ | 제목=Why is it called the 'Heartbleed Bug'?}}</ref> 코데노미콘에 따르면 닐 메타는 처음으로 이 버그를 OpenSSL에 보고했으나, 구글과 코데노미콘 모두 이 버그를 독립적으로 발견하였다.<ref name="hb">{{웹 인용| last = Codenomicon Ltd| 제목 = Heartbleed Bug| date = 2014년 4월 8일| url = http://heartbleed.com/| 확인날짜 = 2014년 4월 22일| archive-date = 2014년 4월 7일| archive-url = https://web.archive.org/web/20140407203519/http://heartbleed.com/| url-status = }}</ref>

코데노미콘은 4월 3일을 이 버그의 발견일이자 NCSC-FI(이전 이름: CERT-FI)의 통보일로 보고하고 있다.<ref name="hb" /><ref>{{웹 인용|제목=Näin suomalaistutkijat löysivät vakavan vuodon internetin sydämestä - transl/Finnish researchers found a serious leakage of the heart of the Internet |url = http://www.digitoday.fi/tietoturva/2014/04/10/nain-suomalaistutkijat-loysivat-vakavan-vuodon-internetin-sydamesta/20145118/66?&n=2#commentsHere |date= 2014년 4월 10일 |accessdate= 2014년 4월 13일 }}</ref>

=== 해결 ===
2014년 3월 21일 [[구글]]의 보도 모엘러(Bodo Moeller)와 애덤 랭글리(Adam Langley)는 이 버그를 수정한 패치를 기록하였다.<ref>{{웹 인용|url=https://bugzilla.redhat.com/attachment.cgi?id=883475 |제목=heartbeat_fix |publisher= |date= |accessdate= 2014년 4월 14일}}</ref> 패치일은 [[레드햇]]의 이슈 트래커를 통해 알려져 있다. 이어, 웹사이트 성능 및 보안 기업인 [[클라우드플레어]]는 2014년 3월 31일 시스템 상의 결점을 수정하였다.<ref>{{웹 인용 |제목=CloudFlare – Update on the Heartbleed OpenSSL Vulnerability |url=https://support.cloudflare.com/hc/en-us/articles/201660084-Update-on-the-Heartbleed-OpenSSL-Vulnerability |date=2014년 4월 12일 |확인날짜=2014년 4월 22일 |보존url=https://web.archive.org/web/20140731230805/https://support.cloudflare.com/hc/en-us/articles/201660084-Update-on-the-Heartbleed-OpenSSL-Vulnerability |보존날짜=2014년 7월 31일 |url-status=dead }}</ref>

== 동작 원리 ==
[[파일:Simplified Heartbleed explanation.svg|섬네일|하트블리드의 설명]]
=== 패치 ===
이 버그는 버퍼 초과 읽기로 분류되는데<ref name="cve">{{웹 인용|url=https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160 |제목=CVE – CVE-2014-0160 |publisher=Cve.mitre.org |date= |accessdate= 2014년 4월 10일}}</ref>, 소프트웨어가 허용된 것보다 더 많은 데이터를 읽게 하는 상황을 가리킨다.<ref>{{웹 인용 |url=http://cwe.mitre.org/data/definitions/126.html |제목=CWE – CWE-126: Buffer Over-read (2.6) |publisher=Cwe.mitre.org |date= 2014년 2월 18일 |accessdate= 2014년 4월 10일}}</ref> 이 문제는 필요한 양 보다 더 많은 데이터를 요청하는 하트비트 요청 메시지를 무시함으로써 수정할 수 있다.

버전 1.0.1g의 OpenSSL은 몇 가지 바운드 검사를 추가하여 버퍼 초과 읽기를 방지한다. 예를 들면 다음 코드와 같은 변수 검사를
<syntaxhighlight lang="c">
if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */
</syntaxhighlight>
이 밑에 나오는 줄 바로 위에 입력하면 된다.
<syntaxhighlight lang="c">
pl = p;
</syntaxhighlight>
완전한 변경 사항 목록은 [http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=96db902 git.openssl.org] {{웨이백|url=http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=96db902 |date=20140413132402 }}에서 참조할 수 있다.<ref>{{웹 인용 |url=http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=96db902 |제목=Git – openssl.git/commitdiff |publisher=Git.openssl.org |date=2014년 4월 5일 |accessdate=2014년 4월 10일 |archive-date=2014년 4월 13일 |archive-url=https://web.archive.org/web/20140413132402/http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=96db902 |url-status= }}</ref>

== 영향을 받는 서비스 ==
다음 [[OpenSSL]] 버전은 취약한 것으로 결정되었다:
* OpenSSL 1.0.2 베타
* OpenSSL 1.0.1 – OpenSSL 1.0.1f
** CVE-2014-0160용 운영 체제 패치가 설치되지 않은 경우, 라이브러리 버전은 변경되지 않는다. [[우분투 (운영 체제)|우분투]], [[리눅스 민트]]와 같은 파생 계열을 아우르는 [[데비안]], 또 [[오픈수세]]나 [[FreeBSD]], [[레드햇 엔터프라이즈 리눅스]] ([[CentOS]], [[아마존 리눅스]] 등의 파생 계열 포함)가 이에 해당한다.

다음 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을 다시 컴파일하면 된다.

=== 웹사이트 및 웹 서비스 ===
다음의 사이트들은 버그에 대응하여 사용자가 암호를 변경할 것을 권고하는 발표를 하였거나 버그에 영향을 받은 서비스들을 포함하고 있다:
{{col-list|2|
* [[아카마이 테크놀로지스]]<ref>{{뉴스 인용
  | 제목       = Heartbleed FAQ: Akamai Systems Patched
  | url         = https://blogs.akamai.com/2014/04/heartbleed-faq-akamai-systems-patched.html
  | publisher   = [[Akamai Technologies]]
  | date        = 2014년 4월 8일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[아마존 웹 서비스]]<ref>{{뉴스 인용
  | 제목       = AWS Services Updated to Address OpenSSL Vulnerability
  | url         = https://aws.amazon.com/security/security-bulletins/aws-services-updated-to-address-openssl-vulnerability/
  | publisher   = [[Amazon Web Services]]
  | date        = 2014년 4월 8일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[아스 테크니카]]<ref>{{뉴스 인용
  | 제목       = Dear readers, please change your Ars account passwords ASAP
  | url         = http://arstechnica.com/security/2014/04/dear-readers-please-change-your-ars-account-passwords-asap/
  | publisher   = Ars Technica
  | date        = 2014년 4월 8일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[비트버킷]]<ref>{{뉴스 인용
  | 제목       = All Heartbleed upgrades are now complete
  | url         = http://blog.bitbucket.org/2014/04/09/all-heartbleed-upgrades-are-now-complete/
  | publisher   = BitBucket Blog
  | date        = 2014년 4월 9일
  | accessdate  = 2014년 4월 9일
}}</ref>
*브랜드베러티(BrandVerity)<ref>{{뉴스 인용
  | 제목       = Keeping Your BrandVerity Account Safe from the Heartbleed Bug
  | url         = http://blog.brandverity.com/2721/keeping-your-brandverity-account-safe-from-the-heartbleed-bug/
  | publisher   = BrandVerity Blog
  | date        = 2014년 4월 9일
  | accessdate  = 2014년 4월 10일
}}</ref>
* [[깃허브]]<ref>{{뉴스 인용
  | 제목       = Security: Heartbleed vulnerability
  | url         = https://github.com/blog/1818-security-heartbleed-vulnerability
  | publisher   = [[GitHub]]
  | date        = 2014년 4월 8일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[IFTTT]]<ref>{{뉴스 인용
  | 제목       = IFTTT Says It Is 'No Longer Vulnerable' To Heartbleed
  | url         = http://www.lifehacker.com.au/2014/04/ifttt-says-it-is-no-longer-vulnerable-to-heartbleed/
  | publisher   = [[LifeHacker]]
  | date        = 2014년 4월 8일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[Mumsnet]]
* [[PeerJ]]<ref>{{뉴스 인용
  | 제목       = The widespread OpenSSL ‘Heartbleed’ bug is patched in PeerJ
  | url         = http://blog.peerj.com/post/82185230692/the-widespread-openssl-heartbleed-bug-is-patched-in
  | publisher   = [[PeerJ]]
  | date        = 2014년 4월 9일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[사운드클라우드]]<ref>{{뉴스 인용
 | url         =http://blog.soundcloud.com/2014/04/09/heartbleed/
 | 제목       =Security Update: We’re going to sign out everyone today, here’s why
 |last=Codey|first=Brendan
 |date= 2014년 4월 9일|publisher=[[SoundCloud]]|accessdate= 2014년 4월 9일
}}</ref>
* [[소스포지]]<ref>{{뉴스 인용
 | url         =https://sourceforge.net/blog/sourceforge-response-to-heartbleed/
 | 제목       =Sourceforge response to heartbleed
 |last=Codey|first=Brendan
 |date= 2014년 4월 10일|publisher=[[SoundCloud]]|accessdate= 2014년 4월 10일
}}</ref>
* [[스파크펀]]<ref>{{뉴스 인용
 | url         =https://www.sparkfun.com/news/1455
 | 제목       =Heartbleed
 |date= 2014년 4월 9일|publisher=[[SparkFun]]|accessdate= 2014년 4월 9일
}}</ref>
* [[스트라이프]]<ref>{{뉴스 인용
  | 제목       = Heartbleed
  | url         = https://stripe.com/blog/heartbleed
  | publisher   = [[Stripe (company)]]
  | date        = 2014년 4월 9일
  | accessdate  = 2014년 4월 10일
}}</ref>

* 캐나다 국세청
* [[텀블러 (마이크로블로그)|텀블러]]<ref>{{웹 인용|url=http://staff.tumblr.com/post/82113034874/urgent-security-update|제목=Tumblr Staff-Urgent security update|date= 2014년 4월 8일|accessdate= 2014년 4월 9일}}</ref><ref name="Hern 2014">{{뉴스 인용
  | 제목       = Heartbleed: don't rush to update passwords, security experts warn
  | first       = Alex
  | last        = Hern
  | url         = http://www.theguardian.com/technology/2014/apr/09/heartbleed-dont-rush-to-update-passwords-security-experts-warn
  | publisher   = ''[[The Guardian]]''
  | date        = 2014년 4월 9일
  | accessdate  = 2014년 4월 9일
}}</ref>
* [[Wattpad]]
* [[위키미디어]]  (위키백과 포함)<ref>{{웹 인용|url=https://blog.wikimedia.org/2014/04/10/wikimedias-response-to-the-heartbleed-security-vulnerability/|제목=Wikimedia's response to the "Heartbleed" security vulnerability|last=Grossmeier|first=Greg|date= 2014년 4월 10일|work=Wikimedia Foundation blog|publisher=Wikimedia Foundation|accessdate= 2014년 4월 10일}}</ref>
* [[Wunderlist]]<ref>{{웹 인용|url=http://support.wunderlist.com/customer/portal/articles/1508382-sync-service-heartbleed---8th-of-april-2014|제목=Wunderlist & the Heartbleed OpenSSL Vulnerability|date=2014년 4월 10일|확인날짜=2014년 4월 13일|보존url=https://web.archive.org/web/20140413125107/http://support.wunderlist.com/customer/portal/articles/1508382-sync-service-heartbleed---8th-of-april-2014|보존날짜=2014년 4월 13일|url-status=dead}}</ref>
}}
* [[모장]]<ref>https://twitter.com/KrisJelbring/status/453559871028613121</ref>
* [[리그 오브 레전드]]
* [[배틀넷]]

[[라스트패스 패스워드 매니저]]는 [[순방향 비밀성]]을 사용하여 취약하지는 않았지만 라스트패스에 저장된 취약한 웹사이트의 암호를 변경할 것을 권장하고 있다.<ref name="LP-20140408">{{웹 인용 |author=Staff |제목=LastPass and the Heartbleed Bug |url=http://blog.lastpass.com/2014/04/lastpass-and-heartbleed-bug.html |date=2014년 4월 8일 |work=[[LastPass Password Manager|LastPass]] |accessdate=2014년 4월 13일 |archive-date=2017년 12월 18일 |archive-url=https://web.archive.org/web/20171218042409/https://blog.lastpass.com/2014/04/lastpass-and-heartbleed-bug.html/ |url-status= }}</ref>
[[로그미인|로그인]]은 "OpenSSL에 의존하는 자사 서비스들 중 일부와 수많은 제품들을 업데이트하였다"고 주장하였다.<ref name="logmein">{{뉴스 인용
  | 제목       = LogMeIn and OpenSSL
  | url       = http://blog.logmein.com/products/openssl
  | publisher       = [[LogMeIn]]
  | date       = 
  | accessdate       = 2014년 4월 10일
  | archive-date       = 2014년 4월 13일
  | archive-url       = https://web.archive.org/web/20140413131320/http://blog.logmein.com/products/openssl
  | url-status       = 
  }}</ref>

== 각주 ==
{{각주|30em}}

{{2010년대의 해킹}}
{{TLS/SSL}}

[[분류:소프트웨어 버그]]
[[분류:인터넷 보안]]
[[분류:2010년대 해킹]]
[[분류:전송 계층 보안]]
[[분류:2014년 컴퓨팅]]