마이크로프로세서 취약점에 대한 이러한 위험한 악용에 대해 심층적으로 살펴보고,왜 더 많은 취약점이 존재하는지
우리는 컴퓨터 프로세서를 하나의 간단한 명령에서 다음 명령으로 완전한 규칙성으로 진행하는 질서 있는 기계라고 생각하는 데 익숙하다. 그러나 진실은,수십 년 동안,그들은 순서가 그들의 작업을 해왔고,다음에 무엇이 올지 추측하고 있다는 것입니다. 그들은 그것에 아주 좋다,당연히. 사실,투기적 실행이라고 불리는 이 능력은 지난 25 년 동안 컴퓨팅 파워의 많은 향상을 뒷받침해 왔습니다. 그러나 2018 년 1 월 3 일,세계는 현대 컴퓨팅을 위해 많은 일을했던이 트릭이 이제 가장 큰 취약점 중 하나라는 것을 알게되었습니다.
2017 년 내내 사이버러스 테크놀로지,구글 프로젝트 제로,그라츠 공과대학,램버스,애들레이드 대학교,펜실베이니아 대학교 연구원들과 암호학자 폴 코처 같은 독립 연구원들이 투기적 실행을 활용한 공격을 별도로 조사했다. 우리 자신의 그룹은 다시 2016 년 이러한 공격 중 하나 뒤에 원래의 취약점을 발견했다,그러나 우리는 함께 모든 조각을 넣어하지 않았다.
붕괴와 스펙터라고 불리는 이러한 유형의 공격은 일반적인 버그가 아니었다. 이 발견 된 당시,붕괴는 모든 인텔 86 마이크로 프로세서와 아이비엠 파워 프로세서뿐만 아니라 일부 팔 기반 프로세서를 해킹 할 수있다. 스펙터와 그 많은 변형은 그 목록에 고급 마이크로 장치 프로세서를 추가했습니다. 즉,거의 모든 컴퓨팅 세계가 취약했습니다.
그리고 투기 실행은 주로 프로세서 하드웨어에 구워지기 때문에 이러한 취약점을 수정하는 것은 쉬운 일이 아닙니다. 낮은 기어로 갈기 위해 컴퓨팅 속도를 유발하지 않고 그렇게하는 것은 더 어려워했다. 사실,년에,작업은 이상에서 멀리이다. 보안 패치는 프로세서 제조업체뿐만 아니라 애플,델,리눅스 및 마이크로 소프트와 같은 공급망 아래로 더 떨어진 곳에서 필요했습니다. 의도적으로 심지어 이러한 취약점 중 일부에 저항 할 수 있도록 설계 칩에 의해 구동 최초의 컴퓨터는 최근에 도착했다.
스펙터와 붕괴는 소프트웨어가 해야 할 일과 프로세서의 마이크로 아키텍처의 차이의 결과이다. 이 두 가지 해킹 클래스는 정보가 그 차이를 통해 누출 될 수있는 방법을 밝혀 냈습니다. 그리고 더 많은 방법이 발견 될 것이라고 믿을만한 모든 이유가 있습니다. 우리는 작년에 두 가지,브랜치 스코프와 스펙트럼을 찾는 것을 도왔습니다.
보안을 희생하지 않고 컴퓨팅 개선의 속도를 유지하려면 이러한 하드웨어 취약점이 어떻게 발생하는지 이해해야합니다. 그리고 그것은 유령과 붕괴를 이해하는 것으로 시작됩니다.
현대 컴퓨팅 시스템에서,씨++와 같은 인간이 이해할 수 있는 언어로 작성된 소프트웨어 프로그램은 어셈블리 언어 명령어-컴퓨터 프로세서가 실행할 수 있는 기본 연산-으로 컴파일된다. 실행 속도를 높이기 위해 최신 프로세서는 파이프 라이닝이라는 접근 방식을 사용합니다. 조립 라인과 마찬가지로 파이프라인은 일련의 단계이며,각 단계는 명령을 완료하는 데 필요한 단계입니다. 인텔 86 프로세서에 대 한 몇 가지 일반적인 단계 메모리에서 명령어를 가져오고 명령어의 의미를 이해 하기 위해 그것을 디코딩 하는 포함 됩니다. 파이프라이닝은 기본적으로 병렬 처리를 명령어 실행 수준으로 끌어올립니다.
1990 년대 이후,마이크로프로세서는 파이프라인 프로세스 속도를 높이기 위해 두 가지 트릭에 의존해 왔다:순서가 잘못된 실행과 추측. 두 명령어가 서로 독립적 인 경우,즉 하나의 출력이 다른 명령어의 입력에 영향을 미치지 않는 경우 재정렬 할 수 있으며 그 결과는 여전히 정확합니다. 이 명령은 파이프 라인에서 정지하는 경우 프로세서가 작업을 계속 할 수 있기 때문에 즉,도움이됩니다. 예를 들어,명령어가 중앙 처리장 자체에 있는 캐시 메모리가 아닌 드램 주 메모리에 있는 데이터를 필요로 하는 경우 해당 데이터를 가져오는 데 몇 백 클럭 사이클이 걸릴 수 있습니다. 프로세서는 기다리는 대신 파이프 라인을 통해 다른 명령을 이동할 수 있습니다.
두 번째 트릭은 추측입니다. 그것을 이해하려면 몇 가지 지침이 반드시 지침이 다음에 오는 변화로 이어진다는 사실부터 시작하십시오. 조건을 확인하고 조건이 참이면 프로세서는 프로그램의 다른 위치로 이동합니다. 이것은 조건부 분기 명령의 예이지만 명령의 흐름을 변경하는 다른 명령어가 있습니다.
이제 이러한 분기 명령이 파이프 라인에 들어갈 때 어떤 일이 발생하는지 고려하십시오. 수수께끼에 지도하는 상황 이다. 지시가 파이프라인의 처음에 도착할 때,파이프라인으로 공정하게 깊은 곳에서 점진할 까지 우리는 그것의 결과를 모른다. 이 결과를 알지 못하면 다음 명령을 가져올 수 없습니다. 단순하지만 순진한 해결책은 분기 명령이 다음 명령어가 어디에서 오는지 알 수있는 지점에 도달 할 때까지 새로운 명령이 파이프 라인에 들어가는 것을 방지하는 것입니다. 파이프라인은 일반적으로 15~25 개의 스테이지를 가지고 있기 때문에 많은 클럭 사이클이 이 프로세스에서 낭비됩니다. 더 나쁜 것은,분기 지침은 많은 프로그램의 모든 지침의 20%이상을 차지,꽤 자주 온다.
파이프라인을 실속시키는 데 드는 높은 성능 비용을 피하기 위해 최신 프로세서는 분기 예측기라는 아키텍처 단위를 사용하여 분기 이후의 다음 명령이 어디에서 왔는지 추측합니다. 이 예측 변수의 목적은 몇 가지 핵심 사항에 대해 추측하는 것입니다. 첫째,조건부 분기가 수행되어 프로그램이 프로그램의 다른 섹션으로 이동하게됩니까,아니면 기존 경로에서 계속됩니까? 그리고 두 번째로,지점이 취해진 경우,프로그램은 어디로 갈 것인가-다음 명령은 무엇이 될 것인가? 이러한 예측으로 무장 한 프로세서 파이프 라인을 완전히 유지할 수 있습니다.
명령 실행은 예측을 기반으로 하기 때문에”추측적으로”실행됩니다. 그러나 예측이 잘못된 것으로 판명되면 프로세서는 추측 적으로 실행 된 명령어의 효과를 비교적 빠르게 취소 할 수 있어야합니다.
분기 예측기의 설계는 컴퓨터 아키텍처 커뮤니티에서 수년 동안 견고하게 연구되어 왔다. 최신 예측 변수는 프로그램 내에서 실행 기록을 결과의 기초로 사용합니다. 이 계획은 많은 다른 종류의 프로그램에서 95%를 초과하는 정확도를 달성하여 추측하지 않는 마이크로 프로세서에 비해 극적인 성능 향상을 가져옵니다. 그러나 미스 스펙 션이 가능합니다. 불행히도,유령 공격이 악용하는 것은 잘못입니다.
문제를 야기한 또 다른 형태의 추측은 파이프라인의 단일 명령 내에서의 추측이다. 그것은 꽤 난해한 개념이므로 압축을 풉니 다. 명령을 실행할 수 있는 권한이 필요하다고 가정합니다. 예를 들어,명령은 운영 체제의 핵심을 위해 예약 된 메모리 부분에 데이터 덩어리를 쓰도록 컴퓨터를 지시 할 수 있습니다. 이 운영 체제 자체에 의해 허가되지 않는 한 당신은 그 일이 싶지 않을 것이다,또는 당신은 컴퓨터를 충돌 위험이 있습니다. 붕괴와 유령이 발견되기 전에,일반적인 지혜는 프로세서가 명령어가 작업을 수행 할 수있는 권한이 있는지 여부를 확인하는 지점에 도달하기 전에 추측 적으로 명령을 실행하는 것이 괜찮다는 것이 었습니다.
결국,권한이 충족되지 않는 경우—이 예에서 운영 체제가 메모리로 바이올린을 시도하도록 허가하지 않은 경우-결과는 버려지고 프로그램은 오류를 나타냅니다. 일반적으로 프로세서는 조건이 결국 해결되고 나쁜 추측으로 인한 결과가 효과적으로 실행 취소되는 한 명령어의 모든 부분을 추측 할 수 있습니다. 그것은 틀림없이 더 위험한 버전을 포함하여 붕괴 버그의 모든 변종 뒤에있는 이러한 유형의 명령어 추측입니다.
추측 공격을 가능하게하는 통찰력은 다음과 같습니다:누락 지정 중에는 프로그램이 직접 관찰 할 수있는 변화가 발생하지 않습니다. 즉,당신은 단순히 투기 실행 중에 생성 된 데이터를 표시 할 쓸 수있는 프로그램이 없습니다. 그러나 추측이 발생한다는 사실은 명령을 실행하는 데 걸리는 시간에 영향을 미침으로써 흔적을 남깁니다. 불행히도,이제 우리는 이러한 타이밍 신호를 감지하고 비밀 데이터를 추출 할 수 있습니다.
이 타이밍 정보는 무엇이며 해커는 어떻게 그것을 붙잡습니까? 이를 이해하려면 측면 채널의 개념을 파악해야합니다. 사이드 채널은 일반적으로 하드 드라이브 또는 메모리와 같은 공유 리소스를 통해 한 엔티티에서 다른 엔티티(일반적으로 둘 다 소프트웨어 프로그램)로 정보를 누출하는 의도하지 않은 경로입니다.
사이드 채널 공격의 예로 프린터에서 나오는 소리를 듣고 그 소리를 사용하여 인쇄되는 것을 추론하도록 프로그래밍 된 장치를 고려하십시오. 이 경우 사운드는 측면 채널입니다.
마이크로프로세서에서 공유 하드웨어 리소스는 원칙적으로 피해자 프로그램에서 공격자 프로그램으로 정보를 유출하는 측면 채널로 사용될 수 있습니다. 일반적으로 사용되는 사이드 채널 공격에서 공유 리소스는 중앙 처리 장치의 캐시입니다. 캐시는 프로그램에서 가장 자주 필요한 데이터를 저장하는 데 사용되는 프로세서 칩의 비교적 작고 빠른 액세스 메모리입니다. 프로그램이 메모리에 액세스할 때 프로세서는 먼저 캐시를 확인합니다. 데이터가 캐시(미스)에 없으면 프로세서는 주 메모리에서 가져올 때까지 기다려야하므로 수백 클럭 사이클이 걸릴 수 있습니다. 그러나 데이터가 메인 메모리에서 도착하면 캐시에 추가되므로 공간을 확보하기 위해 다른 데이터를 버려야 할 수도 있습니다. 캐시는 캐시 집합이라고 하는 세그먼트로 나뉘며 주 메모리의 각 위치에는 캐시에 해당하는 집합이 있습니다. 이 조직에서는 전체를 검색하지 않고도 캐시에 무언가가 있는지 쉽게 확인할 수 있습니다.
캐시 기반 공격은 스펙터와 붕괴가 현장에 나타나기 전에도 광범위하게 연구되었다. 공격자가 피해자의 데이터를 직접 읽을 수는 없지만 해당 데이터가 캐시와 같은 공유 리소스에 있는 경우에도 공격자는 피해자가 액세스하는 메모리 주소에 대한 정보를 얻을 수 있습니다. 이러한 주소는 민감한 데이터에 따라 달라질 수 있으므로 영리한 공격자가이 비밀 데이터를 복구 할 수 있습니다.
공격자는 어떻게 이 작업을 수행합니까? 몇 가지 가능한 방법이 있습니다. 플러시 및 다시 로드라는 한 가지 변형은 공격자가”플러시”명령을 사용하여 캐시에서 공유 데이터를 제거하는 것으로 시작됩니다. 그런 다음 공격자는 피해자가 해당 데이터에 액세스 할 때까지 기다립니다. 더 이상 캐시에 없기 때문에 피해자가 요청한 데이터는 주 메모리에서 가져와야합니다. 나중에 공격자는 공유 데이터에 액세스하는 동안 이 시간이 걸리는 시간을 정합니다. 캐시 적중(데이터가 캐시에 다시 있음을 의미)은 피해자가 데이터에 액세스했음을 나타냅니다. 캐시 누락은 데이터에 액세스하지 않았음을 나타냅니다. 따라서 데이터에 액세스하는 데 걸리는 시간을 측정함으로써 공격자는 피해자가 액세스 한 캐시 세트를 결정할 수 있습니다. 그것은 알고리즘 마법의 비트를하지만,캐시 세트가 액세스 된 및 암호화 키 및 기타 비밀의 발견으로 이어질 수없는이 지식이 필요합니다.
붕괴,스펙터 및 그 변형은 모두 동일한 패턴을 따릅니다. 첫째,그들은 공격자가 원하는 코드를 실행하는 추측을 트리거합니다. 이 코드는 허가없이 비밀 데이터를 읽습니다. 그런 다음 공격은 플러시 및 재 장전 또는 유사한 측면 채널을 사용하여 비밀을 전달합니다. 마지막 부분은 모든 공격 변형에서 잘 이해되고 유사합니다. 따라서 공격은 첫 번째 구성 요소 만 다릅니다.이 구성 요소는 추측을 유발하고 악용하는 방법입니다.
붕괴 공격
붕괴 공격은 단일 명령 내에서 추측을 이용합니다. 어셈블리 언어 명령은 일반적으로 단순하지만 단일 명령은 서로 종속될 수 있는 여러 작업으로 구성되는 경우가 많습니다. 예를 들어,메모리 읽기 작업은 읽기 중인 메모리 주소와 관련된 사용 권한을 만족시키는 명령에 종속되는 경우가 많습니다. 응용 프로그램은 일반적으로 운영 체제 또는 다른 사용자의 프로그램에 할당 된 메모리가 아닌 할당 된 메모리에서만 읽을 수있는 권한이 있습니다. 논리적으로,우리는 읽기 진행을 허용 하기 전에 사용 권한을 확인 해야 합니다. 그러나 최종 결과가 정확하다면,프로세서 설계자들은 이러한 작업을 순차적으로 자유롭게 실행할 수 있다고 가정했다. 따라서 인텔 마이크로 프로세서는 사용 권한을 확인하기 전에 메모리 위치를 읽지만 사용 권한이 충족되면 프로그램에 결과가 표시되도록 명령 만”커밋”합니다. 그러나 비밀 데이터가 추측 적으로 검색 되었기 때문에 측면 채널을 사용하여 발견 할 수 있으므로이 공격에 인텔 프로세서가 취약 해집니다.
예시 공격은 붕괴 취약점의 변형입니다. 이 공격은 인텔이 언급하는 약점 때문에 인텔 마이크로 프로세서에 영향을 미칩니다. 원래 붕괴 공격은 사용 권한 확인 지연에 의존하지만,미리 예측은 주소 변환이라는 파이프라인의 단계에서 발생하는 추측에 의존합니다.
소프트웨어는 컴퓨터의 메모리 및 스토리지 자산을 가상 메모리의 단일 연속 스트레치로 봅니다. 그러나 물리적으로 이러한 자산은 서로 다른 프로그램과 프로세스간에 분할되고 공유됩니다. 주소 변환은 가상 메모리 주소를 실제 메모리 주소로 바꿉니다.
마이크로 프로세서의 특수 회로는 가상-실제 메모리 주소 변환에 도움이되지만 속도가 느려질 수 있으므로 여러 메모리 조회가 필요합니다. 인텔의 마이크로프로세서는 번역 과정에서 추측을 허용하여,프로그램이 그 데이터를 누가 소유했는지에 관계없이 캐시의 일부 내용을 추측적으로 읽을 수 있게 한다. 공격자는이 작업을 수행 한 다음 이미 설명한 사이드 채널 접근 방식을 사용하여 데이터를 공개 할 수 있습니다.
어떤면에서는 예시가 붕괴보다 더 위험하고 다른면에서는 덜 위험합니다. 인텔의 프로세서 아키텍처 구현에 대한 세부 사항 때문에,캐시의 내용을 읽을 수 있습니다. 그러나,예시도는 엘 1 의 모든 내용을 읽을 수 있습니다—프로그램에 의해 단지 데이터 주소.
스펙터 공격
스펙터 공격은 분기 예측 시스템을 조작합니다. 이 시스템은 분기 방향 예측기,분기 대상 예측기 및 리턴 스택 버퍼의 세 부분으로 구성됩니다.
분기 방향 예측기는 프로그래밍 언어로”만약”명령문을 구현하는 데 사용된 것과 같은 조건부 분기가 취해질지를 예측한다. 이를 위해 유사한 분기의 이전 동작을 추적합니다. 예를 들어,분기 연속으로 두 번 촬영하는 경우,미래의 예측은 촬영해야한다고 말할 것을 의미 할 수있다.
분기 대상 예측기는 간접 분기라고 하는 대상 메모리 주소를 예측합니다. 조건부 분기에서는 다음 명령의 주소의 철자가 지정되지만 간접 분기의 경우 해당 주소를 먼저 계산해야 합니다. 이러한 결과를 예측하는 시스템은 분기 대상 버퍼라는 캐시 구조입니다. 기본적으로 간접 분기의 마지막 계산된 대상을 추적하고 이 대상을 사용하여 다음 간접 분기가 발생할 위치를 예측합니다.
리턴 스택 버퍼는”리턴”명령의 대상을 예측하는 데 사용됩니다. 서브루틴이 프로그램 도중”불릴”때,반환 명령은 서브루틴이 불린 점에 프로그램 이력서 일을 만든다. 코드에서 여러 다른 위치에서 동일한 함수를 호출할 수 있기 때문에 이전 반환 주소만 기반으로 반환할 올바른 지점을 예측하려고 하면 작동하지 않습니다. 대신 시스템은 프로세서의 메모리 조각인 리턴 스택 버퍼를 사용하여 함수의 리턴 주소를 호출할 때 유지합니다. 그런 다음 서브루틴의 코드에서 반환이 발생할 때 이러한 주소를 사용합니다.
이 세 가지 구조는 각각 두 가지 방법으로 악용 될 수 있습니다. 첫째,예측 인자는 의도적으로 잘못 될 수 있습니다. 이 경우 공격자는 시스템을 혼란스럽게하도록 설계된 겉보기에 무고한 코드를 실행합니다. 나중에 공격자는 의도적으로 놓칠 분기를 실행하여 프로그램이 공격자가 선택한 코드(가젯)로 이동하게 합니다. 그런 다음 가젯은 데이터 도용에 대해 설정합니다.
두 번째 방식의 스펙터 공격을 직접 분사라고 한다. 어떤 조건에서는 세 가지 예측 변수가 서로 다른 프로그램간에 공유된다는 것이 밝혀졌습니다. 이것이 의미하는 것은 공격 프로그램이 실행될 때 신중하게 선택된 잘못된 데이터로 예측 변수 구조를 채울 수 있다는 것입니다. 의식하지 못하는 피해자가 공격자와 동시에 또는 그 이후에 자신의 프로그램을 실행하는 경우,피해자는 공격자에 의해 채워지고 무의식적으로 가젯을 설정 한 예측 상태를 사용하여 바람됩니다. 이 두 번째 공격은 피해자 프로그램이 다른 프로그램에서 공격받을 수 있기 때문에 특히 걱정 스럽습니다. 이러한 위협은 특히 클라우드 서비스 공급자가 클라이언트 데이터가 보호된다는 것을 보장 할 수 없기 때문에 손상됩니다.
스펙터 및 멜트 다운 취약점은 하드웨어에서 취약점이 발생했기 때문에 컴퓨팅 산업에 수수께끼를 제시했습니다. 어떤 경우에는 우리가 설치된 서버와 컴퓨터의 대부분을 구성하는 기존 시스템에 대해 할 수있는 최선의 방법은 손상을 제한하기 위해 소프트웨어를 다시 작성하는 것입니다. 그러나 이러한 솔루션은 임시 불완전,종종 컴퓨터 성능에 큰 타격을 초래할 수 있습니다. 이와 동시에,연구원들과 중앙 처리 장치 설계자들은 보안을 손상시키지 않으면서 추측을 유지하는 미래의 기업용 마이크로프로세서를 설계하는 방법에 대해 생각하기 시작했다.
커널 페이지 테이블 격리라는 하나의 방어는 이제 리눅스와 다른 운영 체제에 내장되어 있습니다. 각 응용 프로그램은 컴퓨터의 메모리 및 저장소 자산을 가상 메모리의 단일 연속 스트레치로 자체 봅니다. 그러나 물리적으로 이러한 자산은 서로 다른 프로그램과 프로세스간에 분할되고 공유됩니다. 페이지 테이블은 기본적으로 운영 체제의 맵으로 가상 메모리 주소의 어느 부분이 실제 메모리 주소에 해당하는지 알려줍니다. 커널 페이지 테이블은 운영 체제의 핵심에 대해 이 작업을 수행합니다. 시스템 및 이와 유사한 시스템은 사용자의 프로그램(및 잠재적으로 공격자의 프로그램)이 실행 중일 때 운영 체제와 같은 메모리에 비밀 데이터를 액세스 할 수 없게하여 붕괴를 방지합니다. 이 페이지 테이블에서 금지 된 부분을 제거하여이 작업을 수행합니다. 그렇게하면 추측 적으로 실행 된 코드조차도 데이터에 액세스 할 수 없습니다. 그러나 이 솔루션은 운영 체제가 실행될 때 이러한 페이지를 매핑하고 나중에 매핑 해제하기 위한 추가 작업을 의미합니다.
또 다른 방어 클래스는 프로그래머에게 위험한 추측을 제한하는 도구 세트를 제공합니다. 이 양성,빈 가젯을 대상으로 추측을 강제로 있도록 예를 들어,구글의 레트 폴린 패치,스펙터 변형 2 에 취약 가지의 종류를 다시 작성합니다. 프로그래머는 조건부 분기를 따르는 투기 메모리 읽기를 제한하여 스펙터 1 을 제한하는 어셈블리 언어 명령을 추가 할 수도 있습니다. 편리하게,이 명령은 이미 프로세서 아키텍처에 존재하며 다른 프로세서 코어에서 발생하는 메모리 작업 간의 올바른 순서를 적용하는 데 사용됩니다.
프로세서 설계자로서 인텔과 앰디드는 일반 소프트웨어 패치보다 더 깊이 들어가야 했다. 그들의 수정은 프로세서의 마이크로 코드를 업데이트합니다. 마이크로 코드는 일반 소프트웨어의 어셈블리 언어와 프로세서의 실제 회로 사이에 맞는 명령어 계층입니다. 마이크로코드는 프로세서가 실행할 수 있는 명령 집합에 유연성을 추가합니다. 또한 마이크로코드를 사용할 때 복잡한 명령어가 파이프라인에서 쉽게 실행할 수 있는 여러 개의 간단한 명령어로 변환되기 때문에 중앙 처리 장치를 더 간단하게 설계할 수 있습니다.
기본적으로 인텔과 인텔은 추측을 제한하는 방식으로 일부 어셈블리 언어 명령어의 동작을 변경하기 위해 마이크로 코드를 조정했습니다. 예를 들어,인텔 엔지니어들은 운영 체제가 특정 상황에서 분기 예측 구조를 비울 수 있도록하여 일부 공격을 방해하는 옵션을 추가했습니다.
다른 솔루션 클래스는 공격자가 측면 채널을 사용하여 데이터를 전송하는 능력을 방해하려고 시도합니다. 다른 프로그램이 자원을 공유하지 않도록 예를 들어,미트의 개같은 기술은 안전하게 프로세서 캐시를 분할합니다. 가장 야심 차게,프로세서의 캐시 및 기타 하드웨어와 분리 된 추측에 전념하는 프로세서에 구조를 도입 할 새로운 프로세서 아키텍처에 대한 제안이 있습니다. 이렇게 하면 추측적으로 실행되지만 결국 커밋되지 않은 모든 작업이 표시되지 않습니다. 투기 결과가 확인되면 투기 데이터가 프로세서의 주요 구조로 전송됩니다.
추측 취약점은 20 년 이상 프로세서에 잠복 해 왔으며,지금까지 누구나 알고 있듯이 개발되지 않았습니다. 그들의 발견은 업계를 크게 뒤흔들었고 사이버 보안이 소프트웨어 시스템뿐만 아니라 하드웨어에서도 어떻게 문제가되는지 강조했습니다. 초기 발견 이후,스펙터 및 붕괴의 약 12 변종이 밝혀졌으며,더 많은 것이있을 가능성이 높습니다. 스펙터와 붕괴는 결국 컴퓨터 성능을 향상시키기 위해 우리가 의존해온 핵심 설계 원칙의 부작용으로 현재 시스템 설계에서 이러한 취약점을 제거하는 것을 어렵게 만듭니다. 새로운 중앙 처리 장치 디자인은 추측을 유지하기 위해 진화 할 것이며,이러한 공격을 가능하게하는 측면 채널 누출 유형을 방지 할 것입니다. 그럼에도 불구하고 프로세서 칩 설계를 포함한 미래의 컴퓨터 시스템 설계자는 의사 결정의 보안 영향을 인식하고 더 이상 성능,크기 및 전력에 대해서만 최적화하지 않아야합니다.
저자 소개
나엘 아부 가잘레는 리버사이드 캘리포니아 대학의 컴퓨터 공학 프로그램의 의장이다. 드미트리 에프티쉬킨은 버지니아 주 윌리엄스버그에 있는 윌리엄 앤 메리 대학의 컴퓨터 과학 조교수이다. 드미트리 포노마레프는 빙엄턴 뉴욕 주립 대학의 컴퓨터 과학 교수이다.
폴 코처와 스펙터를 집단적으로 공개한 다른 연구자들이 먼저 여기에서 설명했다. 모리츠 립프는 유즈닉스 보안’18 에서이 강연에서 붕괴를 설명했다. 예시는 같은 컨퍼런스에서 자세히 설명되었습니다.
저자 중 한 명을 포함한 연구자 그룹이 추가적인 잠재적 공격을 폭로하는 스펙터 및 붕괴 공격에 대한 체계적인 평가를 내놓았다. 구글 엔지니어들은 최근 사이드 채널 및 투기 실행 공격이 머물 여기에 있다는 결론에 도달했다.