
Ansible 역할로, Debian 계열 시스템에 대한 안전 검사를 포함하여 algif_aead 커널 모듈을 비활성화함으로써 CVE-2026-31431에 대한 modprobe.d 완화 조치를 적용하고 검증합니다.
CVE-2026-31431("Copy Fail") 취약점에 대한 modprobe.d 완화 조치를 적용(및 추후 제거)하는 Ansible 역할입니다. 이 취약점은 Linux 커널의 AF_ALG / algif_aead 서브시스템에 존재합니다.
Debian에서 테스트되었습니다. 다른 배포판, 엣지 케이스 또는 개선 사항에 대한 풀 리퀘스트는 언제든 환영합니다.
이 역할은 /etc/modprobe.d/에 구성 스니펫을 배치하여 algif_aead 커널 모듈이 로드되지 않도록 차단합니다:
install algif_aead /bin/false
그런 다음 완화 조치가 실제로 효과가 있는지 다음 단계를 통해 검증합니다:
/boot/config-$(uname -r)를 읽고 AEAD가 커널에 내장된 경우(CONFIG_CRYPTO_USER_API_AEAD=y) 실행을 거부합니다 — modprobe.d는 내장 코드를 차단할 수 없습니다.algif_aead가 현재 lsmod에 없는지 확인합니다.AF_ALG 소켓을 열고 aead/gcm(aes)에 bind()를 시도하는 작은 Python 스크립트를 실행합니다. 완화 조치 적용 후에는 bind가 FileNotFoundError로 실패해야 합니다.재부팅은 필요하지 않습니다.
되돌리려면(예: 패치된 커널이 설치된 후) cve_2026_31431_state=absent로 설정하세요.
oss-security에 유포된 완화 조치 — /etc/modprobe.d/에 install algif_aead /bin/false를 배치하고 rmmod로 모듈을 제거하는 방법 — 은 CloudLinux, AlmaLinux, RHEL 또는 기타 RHEL 계열 배포판에서는 작동하지 않으며, AEAD가 컴파일되어 내장된 커스텀 커널에서도 작동하지 않습니다.
해당 시스템에서는 algif_aead가 커널에 내장되어 있으므로(CONFIG_CRYPTO_USER_API_AEAD=y):
modprobe.d 규칙으로 로드를 차단할 수 없습니다(로드할 것이 없음 — 코드가 이미 커널 이미지에 포함되어 있음).rmmod algif_aead로 내장 코드를 제거할 수 없습니다.명령은 성공한 것처럼 보이지만 시스템은 변경되지 않아 잘못된 보호 감각을 줍니다. 커널이 영향을 받는지 확인할 수 있습니다:
zgrep '^CONFIG_CRYPTO_USER_API_AEAD=' /boot/config-$(uname -r)
=m → 모듈, 이 역할로 완화할 수 있습니다.=y → 내장, 커널 업데이트 + 재부팅 또는 라이브패치 구독이 필요합니다. 이 역할은 이를 감지하고 실행을 거부합니다.| 이름 | 기본값 | 설명 |
|---|---|---|
cve_2026_31431_state | present | 완화 조치 제거를 위해 absent로 설정 |
cve_2026_31431_conf | /etc/modprobe.d/disable-algif_aead.conf |
ansible-galaxy install joltcan.cve_2026_31431
ansible-playbook -i <your-inventory> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml
패치된 커널이 실행 중일 때 정리:
ansible-playbook -i <your-inventory> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml -e cve_2026_31431_state=absent
- hosts: all
become: true
roles:
- role: joltcan.cve_2026_31431
이슈 및 풀 리퀘스트를 환영합니다 — 특히:
algif_aead를 로드할 수 있는 비-Debian 배포판(Arch, Gentoo, Alpine 등)에 대한 테스트된 지원.algif_aead를 안전하게 언로드하는 로직.MIT — LICENSE 참조.
| 블랙리스트 파일 경로 |