Задание

Настройка виртуального окружения

Перед выполнением основного задания лабораторной работы необходимо произвести установку лабораторного стенда. В первой лабораторной работе установка и настройка лабораторного окружения производилась вручную в целях полного разбора процесса сборки ядра и загружаемого модуля. В данной работе производить ручную настройку виртуального окружения не нужно, поскольку все действия можно выполнить за три шага.

Шаг 1. Скачать Vagrantfile

В первую очередь необходимо скачать Vagrantfile последней версии перейдя по ссылке: https://github.com/kolyandaemon/linux-hevd/releases/. После скачанный файл необходимо скопировать в директорию, путь к которой должен содержать только латинские буквы.

Шаг 2. Установить виртуальную среду

Далее необходимо в директории, куда был скопирован файл, необходимо выполнить следующую команду:

$ vagrant up

Чтобы открыть терминал в Windows 10 в директории достаточно навести курсор мыши на пустое пространство окна проводника, зажать клавишу Shift и нажать правую кнопку мыши. В появившемся контекстном меню выбрать поле "Открыть окно PowerShell здесь".

Шаг 3. Выполнить сборку и установку модуля

После того как процесс настройки модуля будет завершен необходимо осуществить вход в виртуальную среду и запустить сценарий сборки и установки модуля. Это производиться тремя командами:

$ vagrant ssh
$ cd linux-hevd
$ sh compile_and_insmod.sh

Сразу после выполнения команд процесс сборки и установки виртуального окружения можно считать завершенным.

1 этап

С учетом приобретенных навыков в второй лабораторной работе необходимо отключить следующие средства защиты: KASLR, SMEP, SMAP и stack canary. Это нужно для облегчения понимания функционирования уязвимости в ядре.

2 этап

Далее необходимо собрать модуль ядра, установить его. Сделать это можно с помощью инструкции выше. Также рекомендуется изучить исходные файлы функции, демонстрирующую уязвимость: ArbitraryWrite.c, ArbitraryWrite.h Common.h, hevd.py, arbitrary_write.py

3 этап

Необходимо выполнить системный вызов функции, демонстрирующую уязвимость CWE-457: Use of Uninitialized Variable при разных условиях: с выключенными механизмами защиты и с включенными механизмами защиты. Поскольку функция осуществляет запись входных данных напрямую в память необходимо не допустить состояния "Kernel Panic" при вызове системного вызова.

Last updated