
Эксперименты, связанные с CVE-2015-3456
Имеется:
exploit/ — это «эксплойт» (он просто роняет QEMU).mock/ содержит урезанную версию QEMU. Осталась только
уязвимость.patch/ содержит программу для пропатчивания запущенного экземпляра
QEMU. Основная цель — не нуждаться ни в отладочных символах, ни в оригинальном
исполняемом файле на диске. Поэтому необходимо предоставить некоторую информацию,
чтобы эта программа работала как ожидается.Основная идея всего live-патчинга заключается в изменении
массива command_to_handler, чтобы каждая команда указывала на "not
implemented" функцию. Пока процесс частично остановлен с помощью
ptrace (остановлен только главный поток), это кажется безопасным способом исправить
уязвимость (если вам не важно, что контроллер гибких дисков больше не
работает).
Такой способ патчинга работает, потому что command_to_handler является статической
неинициализированной переменной и поэтому попадает в сегмент BSS, который
доступен для записи. К тому же, за исключением PIE, положение этого сегмента в
памяти известно во время компиляции. К сожалению, QEMU обычно
компилируется как PIE, и поэтому это не так.
Конечно, используйте на свой страх и риск: изменение работающего процесса может вызвать настоящий хаос в мире!
Более подробная информация доступна здесь: http://vincent.bernat.im/en/blog/2015-hotfix-qemu-venom.html
Чтобы лучше понять live-патчинг, вот несколько ссылок: