현재 커널과 마이크로코드가 설치된 Debian Stretch 및 테스트/버스터 시스템에서는 여전히 Meltdown 및 Spectre가 /proc/cpuinfo
.
그러나 실행 중인 spectre-meltdown-checker
디스플레이는 취약하지 않습니다.
/proc/cpuinfo
그래서 무엇이 표시되는지 알고 싶습니다 . 이것은 단지 이 CPU의 버그인가요? 시스템 패치에도 불구하고 이러한 취약점이 항상 나열됩니까?
답변1
/proc/cpuinfo
"버그" 필드의 의도는 커밋 메시지에 설명되어 있습니다.소개했다:
x86/cpufeature
:오류 표시 추가/proc/cpuinfo
기능 플래그와 유사한 방식으로 우리가 실행 중인 CPU에 오류 해결을 감지 및/또는 적용했음을 나타내는 덤프 플래그가 있습니다.
장점은 이러한 기능이 CPU 기능처럼 시간이 지나도 누적되지 않는다는 것입니다.
이전에는 커널이 감지한 하드웨어 오류가 다음과 같이 나열되었습니다.별도의 기능(예를 들어32비트 x86 시스템에 자체 항목이 있는 악명 높은 F00F 오류입니다 f00f_bug
. /proc/cpuinfo
"버그" 항목은 이러한 문제를 다음과 같은 스타일로 단일 기능으로 유지하기 위해 도입되었습니다.x86 CPU 플래그.
실제로 이러한 항목이 의미하는 바는 메시지에서 볼 수 있듯이 커널이 보장된다는 것입니다.감지됨하드웨어 오류입니다. 문제가 해결되었는지 확인하려면 다른 곳(시작 메시지, 특정 /proc
항목 또는 /sys
의 파일 등 ) 을 살펴봐야 합니다 ./sys/devices/system/cpu/vulnerabilities/
"버그" 항목의 유용성은 두 가지 측면에서 제한됩니다. 첫째, 실제 음수와 알 수 없는 숫자를 구별할 수 있는 방법이 없습니다. 이 필드가 "cpu_meltdown"을 지정하지 않으면 커널이 Meltdown을 인식하지 못한다는 뜻인지 아니면 이 필드만으로는 알 수 없습니다. CPU는 멜트다운의 영향을 받지 않습니다. 두 번째는 감지가 지나치게 단순하다는 점입니다. 주의를 기울이는 데 오류가 있으며 그렇지 않은데도 CPU가 취약하다고 보고할 수 있습니다. "탐지"는 테이블 기반이므로 정확도는 실행 중인 커널 버전에 따라 달라집니다.
Meltdown 및 Spectre 오류의 경우 감지 프로세스는 다음 값을 제공합니다./proc/cpuinfo
작동 원리는 다음과 같습니다, x86에서:
- CPU의 경우추측 없음(레벨 486, 일부 펜티엄 레벨, 일부 아톰), 멜트다운이나 스펙터의 영향을 받는 것으로 표시되지 않습니다.
- 나머지 모든 CPU는 마이크로코드 버전 등에 관계없이 Spectre 변형 1 및 2의 영향을 받는 것으로 표시됩니다.
- CPU의 경우투기적 상점 우회에 덜 취약한 것으로 분류되지 않음, 해당 마이크로코드가 SSB 완화로 선언되지 않고 CPU가 SSB 완화로 선언되지 않은 경우 SSB 영향을 받은 것으로 표시됩니다.
- CPU의 경우멜트다운에 덜 취약한 것으로 분류되지 않음(AMD) 마이크로코드가 Meltdown을 완화한다고 주장하지 않는 경우 Meltdown의 영향을 받은 것으로 표시됩니다.
답변2
Meltdown/Spectre 취약점은 CPU 칩셋 설계/아키텍처에 존재하며 향후 새로운 하드웨어를 구입할 필요가 없습니다. 이러한 패치는 단지 보안에 대한 좋은 환상일 뿐입니다.장기적으로는. 시간이 지남에 따라 현재 패치를 우회하는 이러한 결함을 악용하는 새로운 방법이 나타날 수 있습니다.
즉, 현재 소프트웨어 패치/마이크로코드쉬움Spectre/Meltdown 계열의 취약점을 악용하는 알려진 방법에 대한 문제가 있지만, 애초에 이를 허용하는 기본 CPU 설계 문제는 해결되지 않습니다. 장기적으로 영향을 받는 CPU(여러 세대)는 공격을 멈추지 않았습니다(그리고 앞으로도 그럴 가능성이 낮습니다).
그러나 @Gilles가 올바르게 지적했듯이 이 경고를 발행한다고 해서 현재 알려진 Spectre/Meltdown 공격이 작동한다는 의미는 아닙니다. 패치가 설치되어 있으면 작동하지 않습니다.
질문에 언급된 경우, 커널은 Spectre/Meltdown(x86에 대해서만 이야기하는 경우 현재 모든 x86 CPU)의 영향을 받는 것으로 알려진 CPU 모델만 확인하므로 cpu-insecure
여전히 버그 섹션/행에 나열 됩니다 /proc/cpuinfo
.
/proc/cpuinfo
커널에 KPTI 패치가 있으면 CPU_insecure가 포함되어 있는지 확인하십시오 .KPTI 패치에서 다음 코드 조각을 찾았습니다.
/* Assume for now that ALL x86 CPUs are insecure */ setup_force_cpu_bug(X86_BUG_CPU_INSECURE);
커널 업데이트 후에는 다음을 얻을 수 있습니다:
bugs : cpu_insecure
추신. Spectre/Meltdown "버그"를 악용하는 새로운 방법이 여러 차례 업데이트되었습니다. 아마도 이번이 마지막이 아닐 것입니다.