
Доказательство концепции CVE-2021-29155
Система отслеживания диапазона для арифметики указателей в спекулятивной области была недостаточной.
Было возможно извлечь данные ядра через побочный канал.
Это proof of concept, вы можете читать до 0x5fff байт за пределами допустимого диапазона, начиная с последнего элемента нашей карты.
Эта проблема была исправлена в 5.12 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/kernel/bpf/verifier.c?id=7fedb63a8307dda0ec3b8969a3b233a1dd7ea8e0 и перенесена на несколько LTS-ядер.
Однако, если вам всё ещё интересно, как это работает, и вы хотите увидеть эксплойт Spectre в действии, вы можете запустить программу от sudo. Тогда меры защиты Spectre не сработают.
Использование:
sudo ./bpf_exploit 0 3 0x0 0x5ff0
Где 0 и 3 соответствуют двум разным потокам, которые выполняются на разных физических ядрах для работы эксплойта.
Для получения дополнительной информации и подробного объяснения этой проблемы вы можете ознакомиться с моей бакалаврской диссертацией [НЕ ЗАКОНЧЕНА ПРЯМО СЕЙЧАС]