
Программа eBPF для обнаружения атак на CVE-2022-0847
eBPF-программа для обнаружения и защиты от атак на CVE-2022-0847.
В пространстве ядра программа обнаруживает системные вызовы splice() , если такой системный вызов содержит канал (pipe) в качестве выходного файлового дескриптора, и флаги буфера канала установлены в PIPE_BUF_FLAG_CAN_MERGE , тогда создаётся событие. В пространстве пользователя программа убивает соответствующий процесс, вызывающий splice() , и перезаписывает /proc/sys/vm/drop_caches для очистки кэша страниц.
Протестировано на Ubuntu Server 20.10 с ядром 5.8.0-25.
clang -g -O2 -target bpf -D__TARGET_ARCH_x86_64 -I/usr/src/linux-headers-5.8.0-25/include -I/usr/include -c ./splice.bpf.c -o splice.bpf.o
bpftool gen skeleton ./splice.bpf.o > splice.skel.h
clang -I/usr/include -c splice.c -o splice_epbf.o
clang splice_epbf.o -lbpf -lelf -lz -o splice_epbf