Я хочу посмотреть, как флаг смягчения призрака решил проблему, чтобы убедить мою команду, что нам нужно добавить этот флаг в нашу большую базу кода для будущих проектов.
Я ищу образцы проектов, которые имеют уязвимость в спектре и устраняются путем добавления флага уменьшения спектра, представленного на прошлой неделе в Visual Studio 2017.
Может ли кто-нибудь помочь мне в демонстрации моей большой команды POC для демонстрации того, как недавно добавленная поддержка Microsoft в Visual Studio преодолевает проблему?
Вот последний заметки о выпуске от Microsoft для VS 2017
Изменить на вопрос: 23 августа 2018 г.
В погоне за ответом я попробовал следующую кодовую форму майкрософт по смягчению последствий призрака:
#include "stdafx.h"int G, G1, G2;
__forceinline
int * bar(int **p, int i)
{
return p[i];
}
__forceinline
void bar1(int ** p, int i)
{
if (i < G1) {
auto x = p[i]; // mitigation here
G = *x;
}
}
__forceinline
void foo(int * p)
{
G = *p;
}
void baz(int ** p, int i)
{
if (i < G1) {
foo(bar(p, i + G2));
}
bar1(p, i);
}
int main()
{
return 0;
}
Когда я компилирую код с включенным флагом смягчения призрака:
Свойства проекта> Свойства конфигурации> C / C ++> Spectre
Смягчение> Включено
Три дополнительных изменения также необходимо сделать, чтобы включить это изменение:
Свойства проекта> Свойства конфигурации> C / C ++> Оптимизация>
/ O2
Свойства проекта> Свойства конфигурации> C / C ++> Код
Генерация> Основные проверки времени выполнения> По умолчанию
Свойства проекта> Свойства конфигурации> Линкер> Общие>
Дополнительные каталоги библиотек> C: \ Program Files (x86) \ Microsoft
Visual Studio \ 2017 \ Enterprise \ VC \ Tools \ MSVC \ 14.15.26726 \ lib \ x86
Примечание: вместо жесткого кодирования путь, как это
C: \ Program Files (x86) \ Microsoft Visual
Студия \ 2017 \ Enterprise \ VC \ Tools \ MSVC \ 14.15.26726 \ Lib \ x86
, Вы можете использовать переменную Visual Studio, например:
$ (VCToolsInstallDir) \ Lib \ x86 \
Я получаю следующий вывод:
C: \ Program Files (x86) \ Microsoft Visual
Студия \ 2017 \ Enterprise \ Common7 \ IDE \ VC \ VCTargets \ Microsoft.CppBuild.targets (402,5):
предупреждение MSB8038: смягчение спектра включено, но смягчение спектра
библиотеки не найдены. Убедитесь, что рабочая нагрузка Visual Studio
включает в себя смягченные библиотеки Spectre. Увидеть https://aka.ms/Ofhn4c
для дополнительной информации.
Я не знаю, что делать на этом этапе. Я получаю выходной исполняемый файл, но хочу, чтобы функция смягчения Spectre была тестируемой. Пожалуйста, помогите мне.
Я изменил VS 2017 Installer и сравнил мою установку с выбранными по умолчанию элементами на странице Microsoft для Смягчение Призрака.
Я не заметил вкладку «Отдельные компоненты». Во вкладке я пропустил некоторые важные зависимости (спасибо @Retired Ninja). После установки это сообщение перестало появляться в сборке для примера смягчения призрака.
Тем не менее, я все еще ищу более конкретный вариант использования.
Других решений пока нет …