
Linux용 유틸리티로, `AF_ALG`/`algif_aead`의 가용성을 확인하고 `CVE-2026-31431`에 따른 위험을 평가하는 데 도움을 줍니다.
Linux용 진단 유틸리티로, 다음을 확인합니다:
AF_ALG / algif_aead 사용 가능 여부 및 CVE-2026-31431(copy-fail) 위험 평가 지원;xfrm-ESP Page-Cache Write + RxRPC Page-Cache Write 체인)에 대한 공격 표면 존재 여부를 esp4, esp6, rxrpc 구성 요소별로 확인하고 mitigation을 출력합니다.이 도구는 defensive-검사용으로 설계되었으며 익스플로잇이 아닙니다.
AF_ALG AEAD에 대한 runtime socket + bind 프로브 수행;/proc/modules, modules.builtin, modules.builtin.modinfo를 통해 커널 구성 요소 분석;rpm/Debian changelog)를 통해 vendor backport-픽스 존재 여부 확인 시도;AF_ALG-소켓을 보유한 프로세스 표시(/proc/*/fd, best effort);Dirty Frag 추가 기능:
esp4, esp6, rxrpc 존재 여부 확인(loaded / built-in / unknown);socket(AF_NETLINK, NETLINK_XFRM) 및 socket(AF_RXRPC) runtime 프로브 수행;1.24+;/proc/*/fd 전체 스캔을 위해서는 root로 실행하는 것이 좋습니다.Entrypoint는 프로젝트 루트에 있으며, 빌드는 루트에서 수행합니다:
go build -o itsumma-afalg-check .
./itsumma-afalg-check
시작 시:
Itsumma Security Check — AF_ALG / CVE-2026-31431
이후:
AF_ALG(socket + bind) runtime 프로브 결과;modules.builtin 사용 가능 여부;af_alg 및 algif_aead 상태(loaded / built-in / unknown);CVE-2026-31431 최종 평가(vendor backport 확인 시도 포함);AF_ALG-소켓을 보유한 현재 프로세스 목록(발견된 경우);cat /proc/cmdline
echo 3 | sudo tee /proc/sys/vm/drop_caches
modprobe -n -v algif_aead
lsmod | grep '^algif_aead\b' || echo 'algif_aead not loaded'
./itsumma-afalg-check
built-in 시나리오의 경우 modprobe/lsmod 대신 다음을 추가로 확인하는 것이 유용합니다:
dmesg | grep -i 'algif_aead\|initcall_blacklist'
공개 Dirty Frag runbook의 명령입니다(esp4, esp6, rxrpc 로드를 차단하고 이미 로드된 모듈 언로드를 시도).
IPSec / XFRM을 사용하는 경우(예: strongSwan), 모듈 언로드 전에 flush를 수행하는 것이 좋습니다:
sudo ip xfrm state flush
sudo ip xfrm policy flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
esp4/esp6/rxrpc가 built-in으로 컴파일된 경우(modules.builtin에만 표시), modprobe blacklist 및 rmmod로는 비활성화할 수 없습니다: 이 경우 커널 업데이트/재컴파일이 필요합니다.
strongSwan의 경우 libcharon-extra-plugins 설치 후 kernel-libipsec을 활성화하세요:
sudo sed -i 's/^\s*load\s*=\s*no/load = yes/' /etc/strongswan.d/charon/kernel-libipsec.conf
sudo systemctl restart strongswan || sudo systemctl restart strongswan-starter
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
sudo modprobe esp4 esp6 rxrpc || true
sudo modprobe -r esp6 rxrpc
sudo modprobe -r esp4 || true
sudo rmmod -f esp4
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp6 rxrpc 2>/dev/null; rmmod -f esp4 2>/dev/null; true"
사후 검증:
modprobe -n -v esp4 esp6 rxrpc
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
./itsumma-afalg-check
algif_aead의 존재는 공격 표면을 의미하지만, 최종 판단은 커널 버전과 배포판의 backport 패치에 따라 달라집니다.AF_ALG AEAD runtime 프로브가 실패하면 이 검사에서는 해당 벡터가 사용 불가능한 것으로 간주합니다.