
Bash 스크립트로 Linux 호스트의 CVE-2026-31431 노출 여부를 평가하고, 커널 모듈 상태를 확인하며, algif_aead를 차단하여 완화 조치를 적용하고, 커널 패키지를 업데이트합니다.
이 저장소는 Linux 호스트(특히 Ubuntu)에서 CVE-2026-31431 노출 여부를 평가하고, algif_aead 모듈을 차단하여 간단한 완화 조치를 적용하는 데 사용되는 Bash 스크립트를 문서화합니다.
언어 버전:
README.mdREADME.pt-BR.md스크립트는 세 가지 모드를 지원합니다:
--check: 호스트 정보를 수집하고 현재 상태를 분류합니다.--mitigate: 취약한 모듈을 차단하는 modprobe 규칙을 생성하고 모듈 언로드를 시도합니다.--update: apt를 통해 커널 패키지 업그레이드를 실행합니다.CVE-2026-31431은 공개적으로 Copy Fail로 알려져 있으며, AF_ALG를 통해 커널 사용자 공간 암호화 API의 AEAD 인터페이스를 구현하는 algif_aead 모듈과 관련된 Linux 커널의 로컬 권한 상승 취약점입니다.
실질적으로 이 문제는 저권한 로컬 사용자가 이 하위 시스템의 메모리 처리 경로에 있는 논리적 결함을 악용하여 전체 시스템 무결성 손상으로 영향력을 확대할 수 있게 합니다. kernel.org가 발표하고 NVD에 반영된 점수는 CVSS 7.8이며, 벡터는 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H로, 공격에는 로컬 실행이 필요하지만 기밀성, 무결성, 가용성에 높은 영향을 미칩니다.
2017년 algif_aead에 제자리 최적화(in-place optimization)가 추가되면서 커널에 도입되었습니다.2026년 4월 22일 NVD에 게시되었습니다.Copy Fail이라는 이름과 공개 PoC(개념 증명)를 포함한 광범위한 공개 공개는 2026년 4월 29일에 이루어졌습니다.2026년 4월 1일에 커밋되었습니다.게시된 기술 권고에 따르면, 이 결함은 다음의 조합에 의존합니다:
AF_ALG 인터페이스algif_aead 모듈splice()와 연결실질적인 결과는 로컬 프로세스가 읽기 가능한 파일의 페이지 캐시 기반 페이지에 작은 제어된 쓰기를 수행할 수 있다는 것입니다. 유리한 조건에서는 제한된 로컬 발판을 root 권한 상승으로 전환하기에 충분합니다.
실제 위험은 단순히 "취약한 Linux 커널을 실행하는 것"이 아니라, 신뢰도가 낮은 로컬 코드가 이 커널 경로에 도달할 수 있게 하는 것입니다. 엔터프라이즈 환경에서는 일반적으로 다음에서 노출이 더 높습니다:
공격자가 이미 root 없이도 어떤 형태의 로컬 실행 권한을 가지고 있다면, 이 CVE는 호스트 침해로 가는 다음 단계가 될 수 있습니다. 실질적으로 이는 다음의 위험을 확대합니다:
algif_aead 모듈의 용도algif_aead는 커널 사용자 공간 암호화 인터페이스(AF_ALG)의 일부입니다. 애플리케이션이 소켓을 통해 커널 암호화 프리미티브, 특히 AEAD 연산(인증된 연관 데이터 암호화)을 사용할 수 있게 합니다.
이 모듈은 대부분의 표준 서버 워크로드에서 일반적으로 필수적이지 않습니다. CERT-EU가 발표한 완화 지침에 따르면 임시 완화 조치로 algif_aead를 비활성화하는 것은:
dm-crypt 또는 LUKS에 영향을 주지 않아야 함kTLS에 영향을 주지 않아야 함IPsec/XFRM에 영향을 주지 않아야 함OpenSSL, GnuTLS, NSS 또는 SSH에 영향을 주지 않아야 함반면, 비활성화하면 다음에 영향을 줄 수 있습니다:
afalg 엔진을 명시적으로 사용하도록 구성된 애플리케이션AF_ALG 소켓을 직접 여는 소프트웨어aead, skcipher 또는 hash를 사용하는 사용자 정의 통합즉, 대부분의 기업 호스트에서 모듈 차단은 영향이 낮은 경향이 있습니다. 어플라이언스, 사용자 정의 암호화 스택 또는 고도로 최적화된 소프트웨어 경로에서는 롤아웃 전에 영향을 검증해야 합니다.
모듈 차단은 노출을 즉시 줄이지만 절충점이 있습니다:
AF_ALG에 의존하는 애플리케이션은 시작에 실패하거나 커널 기반 암호화 가속을 잃을 수 있음프로덕션 환경에서는 통제된 유지보수 창에서 완화 조치를 적용하고 이후 중요한 애플리케이션을 검증하는 것이 더 안전한 접근 방식입니다.
모듈 블랙리스트는 임시 완화 조치일 뿐입니다. 영구 수정은 다음과 같습니다:
추가 권장 조치:
seccomp로 AF_ALG 소켓 생성 제한afalg 또는 커널 암호화 API가 명시적으로 사용되는 위치 검토스크립트는 다음을 검사합니다:
/etc/os-release를 통한 운영 체제algif_aead 모듈 존재 여부modprobe 규칙으로 차단되었는지 여부/var/run/reboot-required)pro fix CVE-2026-31431 --dry-run을 통한 Ubuntu Pro 보고 상태이를 기반으로 다음 분류 중 하나를 반환합니다:
PATCHED_OR_NOT_AFFECTEDLIKELY_NOT_VULNERABLEMITIGATEDVULNERABLE_MODULE_LOADEDPOTENTIALLY_VULNERABLEUNKNOWN요약:
PATCHED_OR_NOT_AFFECTED가 됩니다.algif_aead 모듈이 현재 커널에 존재하지 않으면 상태는 LIKELY_NOT_VULNERABLE 경향이 있습니다.MITIGATED가 됩니다.VULNERABLE_MODULE_LOADED가 됩니다.POTENTIALLY_VULNERABLE이 됩니다.modinfomodprobelsmodawkgrephostnameuname--update용 apt-getsudopro스크립트 파일 이름이 check_cve_2026_31431.sh인 경우:
chmod +x check_cve_2026_31431.sh
./check_cve_2026_31431.sh --check
./check_cve_2026_31431.sh --check
출력 예시:
Host: srv-app-01
OS: Ubuntu 24.04 LTS
Kernel: 6.8.0-58-generic
CVE: CVE-2026-31431
Module exists: 1
Module loaded: 0
Module blocked: 1
Ubuntu affected: yes
Fix available: yes
Reboot required: 0
Status: MITIGATED
Reason: algif_aead exists but is blocked and not loaded
./check_cve_2026_31431.sh --check --json
예시:
{"host":"srv-app-01","os":"Ubuntu 24.04 LTS","kernel":"6.8.0-58-generic","cve":"CVE-2026-31431","module":"algif_aead","module_exists":1,"module_loaded":0,"module_blocked":1,"ubuntu_affected":"yes","fix_available":"yes","reboot_required":0,"status":"MITIGATED","reason":"algif_aead exists but is blocked and not loaded"}
이 출력은 자동화, 자산 인벤토리 및 규정 준수 파이프라인에 유용합니다.
--mitigate 모드는 다음 파일을 생성합니다:
/etc/modprobe.d/disable-algif_aead-CVE-2026-31431.conf
다음 내용으로:
install algif_aead /bin/false
blacklist algif_aead
그 후 스크립트는 다음 명령으로 메모리에서 모듈을 제거하려고 시도합니다:
modprobe -r algif_aead
사용법:
./check_cve_2026_31431.sh --mitigate
사용자가 root가 아닌 경우 스크립트는 sudo를 사용하려고 시도합니다.
--update 모드는 다음을 실행합니다:
apt-get update
apt-get install --only-upgrade -y 'linux-image-*' 'linux-modules-*' 'linux-aws*'
사용법:
./check_cve_2026_31431.sh --update
이 모드는 Debian 및 Ubuntu 기반 시스템에서 커널 관련 패키지를 업그레이드하려고 시도합니다. 다른 환경에서는 이 단계가 적용되지 않을 수 있습니다.
./check_cve_2026_31431.sh --help
출력:
Usage: ./check_cve_2026_31431.sh [--check|--mitigate|--update] [--json]
ubuntu_affected 및 fix_available 필드는 pro 명령의 존재에 의존합니다.--update 단계는 Ubuntu 및 Debian 중심 패키지 패턴을 사용하며 모든 사용자 정의 커널을 포함하지 않을 수 있습니다.--check를 실행합니다.--mitigate를 실행합니다.--update를 실행하거나 공식 벤더 업데이트를 적용합니다.--check --json을 실행합니다.게시 명확성을 위해 스크립트는 다음과 같은 설명적인 이름을 사용하는 것이 이상적입니다:
check_cve_2026_31431.sh
자료는 SEC17의 크레딧으로 구성 및 게시되었습니다.
공식 웹사이트:
https://sec17.com