NetSpectre는 진입을 위해 머신 포트를 폭격합니다
4 분 읽기새로운 Spectre 급 CPU 공격은 최근이 등급의 CPU 공격이 어떻게 작동하는지에 대한 자세한 내용을 담은 'NetSpectre : Read Arbitrary Memory over Network'라는 제목의 연구 논문을 발표하면서 학계 과학자들로부터 주목을 받았습니다.
새로운 Spectre CPU 공격을 조금 무섭게 만드는 것은 필요하지 않습니다 공격자는 피해자를 속여 컴퓨터에서 악성 스크립트를 다운로드 및 실행하거나 사용자 브라우저에서 악성 자바 스크립트를 실행하는 웹 사이트에 액세스하도록합니다.
NetSpectre는 목표를 달성 할 방법을 찾을 때까지 단순히 시스템의 네트워크 포트를 공격합니다.
'스펙터 공격은 피해자가 프로그램 명령을 엄격하게 직렬화 된 순서대로 처리하는 동안 발생하지 않는 작업을 추측 적으로 수행하도록 유도하고, 은밀한 채널을 통해 피해자의 기밀 정보를 공격자에게 유출합니다.'
그러나 NetSpectre에는 자체 결함이 없습니다. 네트워크 연결을 통해 공격이 수행되고 CPU 캐시에 저장된 데이터를 대상으로하는 경우 시간당 약 15 비트의 매우 느린 유출 속도를 제공합니다.
연구 논문에서 학계는 Intel CPU에 특화된 CPU의 AVX2 모듈을 통해 처리되는 데이터를 대상으로하는 NetSpectre의 특별한 변형으로 시간당 최대 60 비트를 달성 할 수있었습니다.
두 경우 모두 NetSpectre는 현재 공격자에게 가치가 너무 느리다고 간주됩니다. 즉, NetSpectre는 이론적 인 위협, 기업이 숨겨야 할 것이 아닙니다. 바로 지금 . 그러나 기술이 발전함에 따라 유출 속도는 의심 할 여지없이 증가 할 것이며, 걱정할 CPU 공격을 수행하기 쉬운 완전히 새로운 클래스를 갖게 될 것입니다.
새로운 NetSpectre 공격은 Google 연구원이 올해 (2018) 초에 공개 한 Spectre V1 취약성 (CVE-2017-5753)과 관련이 있습니다. 즉, Spectre V1의 영향을받을 수있는 모든 CPU는 적절한 OS 및 CPU 펌웨어와 함께 배포 된 경우 NetSpectre로 간주됩니다.
현재 NetSpectre에는 두 가지 공격 변종이 있습니다. 대상 시스템에서 데이터를 추출하고 대상 시스템에서 원격으로 ASLR (Address Space Layout Randomisation)을 차단합니다.
첫 번째 유형의 공격에 대한 일련의 이벤트는 다음과 같습니다.
- 분기 예측자를 잘못 변형하십시오.
- 마이크로 아키텍처 요소의 상태를 재설정합니다.
- 마이크로 아키텍처 요소에 대해 조금이라도 짚어 보자.
- 마이크로 아키텍처 요소의 상태를 네트워크에 노출합니다.
- 1 단계에서 공격자는 Spectre 공격을 실행하도록 피해자의 분기 예측기를 잘못 훈련시킵니다. 분기 예측기를 잘못 훈련시키기 위해 공격자는 유효한 인덱스와 함께 누출 가젯을 활용합니다. 유효한 인덱스는 분기 예측자가 항상 분기를 취하는 것을 학습하도록합니다. 즉 분기 예측자는 조건이 참이라고 추측합니다. 이 단계는 누수 가젯에만 의존합니다. 공격자에 대한 피드백이 없으므로 마이크로 아키텍처 상태를 재설정하거나 전송할 필요가 없습니다.
- 2 단계에서 공격자는 마이크로 아키텍처 요소를 사용하여 누출 된 비트를 인코딩 할 수 있도록 마이크로 아키텍처 상태를 재설정해야합니다. 이 단계는 사용 된 마이크로 아키텍처 요소에 따라 크게 달라집니다. 예를 들어 캐시를 활용할 때 공격자는 피해자로부터 대용량 파일을 다운로드합니다. AVX2를 사용하는 경우 공격자는 1 밀리 초 이상을 기다립니다. 이 단계가 끝나면 모든 요구 사항이 충족되어 피해자로부터 약간의 유출이 발생합니다.
- 3 단계에서 공격자는 Spectre 취약점을 악용하여 피해자로부터 단일 비트를 유출합니다. 분기 예측기가 1 단계에서 잘못 학습되었으므로 누출 가젯에 범위를 벗어난 인덱스를 제공하면 인바운드 경로가 실행되고 마이크로 아키텍처 요소가 수정됩니다. 즉, 비트가 마이크로 아키텍처 요소에서 인코딩됩니다.
- 4 단계에서 공격자는 인코딩 된 정보를 네트워크를 통해 전송해야합니다. 이 단계는 원래 스펙터 공격의 두 번째 단계에 해당합니다. 공격자는 전송 가젯이 처리하는 네트워크 패킷을 전송하고 패킷 전송부터 응답이 도착할 때까지의 시간을 측정합니다.
공격 방법 # 2 : 원격으로 ASLR 차단
- 분기 예측자를 잘못 변형하십시오.
- 경계를 벗어난 인덱스에 액세스하여 (알려진) 메모리 위치를 캐시합니다.
- 네트워크를 통해 함수의 실행 시간을 측정하여 범위를 벗어난 액세스가 일부를 캐시했는지 여부를 추론합니다.
스펙터 대책
인텔과 AMD는 추측 장벽으로 lfence 명령을 사용할 것을 권장합니다. 이 명령어는 추측 실행을 중지하기 위해 보안에 중요한 경계 검사 후에 삽입해야합니다. 그러나이를 모든 경계 검사에 추가하면 상당한 성능 오버 헤드가 발생합니다.
NetSpectre는 네트워크 기반 공격이므로 Spectre를 완화하는 것뿐만 아니라 네트워크 계층에 대한 대응책을 통해 예방할 수 있습니다. 동일한 소스에서 수천 개의 동일한 패킷이 전송되므로 사소한 NetSpectre 공격은 DDoS 보호로 쉽게 탐지 할 수 있습니다.
그러나 공격자는 초당 패킷 수와 초당 유출 된 비트 사이의 트레이드 오프를 선택할 수 있습니다. 따라서 비트가 누출되는 속도는 DDoS 모니터링이 감지 할 수있는 임계 값 미만으로 간단히 줄일 수 있습니다. 이는 침입 감지 시스템과 같이 진행중인 공격을 감지하려는 모든 모니터링에 해당됩니다.
이론적으로는 공격이 방지되지는 않지만, 약간의 누출에 필요한 시간이 급격히 증가함에 따라 어느 시점에서 공격이 실행 불가능 해집니다. NetSpectre를 완화하는 또 다른 방법은 네트워크 대기 시간에 인위적인 노이즈를 추가하는 것입니다. 측정 횟수는 네트워크 지연 시간의 차이에 따라 달라 지므로 추가 노이즈는 공격자가 더 많은 측정을 수행해야합니다. 따라서 네트워크 대기 시간의 차이가 충분히 높으면 많은 측정이 필요하기 때문에 NetSpectre 공격을 실행할 수 없게됩니다.