스펙터와 멜트 다운 이라는 두 가지 새로운 심각한 보안 결함이 발견되었습니다 .
Raspberry Pi는 Spectre 및 / 또는 Meltdown에 취약합니까?
스펙터와 멜트 다운 이라는 두 가지 새로운 심각한 보안 결함이 발견되었습니다 .
Raspberry Pi는 Spectre 및 / 또는 Meltdown에 취약합니까?
답변:
ARM 자체 에 따르면 Pi 4 이전의 모든 모델에 사용 된 프로세서 코어는 취약하지 않습니다 .
대부분의 Arm 프로세서는이 사이드 채널 추론 메커니즘의 변형에 영향을받지 않습니다. 민감한 Arm 설계 프로세서의 작은 하위 집합에 대한 결정적인 목록은 아래에 있습니다. [표 링크 참조]
구형 Pis가 사용하는 프로세서 코어는 다음과 같습니다.
파이 1 과 제로 (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2 및 Pi 3 : ARM Cortex-A53
위의 코어 중 어느 것도 모든 버전의 공격에 취약한 것으로 표시되지 않습니다 (실제로 이러한 공격에는 알려진 취약성이 없기 때문에 전혀 나열되지 않습니다).
라즈베리 파이 4 용도 텍스 A72 , 취약으로 나열 에 명시된 바와 4. 변형 1, 2, 3A 및 유령의 공격에 취약 라즈베리 파이 4를? Raspbian에는 이러한 취약점에 대한 소프트웨어 완화 기능이 포함되어 있으므로 악용 위험이 낮아야합니다. 다른 운영 체제에는 적절한 완화 기능이 포함되어 있지 않을 수 있으며 ARM 은 Cortex-A72 용 하드웨어 완화 기능이 릴리스되었지만 Pi 4에 적용되는지 여부는 확실하지 않습니다.
변형 1 및 2 (CVE-2017-5753 및 CVE-2017-5715)는 스펙터 로 알려져 있으며 변형 3 (CVE-2017-5754) 및 3a (ARM에서 조사한 관련 공격)를 Meltdown 이라고 합니다. 따라서 Pi 4 이전의 Raspberry Pi 장치는 Spectre 또는 Meltdown에 취약한 것으로 간주되지 않습니다.
Pi (모든 버전)는 취약하지 않습니다.
Spectre와 Meltdown은 모두 비 순차적 실행을 요구합니다. 코어 텍스 A7 초기 파이 2과에서 사용되는 코어 텍스 A53 나중에 파이 2, 파이 3에서 사용은 엄격히에서 주문 아키텍처입니다. ARM11 파이 (1)에서 사용되는 일 스펙터 또는 붕괴를 허용하는 방식으로 부분적으로 순서가 아닌 것이다.
ARM은이를 확인합니다 . ARM 프로세서의 매우 제한된 하위 집합 만이 Spectre에 취약한 하드웨어를 가지고 있으며, 훨씬 제한된 하위 집합은 Meltdown에 취약하며 모든 위협 요소를 완화 할 수 있다고 믿습니다.
나는 이것에 대한 나의 다른 테이크를 제공하고 싶다.
Meltdown에 관해서는 일부 프로세서에서 매우 특정한 취약점이므로 ARM이 Raspberry Pi의 CPU가 취약하지 않다고 말하면 신뢰할 수 있습니다.
그러나 Specter는 더 일반적인 취약점입니다. 지금까지 두 가지 변형 만 시연되었지만 더 많은 변형이 있다고 확신합니다. CPU의 결함은 컨텍스트 전환을 수행 할 때 분기 예측기 상태가 플러시되지 않으며, 분기 예측기 상태는 분기 명령 주소의 하위 비트에 의해 색인화되고 전혀 태그되지 않는다는 것입니다. 따라서 프로세스 경계에서도 동일한 분기 예측 상태를 공유하는 두 개의 분기가있을 수 있습니다.
나는 모든 Raspberry Pi 모델의 CPU가 실제로 다른 모든 CPU와 유사하다고 확신합니다. 분기 예측 변수는 2 비트 포화 카운터의 큰 배열 (강하게 취해 지거나 약하게 취해졌으며 약하게 취해지지 않았으며 강력하게 취해졌습니다) 취할수없는). 이 배열의 인덱스는 분기 명령어 주소의 하위 비트이며 태그가 없으며이 예측 변수 상태는 절대 플러시되지 않습니다.
이제 두 분기가 동일한 예측 변수 상태를 공유하는 경우 최근 분기에서 특정 분기가 수행 된 방식을 측정 할 수 있습니다. Spectre의 정보 유출이 있습니다! JavaScript를 통해 비밀번호에서 일부 코드 분기를 실행하도록 브라우저를 안정적으로 트리거하고 분기가 진행된 방식을 측정 할 수 있다면 실제로 비밀번호를 추출 할 수 있습니다. 이제 이것은 극단적 인 예입니다. 아무도 제각각의 암호 비트를 JavaScript에서 실행할 수있는 방식으로 분기하지는 않지만 문제를 보여줍니다.
ARM이 말하는 모든 것을 믿지 마십시오. ARM이 의미하는 바는 아마도 구글이 개발 한 익스플로잇이 이러한 ARM CPU에서 작동하지 않는다는 것입니다. 그것은 그들이 Spectre에 무적임을 의미하지는 않습니다. 다른 종류의 악용이 작동 할 수 있습니다.
이 질문을 참조하십시오 https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix 및 답변의 의미를 이해하십시오. 브라우저에서 실행되는 악성 JavaScript 코드는 스펙터가 프로세스의 다른 브랜치가 사라진 방법으로 인해 발생할 수 있습니다. 브라우저가 신뢰할 수없는 코드를 실행하기 전에 브라우저에서 분기 예측 변수를 플러시하지 않는 한 분기 예측 변수 플러시 명령으로도이 불량 JavaScript 문제를 해결할 수 없습니다.
Spectre는 인덱스로 14 비트를 사용하는 분기 예측기가 32 비트 주소 공간의 나머지 18 비트로 태그되지 않으므로 20 비트 (2 비트 포화 카운터)가 필요하기 때문에 매우 오래 동안 우리와 함께 할 것입니다 2 비트 대신 18 비트 태그). 이것은 분기 예측기 크기에 10을 곱합니다! CPU 제조업체는 특별한 권한없이 사용자 공간에서도 작동하는 분기 예측 변수 플러시 명령을 추가하고 커널은 컨텍스트 전환시 사용하고 커널은 신뢰할 수없는 JIT 코드를 실행할 때 사용합니다. 이것은 실제로 대부분의 스펙터 문제를 해결하지만 이론적으로는 전부는 아닙니다.