[방어] 분석 — CVE-2026-31431
CVE-2026-31431 enables local privilege escalation through a flaw in the algif_aead in‑place operation, and the highest‑priority mitigation is to immediately disable CONFIG_CRYPTO_USER_API_AEAD on all vulnerable kernels.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.94545 · 악용난이도 easy · KEV
🔍 공격 기법
취약한 커널 버전에서 AF_ALG 소켓을 이용해 AEAD 알고리즘(algif_aead)에 ioctl (특히 ALG_SET_KEY·ALG_SET_AEAD_AUTHSIZE 등) 호출을 수행하면, 내부 복사 로직이 “in‑place” 방식으로 동작하면서 메모리 영역이 겹쳐 오버플로우가 발생합니다. 이 오버플로우를 이용해 커널 힙·스택을 덮어쓰면 권한이 낮은 사용자 계정에서도 root 권한을 획득할 수 있습니다.
악용 가능성: 이 취약점은 AV:L(로컬) + AC:L(낮은 복잡도) + PR:L(저특권) + UI:N(사용자 개입 없음) 이라는 CVSS 벡터가 그대로 실제 공격 전제를 반영합니다. 즉, 로컬 시스템에 접근할 수 있는 누구라도 추가적인 권한 상승 없이 바로 악용이 가능하므로 난이도가 매우 낮습니다. EPSS 값 0.94545는 과거 관측된 공격 시도와 성공률을 종합했을 때 ≈94 % 의 확률로 실제 위협에 노출될 것임을 의미하며, KEV(공격자 활용 사례) 등재가 이를 실증합니다. 공격 표면은 Linux 커널 내 crypto: algif_aead 구현이 제공하는 AF_ALG 소켓 인터페이스이며, 해당 API를 호출할 수 있는 로컬 프로세스(예: 사용자 공간 암호화 도구)가 직접 트리거됩니다. 따라서 노출되는 엔드포인트는 AF_ALG 소켓, 파라미터는 AD(Associated Data) 복사 동작, 사용되는 프로토콜은 내부 커널 암호화 경로이며, 별도의 네트워크 통신 없이도 로컬에서 완전하게 수행됩니다. 이러한 조건이 모두 충족될 경우 공격자는 최소한의 코드만으로도 커널 수준에서 메모리 손상을 일으켜 권한 상승이나 서비스 거부를 초래할 수 있습니다.
💥 영향 분석
- 로컬 사용자가
root권한을 얻어 전체 시스템을 장악합니다. - 공격자는 파일 시스템, 메모리, 네트워크 등 모든 리소스에 대한 기밀성·무결성·가용성을 손상시킬 수 있습니다.
- 컨테이너·VM이 동일 커널 이미지를 공유하는 경우, 하나의 인스턴스에서 권한 상승이 발생하면 전체 워크로드가 위험에 노출됩니다.
🔗 관련 취약점·체이닝
- 유사한
AF_ALG기반 로컬 권한 상승 취약점(예: 과거 CVE‑2024‑xxxx)과 연계되어 초기 권한 획득 후 추가 커널 익스플로잇 단계에 활용될 수 있습니다. - 권한 상승 이후
CAP_SYS_ADMIN을 남용해mount,nsenter등으로 컨테이너 탈출·호스트 침투가 가능해집니다.
🔎 탐지
로그 지표
- auditd ‑
type=SYSCALL이벤트에서syscall=ioctl이며a0(첫 번째 인자) 가/dev/crypto혹은 AF_ALG 소켓 디스크립터인 경우. - kernel dmesg ‑
algif_aead관련 오류 메시지(out‑of‑place또는copy error)가 기록될 때.
SIEM 쿼리 예시 (예: Elastic Security)
1event.module:"auditd" 2and event.category:"process" 3and process.name:* 4and syslog.program:"kernel" 5and (audit.syscall:"ioctl" and audit.args:*AF_ALG* and audit.args:*AEAD*)정규식 예시 (audit 로그)
1type=SYSCALL.*syscall=ioctl.*a0=.*(\/dev\/crypto|socket\[[0-9]+\]).*msg=audit\([^\)]*\):.*algif_aead오탐 튜닝
- VPN·IPsec 등 정당하게
AF_ALG를 사용하는 서비스는 바이너리 경로(exe=/usr/sbin/ipsec) 혹은 UID(예:uid=0) 로 화이트리스트에 추가. - 정상적인 키 설정 작업은 특정 시간대·프로세스(예:
systemd-cryptsetup)와 매칭해 허용하도록 조건을 강화한다.
🛡️ 완화 방안
즉시(긴급 차단)
- CONFIG_CRYPTO_USER_API_AEAD 비활성화 – 커널 빌드 시 해당 옵션을
n으로 설정하고 재부팅합니다. 이미 로드된 모듈이라면/etc/modprobe.d/disable-af_alg.conf에blacklist af_alg를 추가해 모듈 로드를 차단합니다.- 난이도: 중‑높음 (커널 재빌드 필요) – 가용성 영향 최소(기능 사용 여부에 따라).
- 검증:
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)결과가=n인지 확인.
단기(완화)
-
auditd + seccomp 정책 적용 – 비특권 사용자(
uid>=1000)에 대해ioctl→ AF_ALG 소켓 호출을 차단하는 Seccomp 프로파일을 배포한다.- 난이도: 중 – 서비스 재시작 필요, 일부 애플리케이션에서 정상 동작 저해 가능성 존재.
- 검증: 차단된 이벤트가
audit.log에 기록되는지 확인.
-
eBPF 기반 실시간 모니터링 –
sys_enter_ioctl트레이스포인트에 필터를 걸어AF_ALG·AEAD조합을 감시하고, 비정상적인 호출이 발생하면 알림을 전송한다.- 난이도: 중‑높음 – eBPF 스크립트 작성 및 배포 필요.
- 검증: 테스트 프로세스로 의도적
ioctl호출 시 경보가 발생하는지 확인.
-
컨테이너·VM 이미지 검사 – 모든 컨테이너 런타임에서 호스트 커널 버전을
cat /proc/sys/kernel/osrelease로 수집하고, 취약 버전(4.14‑6.19.12) 여부를 자동화된 CI 파이프라인에 포함한다.- 난이도: 낮음 – 스크립트 하나로 구현 가능.
- 검증: 보고서에 “취약 커널 감지” 항목이 정상 출력되는지 확인.
근본(해결)
-
패치 적용 – upstream Linux kernel 6.19.13 이상, 6.18.23 이상 등 취약이 해결된 버전으로 업그레이드한다. 배포 전
rpm -q kernel혹은dpkg -l linux-image-*로 현재 버전을 확인하고, 보안 업데이트 정책에 따라 롤링 패치를 수행한다.- 난이도: 중 – 재부팅 필요, 서비스 가용성 계획 수립 필수.
- 검증: 업그레이드 후
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)결과가=y이지만 커밋72548b093ee3이 revert 되었는지 확인(패치 로그 참조).
-
잔여 리스크 – 패치 적용 전까지 위 단기·즉시 조치를 유지하고, 권한 상승 후 로그 삭제를 방어하기 위해
auditd를logrotate없이 영구 보관하도록 설정한다. 또한 루트 계정에 대한 MFA·세션 제한을 강화해 권한 확보 이후 악용 가능성을 최소화한다.
인시던트 대응 플레이북 (요약)
- 알림 수신 → 해당 PID, UID, 실행 파일 확인.
ps -ef로 프로세스 트리 파악 후 비정상적인af_alg호출 여부 검증.- 즉시 해당 호스트를 격리하고,
audit.log와dmesg를 수집. - 권한 상승이 확인되면 루트 세션을 종료하고, 영향을 받은 계정을 잠금.
- 패치 적용 또는 CONFIG 비활성화 후 시스템 복구 진행.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=7.8 · KEV · EPSS=0.94545 · exploit=easy · in_scope=None