하트블리드 심장출혈을 나타내는 로고이다. 이 로고와 "하트블리드"라는 이름은 이 문제에 대한 대중의 인식을 이끌어내는데 기여했다.
[ 1] [ 2] CVE 식별자 CVE-2014-0160 발견일 2014년 4월 1일(10년 전) (2014-04-01 ) 패치일 2014년 4월 7일(10년 전) (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 */
이 밑에 나오는 줄 바로 위에 입력하면 된다.
완전한 변경 사항 목록은 git.openssl.org Archived 2014년 4월 13일 - 웨이백 머신 에서 참조할 수 있다.[ 24]
영향을 받는 서비스
다음 OpenSSL 버전은 취약한 것으로 결정되었다:
OpenSSL 1.0.2 베타
OpenSSL 1.0.1 – OpenSSL 1.0.1f
다음 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]
각주
↑ McKenzie, Patrick (2014년 4월 9일). “What Heartbleed Can Teach The OSS Community About Marketing” . 2014년 4월 10일에 확인함 .
↑ Biggs, John (2014년 4월 9일). “Heartbleed, The First Security Bug With A Cool Logo” . 《TechCrunch 》. 2014년 4월 10일에 확인함 .
↑ Mutton, Paul (2014년 4월 8일). “Half a million widely trusted websites vulnerable to Heartbleed bug” . Netcraft Ltd. 2014년 4월 8일에 확인함 .
↑ Perlroth, Nicole; Hardy, Quentin (2014년 4월 11일). “Heartbleed Flaw Could Reach to Digital Devices, Experts Say” . 《뉴욕 타임즈 》. 2014년 4월 11일에 확인함 .
↑ Chen, Brian X. (2014년 4월 9일). “Q. and A. on Heartbleed: A Flaw Missed by the Masses” . 《뉴욕 타임즈 》. 2014년 4월 10일에 확인함 .
↑ Wood, Molly (2014년 4월 10일). “Flaw Calls for Altering Passwords, Experts Say” . 《뉴욕 타임즈 》. 2014년 4월 10일에 확인함 .
↑ Manjoo, Farhad (2014년 4월 10일). “Users’ Stark Reminder: As Web Grows, It Grows Less Secure” . 《뉴욕 타임즈 》. 2014년 4월 10일에 확인함 .
↑ Grubb, Ben (2014년 4월 11일). “Man who introduced serious 'Heartbleed' security flaw denies he inserted it deliberately” . 《The Sydney Morning Herald 》.
↑ “#2658: [PATCH] Add TLS/DTLS Heartbeats” . OpenSSL. 2011. 2017년 8월 8일에 원본 문서 에서 보존된 문서. 2014년 4월 22일에 확인함 .
↑ “Meet the man who created the bug that almost broke the Internet” . 《Globe and Mail》. 2014년 4월 11일.
↑ Site of Appearance and Discovery What does "Site of Appearance and Discovery" mean? [모호한 표현 ] on Github
↑ 가 나 다 Codenomicon Ltd (2014년 4월 8일). “Heartbleed Bug” . 2014년 4월 7일에 원본 문서 에서 보존된 문서. 2014년 4월 22일에 확인함 .
↑ Goodin, Dan (2014년 4월 8일). “Critical crypto bug in OpenSSL opens two-thirds of the Web to eavesdropping” . 《Ars Technica》.
↑ 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일에 확인함 .
↑ “Mark J Cox – #Heartbleed” . 2014년 4월 12일에 확인함 .
↑ 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일에 확인함 .
↑ 가 나 The OpenSSL Project (2014년 4월 7일). “OpenSSL Security Advisory [07 Apr 2014]” . 2014년 4월 8일에 원본 문서 에서 보존된 문서. 2014년 4월 22일에 확인함 .
↑ “Why is it called the 'Heartbleed Bug'?” .
↑ “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일에 확인함 .
↑ “heartbeat_fix” . 2014년 4월 14일에 확인함 .
↑ “CloudFlare – Update on the Heartbleed OpenSSL Vulnerability” . 2014년 4월 12일. 2014년 7월 31일에 원본 문서 에서 보존된 문서. 2014년 4월 22일에 확인함 .
↑ “CVE – CVE-2014-0160” . Cve.mitre.org. 2014년 4월 10일에 확인함 .
↑ “CWE – CWE-126: Buffer Over-read (2.6)” . Cwe.mitre.org. 2014년 2월 18일. 2014년 4월 10일에 확인함 .
↑ “Git – openssl.git/commitdiff” . Git.openssl.org. 2014년 4월 5일. 2014년 4월 13일에 원본 문서 에서 보존된 문서. 2014년 4월 10일에 확인함 .
↑ “Heartbleed FAQ: Akamai Systems Patched” . Akamai Technologies . 2014년 4월 8일. 2014년 4월 9일에 확인함 .
↑ “AWS Services Updated to Address OpenSSL Vulnerability” . Amazon Web Services . 2014년 4월 8일. 2014년 4월 9일에 확인함 .
↑ “Dear readers, please change your Ars account passwords ASAP” . Ars Technica. 2014년 4월 8일. 2014년 4월 9일에 확인함 .
↑ “All Heartbleed upgrades are now complete” . BitBucket Blog. 2014년 4월 9일. 2014년 4월 9일에 확인함 .
↑ “Keeping Your BrandVerity Account Safe from the Heartbleed Bug” . BrandVerity Blog. 2014년 4월 9일. 2014년 4월 10일에 확인함 .
↑ “Security: Heartbleed vulnerability” . GitHub . 2014년 4월 8일. 2014년 4월 9일에 확인함 .
↑ “IFTTT Says It Is 'No Longer Vulnerable' To Heartbleed” . LifeHacker . 2014년 4월 8일. 2014년 4월 9일에 확인함 .
↑ “The widespread OpenSSL ‘Heartbleed’ bug is patched in PeerJ” . PeerJ . 2014년 4월 9일. 2014년 4월 9일에 확인함 .
↑ Codey, Brendan (2014년 4월 9일). “Security Update: We’re going to sign out everyone today, here’s why” . SoundCloud . 2014년 4월 9일에 확인함 .
↑ Codey, Brendan (2014년 4월 10일). “Sourceforge response to heartbleed” . SoundCloud . 2014년 4월 10일에 확인함 .
↑ “Heartbleed” . SparkFun . 2014년 4월 9일. 2014년 4월 9일에 확인함 .
↑ “Heartbleed” . Stripe (company) . 2014년 4월 9일. 2014년 4월 10일에 확인함 .
↑ “Tumblr Staff-Urgent security update” . 2014년 4월 8일. 2014년 4월 9일에 확인함 .
↑ Hern, Alex (2014년 4월 9일). “Heartbleed: don't rush to update passwords, security experts warn” . The Guardian . 2014년 4월 9일에 확인함 .
↑ Grossmeier, Greg (2014년 4월 10일). “Wikimedia's response to the "Heartbleed" security vulnerability” . 《Wikimedia Foundation blog》. Wikimedia Foundation. 2014년 4월 10일에 확인함 .
↑ “Wunderlist & the Heartbleed OpenSSL Vulnerability” . 2014년 4월 10일. 2014년 4월 13일에 원본 문서 에서 보존된 문서. 2014년 4월 13일에 확인함 .
↑ https://twitter.com/KrisJelbring/status/453559871028613121
↑ Staff (2014년 4월 8일). “LastPass and the Heartbleed Bug” . 《LastPass 》. 2017년 12월 18일에 원본 문서 에서 보존된 문서. 2014년 4월 13일에 확인함 .
↑ “LogMeIn and OpenSSL” . LogMeIn . 2014년 4월 13일에 원본 문서 에서 보존된 문서. 2014년 4월 10일에 확인함 .
프로토콜과 기술 공개키 인프라 같이 보기 역사 구현체 공증 취약점