스펙터 (버그)

스펙터(Spectre)는 분기 예측이 적용된 모든 현대 마이크로프로세서에 영향을 주는 하드웨어 보안 취약점으로, 실패한 분기 예측으로 인해 메모리 데이터가 관찰 가능한 주변 효과(Side effect)로 의도치 않게 노출되는 취약점이다. 가령 예측적으로 실행되는 메모리 접근 인스트럭션이 민감한 데이터에 의해 결정된다면, 공격자는 이로 하여금 프로그램을 실행한 후에 데이터 캐시에 타이밍 공격을 감행하여 해당 메모리 접근을 결정한 데이터를 추론해낼 수 있다. 총 두 개의 스펙터와 관련된 CVE가 존재하는데, 이 중 CVE-2017-5753 (Spectre-V1, 스펙터 변종 1)은 배열 경계 검사를 수행하는 조건부 분기를 우회하는 공격법에 관한 것이며, CVE-2017-5715 (Spectre-V2, 스펙터 변종 2)는 같은 효과를 간접 분기를 이용하여 달성하는 공격법에 관한 것이다. 자바스크립트의 JIT 컴파일러 엔진 역시 스펙터 버그에 영향을 받는 것으로 드러났다. 이 버그에 의하면 어떤 웹사이트가 다른 브라우저에 열린 웹사이트의 데이터를 열람할 수 있고, 심지어 다른 브라우저 자체의 메모리 또한 열람할 수 있다. 인텔은 2018년 3월에 스펙터 변종 2와 멜트다운 버그 해결을 위해 새로 CPU를 디자인할 계획을 밝히고, 같은 해 10월 이를 위한 하드웨어와 펌웨어 수정을 발표하였다. 2002년과 2003년, NEC 사의 Yukiyasu Tsunoo의 연구팀이 MISTY와 DES 대칭키 암호를 공격하는 방법에 대하여 발표하였다. 2005년, 일리노이 대학교 시카고의 Dinel Bernstien은 캐시 타이밍 공격을 이용하여 OpenSSL의 AES 키를 추출해내는 방법을 발표하였으며, 같은 해 Colin Percival이 OpenSSL RSA 키를 캐시에서 추출해내는 공격을 인텔 프로세서에서 성공시켰다. 2013년, 애들레이드 대학교의 Yuval Yarom과 Katrina Falkner는 특정 정보가 캐시에서 읽혔는지 여부를 악의적 프로그램이 메모리 접근 시간을 측정해서 알아낼 수 있는 방법을 발표하였다. (정보가 캐시에서 읽혔을 경우 접근 시간이 매우 짧다.) 암호와 프로그램의 경우, 캐시에서 읽힌 정보라는 점은 해당 정보가 곧 개인 키일 수도 있다는 점을 시사하는데, 실제로 이 공격법은 GnuPG와 AES 등 여러 암호화 구현들을 대상으로 성공적으로 사용되었다. 2017년 1월, Anders Fogh가 보흠 루르 대학교에서 한 CPU 파이프라인을 여러 코어가 공유하는 프로세서 (즉, SMT 프로세서)에서 은닉 채널을 자동을 찾는 방법에 대한 발표를 하였다. 스펙터는 구글의 프로젝트 제로에 소속되어 있던 Jann Horn, 그리고 Paul Kocher와 Daniel Genkin, Mike Hamburg, Moritz Lipp, Yuval Yarom의 공동 연구팀에 의해 독립적으로 발견되었다. 발견 후 마이크로소프트 취약점 연구소는 이 취약점에 대한 연구를 인터넷 브라우저의 자바스크립트 JIT 컴파일러 엔진까지 확장시켰다. 이 취약점은 2017년 6월 1일에 이에 영향을 받는 모든 하드웨어 벤더들에게 선통보되었으며, 이듬 해인 2018년 1월 3일 관련된 취약점인 멜트다운과 함께 대중에 공개되었다. 한국어로 "유령"이라는 뜻의 "스펙터"라는 이름은 해당 취약점이 "현대 CPU의 근간 기술인 예측적 실행에 근본 원인을 두고있어서 쉬운 해결책 없이 한동안 사용자와 CPU 벤더를 괴롭힐 것이기 때문에" 붙여졌다고 한다. 2018년 1월 28일, 인텔이 스펙터와 멜트다운 버그에 대한 소식들을 미국 정부에게 통지하기 전에 중국의 IT 기업들과 공유했다는 내용이 보도되었지만, 이에 인텔은 중대한 취약점이 발견되었을 때 버그를 공개하기 앞서 먼저 관련 IT 기업과 문제/해결책 공유하는 것이 업계 표준적인 절차인 점을 강조하였다. 2018년 1월 29일, 마이크로소프트는 인텔이 스펙터 변종 2 방어를 위해 발표한 마이크로코드 패치가 윈도우 시스템에서 재부팅이나 시스템 불안정, 혹은 데이터 손실/손상을 일으킨다고 판단하여 이를 비활성화시키는 윈도우 업데이트를 배포하였다. 이에 따라 새로운 윈도우 업데이트를 설치하는 데 대한 보안 우려가 제기되었다. 2018년 5월 3일, 인텔 프로세서는 물론 AMD와 ARM의 프로세서에도 영향을 줄 가능성이 있는 8개의 유사 스펙터 버그들(가칭 "Spectre-NG")이 추가로 보고되었다. 영향을 받는 프로세서들로는 모든 Core-i 프로세서와 네할렘 (2010) 이후의 제온에서 파생된 프로세서, 그리고 2013년 이후의 아톰 기반 프로세서들이 지목되었다. 인텔은 해당 버그들에 대한 패치를 준비 중이라고 밝혔으나, 해당 마이크로코드 패치 발표는 같은 해 7월 10일까지 연기되었다. 2018년 5월 21일, 인텔이 Spectre-NG 부채널 취약점 가운데 첫 두 개에 해당하는 CVE-2018-3640 (불순한 시스템 레지스터 읽기, 스펙터 변종 3a, Intel SA-00115)와 CVE-2018-3639(예측적 메모리 쓰기 우회, 스펙터 변종 4, HP PSR-2018-0074)에 대한 정보를 발표하였다. 2018년 6월 13일, 인텔이 세 번째 Spectre-NG 취약점인 CVE-2018-3665 (게으른 부동소수점 유닛 상태 복구, Intel SA-00145, 약칭으로 "LazyFP")에 대한 상세한 사항들을 밝혀냈다. 해당 취약점은 어떤 프로세스가 독점적으로 소유하고 있는 부동소수점 유닛 레지스터 값이 다른 프로세스에 노출되는 취약점이다. 2018년 7월 10일, 인텔이 배열 경계 바깥에 값을 쓸 수도 있는 신종 유사 Spectre-NG 취약점과 (CVE-2018-3693, 경계 검사 우회 메모리 쓰기, "스펙터 1.1", 약칭 "BCBS") 또다른 신종 스펙터 변종인 "스펙터 1.2"에 대한 상세한 내용을 발표하였다. 일반적인 스펙터 취약점은 메모리를 읽는 동작만 가능하다. 2018년 7월 말, 자틀랜드와 캘리포니아의 대학 연구진이 CPU 내 반환 스택 버퍼(RSB)를 이용한 신종 코드 실행 취약점인 ret2spec (혹은 "스펙터 v5")와 SpectreRSB를 발표하였다. 비슷한 시기에 그라츠 대학교의 연구진은 "NetSpectre"라는 취약점을 발표하였는데, 이 취약점은 스펙터 변종 1과 비슷하지만, 공격자가 조종할 수 있는 코드가 공격할 장치에서 실행될 필요가 없다는 점에서 차이가 있다. 일반적인 스펙터 취약점은 공격자가 조종 가능한 프로세스가 공격할 프로세스와 함께 같은 장치에서 실행되어야 한다. 2018년 10월 8일, 인텔이 스펙터와 멜트다운 버그를 위한 하드웨어와 펌웨어 패치를 당시 최신 프로세서에 추가하였다. 2018년 11월, 스펙터를 이용한 다섯 가지 새로운 공격 방법에 대한 연구가 발표되었다. 이 연구진은 CPU의 패턴 히스토리 테이블과 분기 타깃 버퍼, 반환 스택 버퍼, 분기 히스토리 테이블을 익스플로잇하여 CPU의 메모리 보호 메커니즘을 우회하고자 하였다고 한다. 2019년 8월, 신종 유사 스펙터 취약점인 SWAPGS가 보고되었다. (CVE-2019-1125) 스펙터는 프로그램을 속여 해당 프로그램의 메모리 공간 내 임의의 주소에 접근하도록 하는 취약점이다. 공격자는 이 취약점을 이용하여 데이터에 접근할 수 있고, 잠재적으로 민감한 데이터를 얻는데 활용할 수도 있다. 단일한 방어책이 존재하는 여타 취약점과는 달리, 스펙터 백서에는 다양한 종류의 변종 취약점들이 소개되고 있는데, 이들은 모두 예측적 실행 (특히 분기 예측) 중에 발생하는 주변 효과(사이드 이펙트)를 이용한다. 예측적 실행은 현대 마이크로프로세서에서 메모리 접근 지연시간을 감추어 전반적인 실행 속도를 향상시키는데 통용되는 일반적인 기술이다. 스펙터는 동시에 공개된 멜트다운 버그와도 관련성이 있지만, 멜트다운과는 달리 특정 프로세서의 구체적인 특징을 전제로 두지 않아 좀 더 일반적이다. (멜트다운의 경우 메모리 관리/보호 체계에 대한 특징을 전제로 한다.) 스펙터 취약점을 이용해 다른 프로그램의 메모리 열람이 가능. 멜트다운 (버그) “A Critical Intel Flaw Breaks Basic Security for Most Computers”. 《Wired》.  Kocher, Paul; Genkin, Daniel; Gruss, Daniel; Haas, Werner; Hamburg, Mike; Lipp, Moritz; Mangard, Stefan; Prescher, Thomas; Schwarz, Michael; Yarom, Yuval (2018). “Spectre Attacks: Exploiting Speculative Execution” (PDF). 2018년 1월 3일에 원본 문서 (PDF)에서 보존된 문서.  Greenberg, Andy (2018년 1월 3일). “A Critical Intel Flaw Breaks Basic Security for Most Computers”. 《Wired》. 2018년 1월 3일에 원본 문서에서 보존된 문서. 2018년 1월 3일에 확인함.  Bright, Peter (2018년 1월 5일). “Meltdown and Spectre: Here's what Intel, Apple, Microsoft, others are doing about it”. 《Ars Technica》. 2018년 5월 26일에 원본 문서에서 보존된 문서. 2018년 1월 6일에 확인함.  “Meltdown and Spectre”. 《Graz University of Technology》. 2018. 2018년 1월 3일에 원본 문서에서 보존된 문서. 2018년 1월 3일에 확인함.  Metz, Cade; Perlroth, Nicole (2018년 1월 3일). “Researchers Discover Two Major Flaws in the World's Computers”. 《The New York Times》. ISSN 0362-4331. 2018년 1월 3일에 원본 문서에서 보존된 문서. 2018년 1월 3일에 확인함.  Warren, Tom (2018년 1월 3일). “Intel's processors have a security bug and the fix could slow down PCs”. 《The Verge》. 2018년 1월 3일에 원본 문서에서 보존된 문서. 2018년 1월 3일에 확인함.  “Spectre Side Channels — The Linux Kernel documentation”. 2020년 1월 4일에 확인함.  Williams, Chris (2018년 1월 4일). “Meltdown, Spectre: The password theft bugs at the heart of Intel CPUs”. 《The Register》. 2018년 5월 27일에 원본 문서에서 보존된 문서.  Warren, Tom (15 March 2018). “Intel processors are being redesigned to protect against Spectre – New hardware coming later this year”. 《The Verge》. 2018년 4월 21일에 원본 문서에서 보존된 문서. 15 March 018에 확인함.  다음 날짜 값 확인 필요: |access-date= (도움말) Shankland, Stephen (2018년 3월 15일). “Intel will block Spectre attacks with new chips this year – Cascade Lake processors for servers, coming this year, will fight back against a new class of vulnerabilities, says CEO Brian Krzanich.”. 《CNET》. 2018년 4월 23일에 원본 문서에서 보존된 문서. 2018년 3월 15일에 확인함.  Coldewey, Devin (2018년 3월 15일). “Intel announces hardware fixes for Spectre and Meltdown on upcoming chips”. 《TechCrunch》. 2018년 4월 12일에 원본 문서에서 보존된 문서. 2018년 3월 28일에 확인함.  Smith, Ryan (2018년 3월 15일). “Intel Publishes Spectre & Meltdown Hardware Plans: Fixed Gear Later This Year”. 《AnandTech》. 2018년 5월 4일에 원본 문서에서 보존된 문서. 2018년 3월 20일에 확인함.  Shilov, Anton (2018년 10월 8일). “Intel's New Core and Xeon W-3175X Processors: Spectre and Meltdown Security Update”. 《AnandTech》. 2018년 10월 9일에 확인함.  Fogh, Anders (2017년 1월 12일), “Covert shotgun: Automatically finding covert channels in SMT”, 《HackPra channel from the Chair of Network and Data Security》 (Ruhruniversität Bochum, Germany)  [1] (Fogh describing a Side Channel using fashioned listening to a safe while turning its wheel.) Tsunoo, Yukiyasu; Tsujihara, Etsuko; Minematsu, Kazuhiko; Miyauchi, Hiroshi (January 2002), “Cryptanalysis of Block Ciphers Implemented on Computers with Cache”, 《ISITA 2002》  Tsunoo, Yukiyasu; Saito, Teruo; Suzaki, Tomoyasu; Shigeri, Maki; Miyauchi, Hiroshi (2003년 9월 10일) [2003-09-10], “Cryptanalysis of DES Implemented on Computers with Cache Cryptanalysis of DES Implemented on Computers with Cache”, 《Cryptographic Hardware and Embedded Systems, CHES 2003, 5th International Workshop》 (Cologne, Germany)  Bernstein, Daniel J. (2005년 4월 14일), 《Cache-timing attacks on AES》 (PDF), 2018년 1월 17일에 원본 문서 (PDF)에서 보존된 문서, 2018년 5월 26일에 확인함  Percival, Colin (May 2005), “Cache missing for fun and profit” (PDF), 《BSDCan '05》 (Conference presentation slides), 2017년 10월 12일에 원본 문서 (PDF)에서 보존된 문서, 2018년 5월 26일에 확인함  [2] Superseded by: 《Cache missing for fun and profit》 (PDF), October 2005, 2018년 5월 19일에 원본 문서 (PDF)에서 보존된 문서, 2018년 5월 26일에 확인함  Yarom, Yuval; Falkner, Katrina (2014년 8월 24일) [2014-08-24], “FLUSH+RELOAD: A High Resolution, Low Noise, L3 Cache Side-Channel Attack”, 《23rd USENIX Symposium》 (San Diego, USA: The University of Adelaide), ISBN 9781931971157, 2018년 3월 5일에 원본 문서에서 보존된 문서, 2018년 5월 26일에 확인함  Yarom, Yuval; Genkin, Daniel; Heninger, Nadia (2016년 9월 21일), “CacheBleed A Timing Attack on OpenSSL Constant Time RSA”, 《CHES 2016》  (Yuval Yarom referring to the history.) Fogh, Anders (2017년 1월 12일), “Covert shotgun: Automatically finding covert channels in SMT”, 《HackPra channel from the Chair of Network and Data Security》 (Ruhruniversität Bochum, Germany)  [3] (Fogh describing a Side Channel using fashioned listening to a safe while turning its wheel.) “Meltdown and Spectre”. 《Graz University of Technology》. 2018. 2018년 1월 3일에 원본 문서에서 보존된 문서. 2018년 1월 3일에 확인함.  “Mozilla Foundation Security Advisory 2018-01 – Speculative execution side-channel attack ("Spectre")”. 《Mozilla》. 2018년 5월 16일에 원본 문서에서 보존된 문서. 2018년 5월 26일에 확인함.  Gibbs, Samuel (2018년 1월 4일). “Meltdown and Spectre: 'worst ever' CPU bugs affect virtually all computers”. 《The Guardian》. 2018년 1월 6일에 원본 문서에서 보존된 문서. 2018년 1월 6일에 확인함.  “Meltdown and Spectre”. 《spectreattack.com》.  Lynley, Matthew (2018년 1월 28일). “Intel reportedly notified Chinese companies of chip security flaw before the U.S. government”. 《TechCrunch》. 2018년 1월 28일에 확인함.  Tung, Liam (2018년 1월 29일). “Windows emergency patch: Microsoft's new update kills off Intel's Spectre fix – The out-of-band update disabled Intel's mitigation for the Spectre Variant 2 attack, which Microsoft says can cause data loss on top of unexpected reboots”. 《ZDNet》. 2018년 1월 29일에 확인함.  “Update to Disable Mitigation against Spectre, Variant 2”. 《마이크로소프트》. 2018년 1월 26일. 2018년 1월 29일에 확인함.  Leonhard, Woody (2018년 1월 29일). “Windows surprise patch KB 4078130: The hard way to disable Spectre 2 – Disabling the disruptive 'Spectre 2' bugs in Intel processors has always been quite straightforward, but on Friday night Microsoft released a download-only patch that also does the job. You probably don't want it.”. 《Computerworld》. 2018년 1월 29일에 원본 문서에서 보존된 문서. 2018년 1월 29일에 확인함.  Schmidt, Jürgen (2018년 5월 3일). “Super-GAU für Intel: Weitere Spectre-Lücken im Anflug”. 《c't - magazin für computertechnik》 (독일어) (Heise online). 2018년 5월 5일에 원본 문서에서 보존된 문서. 2018년 5월 3일에 확인함.  Schmidt, Jürgen (2018년 5월 3일). “Exclusive: Spectre-NG – Multiple new Intel CPU flaws revealed, several serious”. 《c't - magazin für computertechnik》 (Heise online). 2018년 5월 5일에 원본 문서에서 보존된 문서. 2018년 5월 4일에 확인함.  Fischer, Martin (2018년 5월 3일). “Spectre-NG: Intel-Prozessoren von neuen hochriskanten Sicherheitslücken betroffen, erste Reaktionen von AMD und Intel”. 《c't - magazin für computertechnik》 (독일어) (Heise online). 2018년 5월 5일에 원본 문서에서 보존된 문서. 2018년 5월 4일에 확인함.  Kumar, Mohit (2018년 5월 4일). “8 New Spectre-Class Vulnerabilities (Spectre-NG) Found in Intel CPUs”. 《The Hacker News》. 2018년 5월 5일에 원본 문서에서 보존된 문서. 2018년 5월 5일에 확인함.  Tung, Liam (2018년 5월 4일). “Are 8 new 'Spectre-class' flaws about to be exposed? Intel confirms it's readying fixes”. 《ZDNet》. 2018년 5월 22일에 원본 문서에서 보존된 문서. 2018년 3월 4일에 확인함.  Armasu, Lucian (2018년 5월 8일). “Intel Postpones Patching 'Spectre NG' CPU Flaws”. 《Tom's Hardware》. 2018년 5월 11일에 확인함.  Schmidt, Jürgen (2018년 5월 7일). “Spectre-NG: Intel verschiebt die ersten Patches – koordinierte Veröffentlichung aufgeschoben”. 《Heise online》 (독일어). 2018년 5월 7일에 원본 문서에서 보존된 문서. 2018년 5월 7일에 확인함.  Windeck, Christof (2018년 5월 21일). “CPU-Sicherheitslücken Spectre-NG: Updates rollen an Update”. 《Heise Security》 (독일어). 2018년 5월 21일에 원본 문서에서 보존된 문서. 2018년 5월 21일에 확인함.  “Side-Channel Vulnerability Variants 3a and 4”. US-CERT. 2018년 5월 21일. Alert (TA18-141A). 2018년 5월 21일에 원본 문서에서 보존된 문서. 2018년 5월 21일에 확인함.  Vaughan-Nichols, Steven J. (2018년 6월 13일). “Another day, another Intel CPU security hole: Lazy State – Intel has announced that there's yet another CPU security bug in its Core-based microprocessors.”. 《ZDNet》. 2018년 6월 14일에 확인함.  Armasu, Lucian (2018년 6월 14일). “Intel CPUs Affected By Yet Another Speculative Execution Flaw”. 《Tom's Hardware》. 2018년 6월 14일에 확인함.  Windeck, Christof (2018년 6월 14일). “CPU-Bug Spectre-NG Nr. 3: Lazy FP State Restore”. 《Heise Security》 (독일어). 2018년 6월 14일에 원본 문서에서 보존된 문서. 2018년 6월 14일에 확인함.  Windeck, Christof (2018년 6월 14일). “Spectre-NG: Harte Kritik von OpenBSD-Entwickler Theo de Raadt”. 《Heise Security》 (독일어). 2018년 6월 14일에 원본 문서에서 보존된 문서. 2018년 6월 14일에 확인함.  “Speculative Execution Branch Prediction Side Channel and Branch Prediction Analysis Method”. Intel. 2018년 7월 10일 [2018-01-03]. INTEL-OSS-10002. 2018년 7월 15일에 원본 문서에서 보존된 문서. 2018년 7월 15일에 확인함.  “Analysis of Speculative Execution Side Channels” (PDF) (White Paper). Revision 4.0. Intel. July 2018. 336983-004. 2018년 7월 15일에 확인함.  Schmidt, Jürgen (2018년 7월 11일). “Spectre-NG: Intel dokumentiert "spekulativen Buffer Overflow"”. 《Heise Security》 (독일어). 2018년 7월 15일에 원본 문서에서 보존된 문서. 2018년 7월 15일에 확인함.  [4] Kiriansky, Vladimir; Waldspurger, Carl (2018). “Speculative Buffer Overflows: Attacks and Defenses”. arXiv:1807.03757v1 [cs.CR].  더 이상 지원되지 않는 변수를 사용함 (도움말) Schwarz, Michael; Schwarzl, Martin; Lipp, Moritz; Gruss, Daniel (July 2018). “NetSpectre: Read Arbitrary Memory over Network” (PDF). Graz University of Technology. 2018년 7월 28일에 원본 문서 (PDF)에서 보존된 문서. 2018년 7월 28일에 확인함.  Windeck, Christof (2018년 7월 27일). “NetSpectre liest RAM via Netzwerk aus” (독일어). Heise Security. 2018년 7월 28일에 원본 문서에서 보존된 문서. 2018년 7월 28일에 확인함.  Shilov, Anton (2018년 10월 8일). “Intel's New Core and Xeon W-3175X Processors: Spectre and Meltdown Security Update”. 《AnandTech》. 2018년 10월 9일에 확인함.  Cimpanu, Catalin (2018년 11월 14일). “Researchers discover seven new Meltdown and Spectre attacks”. 《ZDNet》. 2018년 11월 17일에 확인함.  “Bitdefender SWAPGS Attack Mitigation Solutions”. 《www.bitdefender.com》. 2019년 8월 7일에 확인함.  “Documentation/admin-guide/hw-vuln/spectre.rst - chromiumos/third_party/kernel - Git at Google”. 《chromium.googlesource.com》. 2019년 8월 7일에 원본 문서에서 보존된 문서. 2019년 8월 7일에 확인함.  Winder, Davey (2019년 8월 6일). “Microsoft Confirms New Windows CPU Attack Vulnerability, Advises All Users To Update Now”. 《Forbes》. 2019년 8월 7일에 확인함.  웹사이트 스펙터에 대한 논문 Google Project Zero write-up