Dirty Cow and vz kernel

Если вы используете OpenVZ и в репозиториях пока нет ядра с исправленной уязвимостью Dirty Cow, можете использовать Partial Mitigation Resolution. В остальных случаях просто обновите ядро и не забудьте загрузиться именно в него.

Оригинальная инструкция (а под ней комментарии):

https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c13

Petr Matousek 2016-10-19 12:16:23 EDT
Please note that this mitigation disables ptrace functionality which
debuggers and programs that inspect other processes (virus scanners)
use and thus these programs won't be operational.

Also this mitigation works against the In The Wild (ITW) exploit we are aware of but most likely does not mitigate the issue as a whole.

To mitigate the issue:


1) On the host, save the following in a file with the ".stp" extension:

probe kernel.function("mem_write").call ? {
        $count = 0
}

probe syscall.ptrace {  // includes compat ptrace as well
        $request = 0xfff
}

probe begin {
        printk(0, "CVE-2016-5195 mitigation loaded")
}


probe end {
        printk(0, "CVE-2016-5195 mitigation unloaded")
}


2) Install the "systemtap" package and any required dependencies. Refer
to the "2. Using SystemTap" chapter in the Red Hat Enterprise Linux
"SystemTap Beginners Guide" document, available from docs.redhat.com,
for information on installing the required -debuginfo and matching kernel-devel packages

3) Run the "stap -g [filename-from-step-1].stp" command as root.

If the host is rebooted, the changes will be lost and the script must be
run again.


Alternatively, build the systemtap script on a development system with
"stap -g -p 4 [filename-from-step-1].stp", distribute the resulting
kernel module to all affected systems, and run "staprun -L <module>" on those.
When using this approach only systemtap-runtime package is required on
the affected systems. Please notice that the kernel version must be the same
across all systems.


Во втором шаге также необходимо установить kernel-debuginfo для вашей версии ядра.
В целом необходимо поставить:
kernel-devel-$(uname -r)
systemtap
kernel-debuginfo-$(uname -r)

В случае с vz ядром пакет назывался нестандартно, помог поиск:
yum search all | grep kernel-debuginfo

Далее запускаем:
nohup stap -g [filename-from-step-1].stp &

Можно добавить куда-нибудь в автозапуск, т.к. после ребута этот митигейшн никто, кроме вас, не запустит.

После запуска эксплойт, которым я проверял уязвимость (запись в файл, на который у нас нет прав), перестал работать корректно.

Вот полезная информация про уязвимость и сборник эксплойтов: https://dirtycow.ninja/

Комментарии