하트블리드
CVE 식별자 | CVE-2014-0160 |
---|---|
발견일 | 2014년 4월 1일 |
패치일 | 2014년 4월 7일 |
발견자 | 닐 메타(Neel Mehta) |
영향을 받는 소프트웨어 | OpenSSL (1.0.1) |
웹사이트 | heartbleed |
하트블리드(영어: 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 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을 다시 컴파일하면 된다.
웹사이트 및 웹 서비스
다음의 사이트들은 버그에 대응하여 사용자가 암호를 변경할 것을 권고하는 발표를 하였거나 버그에 영향을 받은 서비스들을 포함하고 있다:
라스트패스 패스워드 매니저는 순방향 비밀성을 사용하여 취약하지는 않았지만 라스트패스에 저장된 취약한 웹사이트의 암호를 변경할 것을 권장하고 있다.[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 DiscoveryWhat 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일에 확인함.