cve: Коллекция кода, относящегося к CVE-2016-0728 (разные авторы)
Выдержки из Linux, показывающие эволюцию и исправление ошибки
Эксплойт от Perception Point с добавленными комментариями, объясняющими каждую строку.
Короткий скрипт, использующий утечку для увеличения счётчика использования; полезен для определения, присутствует ли ошибка в вашей системе.
Версия эксплойта, обходящая обёртки системных вызовов (для систем, не реализующих обёртки keycntl).
Первый экстренный патч от января 2016 года
Лучший способ воспроизвести этот эксплойт — найти уязвимую версию сборки Linux, перечисленную ниже. ISO могут содержать бэкпортированные патчи, поэтому необходимо скачать исходный код и скомпилировать его самостоятельно.
Запуск эксплойта на современной версии Ubuntu (изменённой для сохранения ошибки) дал странные результаты. Я написал test.c для отслеживания, выводя данные в файл keylog. Программа работает независимо от эксплойта, используя nanosleep для контроля частоты выборки. keylog — это результат работы с периодом 500 наносекунд в течение примерно половины секунды.
Интерпретация файла keylog: число слева — номер итерации. Значение выводится, когда изменяется наклон. tState подсчитывает количество итераций с момента последнего изменения наклона. Это полностью случайно и не стоит изучения.
В этом тесте был непредсказуемый вывод и отсутствовало целочисленное переполнение, что означает неудачу эксплойта на современной версии, даже изменённой. Вместо этого скомпилируйте версию из списка.
Уязвимые версии
Red Hat Enterprise Linux 7
CentOS Linux 7
Scientific Linux 7
Debian Linux stable 8.x (jessie)
Debian Linux testing 9.x (stretch)
SUSE Linux Enterprise Desktop 12
SUSE Linux Enterprise Desktop 12 SP1
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 12 SP1
SUSE Linux Enterprise Workstation Extension 12
SUSE Linux Enterprise Workstation Extension 12 SP1