
커널 모듈로, ftrace를 사용하여 AF_ALG/AEAD 요청을 차단하며, LSM BPF 없이 CVE-2026-31431을 완화합니다. 로깅 기능을 제공하고 Oracle Linux UEK용으로 쉽게 컴파일할 수 있습니다.
cve-2026-31431을 완화하기 위한 ebpf 솔루션은 부팅 시 lsm=bpf를 요구하는데,
이는 일반적으로 기본값으로 설정되어 있지 않습니다. OracleLinux의 경우 2025년 12월 이후
UEKr7u3 및 UEKr8u1에서 기본적으로 활성화되었습니다.
ebpf-lsm을 사용하여 copyfail 을 완화할 수 있는지 확인하려면
/sys/kernel/security/lsm에서 bpf를 확인하세요.
저희 머신 중 일부가 (여러 이유로) 약간 오래된 커널을 실행 중이기 때문에
이 보안 문제를 완화할 다른 방법을 찾아보았습니다. AF_ALG/AEAD만 차단하거나
AF_ALG 전체를 한 번에 차단하는 방식입니다.
__sock_create를 가로채서 AF_ALG를 차단하거나 aead_bind를 가로채서
모든 요청을 차단하는 커널 모듈을 생각했습니다.
이를 ftrace로 구현하는 것이 아이디어였습니다.
모듈을 컴파일하려면 다음을 시도하세요:
git clone this_repository
cd this_repository
make
UEK를 사용하는 Oracle Linux의 경우 make를 실행하기 전에 올바른 패키지를 설치하고 사용해야 합니다:
. /etc/os-release
releasever=${VERSION/.*}
uek=7 # 또는 8, 사용 중인 버전
dnf -y --enablerepo=ol${releasever}_UEKR${uek} install kernel-uek-devel make gcc kernel-headers
# 다음 중 하나가 필요할 수 있습니다:
# oel9/uekr8의 경우
. /opt/rh/gcc-toolset-14/enable
# oel8/uekr7의 경우
. /opt/rh/gcc-toolset-11/enable
그런 다음 모듈을 로드하세요:
# AF_ALG 전체 차단
insmod /path/to/af_alg_block.ko
# 또는 AF_ALG/AEAD만 차단
insmod /path/to/af_alg_aead_block.ko
이제 AF_ALG에 대한 모든 요청 또는 모든 AEAD 바인딩(로드한 모듈에 따라 다름)이 차단되며, 모든 시도가 로그에 기록됩니다.
저는 커널 개발자가 아닙니다. ftrace 문서를 연구하고 시행착오를 거쳐
다른 주소 패밀리에 영향을 주지 않으면서 모든 AF_ALG 요청이 차단될 때까지
이 모듈을 구축했습니다.
일부 머신에서 테스트했으며 안정적으로 보입니다. 여러분의 환경에서 작동한다는 보장은 없으며, 다른 공격 벡터가 이 모듈을 우회할 수도 있고, 모듈이 머신을 불안정하게 만들 수도 있습니다.
하지만 머신을 최종적으로 재부팅할 수 있을 때까지 시간을 메우기 위한 빠른 수정책입니다.