Я использовал версию spectre-meltdown-checker 0,42 без каких-либо опций, приводящих к полностью зеленым результатам. Но на странице справки я нашел переключатель --paranoid, из-за которого около половины более поздних CVE стали красными. Я прочитал, что мне сказали, что для полного смягчения мне придется отключить гиперпоточность, это меня немного напугало, поэтому я лучше сделал это, в результате чего только один em> оставшийся красный флажок CVE-2018-3646 = безусловная очистка L1D должна быть включена, чтобы полностью устранить уязвимость.


Ноутбук: Dell Inspiron 15 с последней версией BIOS (1.8.0, подробности по ссылке).

Процессор: Intel© Core™ i7-7700HQ (ссылка на Intel Ark).

Ядро Linux: 4.15.0-65-универсальный; полный uname -a:

Linux dell-7577 4.15.0-65-generic #74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Для полноты добавлю информацию из справки по переключателю --paranoid:

--paranoid      require IBPB to deem Variant 2 as mitigated
                also require SMT disabled + unconditional L1D flush to deem Foreshadow-NG VMM as mitigated
                also require SMT disabled to deem MDS vulnerabilities mitigated

CVE-2018-3646 aka 'Foreshadow-NG (VMM), L1 terminal fault'
* Information from the /sys interface: Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
* This system is a host running a hypervisor:  YES  (paranoid mode)
* Mitigation 1 (KVM)
  * EPT is disabled:  NO 
* Mitigation 2
  * L1D flush is supported by kernel:  YES  (found flush_l1d in /proc/cpuinfo)
  * L1D flush enabled:  YES  (conditional flushes)
  * Hardware-backed L1D flush supported:  YES  (performance impact of the mitigation will be greatly reduced)
  * Hyper-Threading (SMT) is enabled:  YES 
> STATUS:  VULNERABLE  (enable L1D unconditional flushing and disable Hyper-Threading to fully mitigate the vulnerability)

Актуальный вопрос

Помимо отключения Hyper-Threading, как включить этот безусловный сброс L1D?

1
LinuxSecurityFreak 18 Окт 2019 в 11:37

1 ответ

Лучший ответ

Я немного покопался, и эта уязвимость в документации упоминается как:

L1TF = неисправность клеммы L1

На самом деле я нашел документация ядра напрямую, цитата:

l1tf=   [X86] Control mitigation of the L1TF vulnerability on
        affected CPUs

        The kernel PTE inversion protection is unconditionally
        enabled and cannot be disabled.

        full
            Provides all available mitigations for the
            L1TF vulnerability. Disables SMT and
            enables all mitigations in the
            hypervisors, i.e. unconditional L1D flush.

            SMT control and L1D flush control via the
            sysfs interface is still possible after
            boot.  Hypervisors will issue a warning
            when the first VM is started in a
            potentially insecure configuration,
            i.e. SMT enabled or L1D flush disabled.

        full,force
            Same as 'full', but disables SMT and L1D
            flush runtime control. Implies the
            'nosmt=force' command line option.
            (i.e. sysfs control of SMT is disabled.)

        flush
            Leaves SMT enabled and enables the default
            hypervisor mitigation, i.e. conditional
            L1D flush.

            SMT control and L1D flush control via the
            sysfs interface is still possible after
            boot.  Hypervisors will issue a warning
            when the first VM is started in a
            potentially insecure configuration,
            i.e. SMT enabled or L1D flush disabled.

        flush,nosmt

            Disables SMT and enables the default
            hypervisor mitigation.

            SMT control and L1D flush control via the
            sysfs interface is still possible after
            boot.  Hypervisors will issue a warning
            when the first VM is started in a
            potentially insecure configuration,
            i.e. SMT enabled or L1D flush disabled.

        flush,nowarn
            Same as 'flush', but hypervisors will not
            warn when a VM is started in a potentially
            insecure configuration.

        off
            Disables hypervisor mitigations and doesn't
            emit any warnings.
            It also drops the swap size and available
            RAM limit restriction on both hypervisor and
            bare metal.

        Default is 'flush'.

        For details see: Documentation/admin-guide/hw-vuln/l1tf.rst

Я пробовал некоторые из этих вариантов, в итоге выбрав full,force. Но это только мой личный выбор.


Как использовать

Если вы спрашиваете сейчас, как использовать (что редактировать), то ответ таков:

  1. Отредактируйте следующий файл в своем любимом текстовом редакторе:

    /etc/default/grub
    
  2. Добавьте один из вариантов, например, позвольте мне использовать l1tf=full,force в эту строку:

    GRUB_CMDLINE_LINUX_DEFAULT="... l1tf=full,force"
    
  3. Обновите конфигурацию загрузчика с помощью:

    sudo update-grub
    
  4. Изменения вступают в силу после перезагрузки:

    reboot --reboot
    

Результат

Если вы решите продолжить тестирование этого решения, вы должны получить аналогичные результаты:

CVE-2018-3646 aka 'Foreshadow-NG (VMM), L1 terminal fault'
* Information from the /sys interface: Mitigation: PTE Inversion; VMX: cache flushes, SMT disabled
* This system is a host running a hypervisor:  YES  (paranoid mode)
* Mitigation 1 (KVM)
  * EPT is disabled:  NO 
* Mitigation 2
  * L1D flush is supported by kernel:  YES  (found flush_l1d in /proc/cpuinfo)
  * L1D flush enabled:  YES  (unconditional flushes)
  * Hardware-backed L1D flush supported:  YES  (performance impact of the mitigation will be greatly reduced)
  * Hyper-Threading (SMT) is enabled:  NO 
> STATUS:  NOT VULNERABLE  (L1D unconditional flushing and Hyper-Threading disabled are mitigating the vulnerability)

Изображение в UHD, можно увеличить:

L1TF--mitigated


заметки Стивена Китта

Также стоит прочитать специфичный для L1TF документация по ядру, в которой подробно объясняются уязвимости и меры по их устранению, а также объясняется, как включать и отключать меры по устранению (включая отключение SMT) во время выполнения без перезагрузки или изменения конфигурации системы. конфигурация.

3
LinuxSecurityFreak 18 Окт 2019 в 11:55