Raspberry Pi는 Spectre 또는 Meltdown 익스플로잇에 취약합니까?


58

스펙터와 멜트 다운 이라는 두 가지 새로운 심각한 보안 결함이 발견되었습니다 .

Raspberry Pi는 Spectre 및 / 또는 Meltdown에 취약합니까?


1
연구원에 따르면 : 현재 ARM 및 AMD 프로세서가 Meltdown의 영향을 받는지 확실하지 않습니다.
Janghou

1
브라우저 (Chrome / Firefox)에서 Javascript를 사용하여 비밀번호를 도용 할 수있는 예가 있습니다.
Janghou

4
@ alex2003super : 놀라지 마십시오. 영향을받는 장치의 규모가 엄청나지만 실제로이 문제가 실제로 어떤 식 으로든 영향을받을 가능성은 매우 낮습니다. 그리고 그들이 아니더라도, 괴물을 쫓아내는 것은 도움이되지 않습니다. :)
Monica와의 가벼움 경주

1
그들이 취약하지 않은 것 같습니다, 여기에 주제 raspberrypi.org/blog/…
Omar Elabd

5
이 게시물이 흥미 롭습니다 : raspberrypi.org/blog/…
pfm

답변:


61

ARM 자체 에 따르면 Pi 4 이전의 모든 모델에 사용 된 프로세서 코어는 취약하지 않습니다 .

대부분의 Arm 프로세서는이 사이드 채널 추론 메커니즘의 변형에 영향을받지 않습니다. 민감한 Arm 설계 프로세서의 작은 하위 집합에 대한 결정적인 목록은 아래에 있습니다. [표 링크 참조]

구형 Pis가 사용하는 프로세서 코어는 다음과 같습니다.

위의 코어 중 어느 것도 모든 버전의 공격에 취약한 것으로 표시되지 않습니다 (실제로 이러한 공격에는 알려진 취약성이 없기 때문에 전혀 나열되지 않습니다).

라즈베리 파이 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에 취약한 것으로 간주되지 않습니다.


다른 아키텍처에 필요한 Linux 커널 변경 사항이 Raspberry Pi에서 실행되는 Linux 버전으로 푸시되는지 궁금합니다. 이러한 변경 사항으로 인해 시스템 속도가 느려지므로 패치가 필요하지 않더라도 RP에 영향을 줄 수 있습니다.
Bobby Durrett

4
커널 패치는 실행중인 프로세서를 감지하고 영향을받는 모델이 아닌 경우 자동으로 비활성화됩니다. 또한 Raspberry Pi (및 대부분의 다른 단일 보드 컴퓨터) 용 커널은 사용 가능한 하드웨어를 위해 특별히 제작되었으므로 관리자가 문제의 패치를 포함하거나 활성화 할 이유가 없습니다.
Perkins

1
@BobbyDurrett, 커널의 Meltdown 변경 사항은 코드베이스의 x86 특정 섹션에 있습니다. Spectre 관련 변경 사항은 모든 곳에서 발생하지만 대부분은 프로세서의 특정 코드 섹션에 있거나 컴파일러에서 처리합니다. 네트워킹 코드의 구조적 변경과 같은 일부 비트는 Pi로 누출 될 수 있지만 대부분은 그렇지 않습니다.
Mark

의견 주셔서 감사합니다. 리눅스 커널 코드의 어떤 부분이 프로세서에 특정한 것인지 생각하는 것은 흥미 롭습니다. 많은 다른 유형의 CPU에서 실행되는 운영 체제를 사용하면 각 프로세서와 관련된 코드를 잘 분리해야합니다.
Bobby Durrett

22

Pi (모든 버전)는 취약하지 않습니다.

Spectre와 Meltdown은 모두 비 순차적 실행을 요구합니다. 코어 텍스 A7 초기 파이 2과에서 사용되는 코어 텍스 A53 나중에 파이 2, 파이 3에서 사용은 엄격히에서 주문 아키텍처입니다. ARM11 파이 (1)에서 사용되는 일 스펙터 또는 붕괴를 허용하는 방식으로 부분적으로 순서가 아닌 것이다.

ARM은이를 확인합니다 . ARM 프로세서의 매우 제한된 하위 집합 만이 Spectre에 취약한 하드웨어를 가지고 있으며, 훨씬 제한된 하위 집합은 Meltdown에 취약하며 모든 위협 요소를 완화 할 수 있다고 믿습니다.


10

나는 이것에 대한 나의 다른 테이크를 제공하고 싶다.

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 코드를 실행할 때 사용합니다. 이것은 실제로 대부분의 스펙터 문제를 해결하지만 이론적으로는 전부는 아닙니다.


" 이제 두 지점이 동일한 예측 변수 상태를 공유하는 경우 특정 지점이 최근 과거에 어떤 방식으로 사용되는지 측정 할 수 있습니다. "추론 적 실행없이 어떻게 수행합니까?
Peter Taylor

@PeterTaylor이 ARM CPU에는 분기 예측기가 있으므로 추측 실행이 있습니다. 그들이 누락 된 것은 순서가 잘못된 실행입니다.
juhist

그것들은 추론 적 명령어 페칭을 갖도록 문서화되었지만 추측적인 실행은 아닙니다. 여전히 오라클로 사용하는 것이 가능할 수도 있습니다.
피터 테일러

사소하지만 측정 가능한 대기 시간 차이가 있기 때문에 추론 적 인 페치조차도 충분할 수 있습니다.
juhist

리눅스는 이미 커널 주소 랜덤 화를 추가하고 있었다. 지점의 주소를 예측할 수 없습니다.
MSalters
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.