https://stackoverflow.com/questions/48089426/what-is-a-retpoline-and-how-does-it-work
Spectre Variant 2(간접 분기 추측) 취약성의 완화를 제어합니다. 기본 작업은 사용자 공간 공격으로부터 커널을 보호합니다.
spectre_v2= on - unconditionally enable, implies spectre_v2_user=on off - unconditionally disable, implies spectre_v2_user=off auto - kernel detects whether your CPU model is vulnerable Selecting 'on' will, and 'auto' may, choose a mitigation method at run time according to the CPU, the available microcode, the setting of the CONFIG_RETPOLINE configuration option, and the compiler with which the kernel was built. Selecting 'on' will also enable the mitigation against user space to user space task attacks. Selecting 'off' will disable both the kernel and the user space protections. Specific mitigations can also be selected manually: retpoline - replace indirect branches retpoline,generic - google's original retpoline retpoline,amd - AMD-specific minimal thunk Not specifying this option is equivalent to spectre_v2=auto.
예를 들어 HPC 및 통제된 환경에서 최적의 컴퓨팅 성능을 위해 (a) 이 공격을 수행할 수 있고(로그인에 충분한 문제가 있음) (b) 그러한 작업을 수행할 수 있는 사용자는 없는 것으로 알고 있습니다. 어쨌든 feat에서 어떤 이점도 얻지 못할 것입니다. 이 커널 매개변수를 off로 설정해야 합니까? 이는 Intel LGA 3647 Platinum 8xxx 시리즈 CPU가 장착된 서버에 있으며 RHEL 7.9가 설치되면 자동으로 수행됩니다 GRUB_CMDLINE_LINUX= sceptre_v2=retpoline
.
답변1
예. 국경 통제에 자신감이 있고 위험 및 성능에 미치는 영향을 기꺼이 수용할 의향이 있다면 spectre_v2=off
스펙터/멜트다운 완화를 활성화하지 않도록 설정할 수 있습니다. 무결성을 보장하기 위해 다음 빠른 스크립트를 사용할 수 있습니다.
#!/bin/bash
#Works in RHEL7; does not work in RHEL8
items="pti_enabled retp_enabled ibrs_enabled"
DIR=/sys/kernel/debug/x86
echo "These should all be 0:"
for item in $items; do
printf "%-13s " $item: ; cat $DIR/$item;
done
need_to_set=false
for item in $items; do
grep -q 0 $DIR/$item || { echo "$item is not 0"; need_to_set=true; }
done
$need_to_set && {
read -p "Found value(s) that are not 0. Enter 'y' if you want 0 them: " a
[ "$a" = "y" ] && {
for item in $items; do
echo 0 > $DIR/$item
done
echo Done.
exit 0
}
echo "OK, will not set it to 0."
}
...물론 재부팅할 때까지만 완화 기능이 비활성화됩니다. 제안한 대로 커널 명령줄을 수정하는 것이 이를 고수하는 방법입니다.
그런데 이것은 RHEL 7.9 기준입니다. 나는 명령줄 옵션이 8에서 동일하다고 생각하지만 확인 방법이 다릅니다.