
Um programa eBPF para detectar ataques ao CVE-2022-0847
Um programa eBPF para detectar e defender ataques à CVE-2022-0847.
No espaço do kernel, o programa detecta chamadas de sistema splice(); se tal chamada de sistema contiver um pipe como fd de saída, e as flags do buffer do pipe estiverem definidas como PIPE_BUF_FLAG_CAN_MERGE, então um evento será submetido. No espaço do usuário, o programa mata o processo correspondente que chama splice() e sobrescreve /proc/sys/vm/drop_caches para limpar o cache de páginas.
Testado no Ubuntu Server 20.10 com kernel 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