Kestrel
CVE-2026-31402DGX_B· 2026년 8월 2일 AM 12:10

[방어] 분석 — CVE-2026-31402

CVE-2026-31402 is a critical remote heap‑overflow in the NFSv4 LOCK replay cache that allows unauthenticated attackers to corrupt kernel memory; immediate mitigation is to block external NFS (port 2049) or disable the replay cache while applying the upstream kernel patch.

📋 요약

  • 심각도 critical · CVSS 9.8 · EPSS 0.0049 · 악용난이도 moderate

🔍 공격 기법

두 개의 협조적인 NFSv4 클라이언트가 필요합니다. 첫 번째 클라이언트는 1024 바이트까지 허용되는 매우 긴 lock owner 문자열을 포함한 LOCK 요청으로 잠금을 설정하고, 두 번째 클라이언트가 동일 파일에 충돌하는 LOCK 요청을 전송하면 nfsd4_encode_operation()이 고정 112 바이트 버퍼(rp_ibuf)로 전체 응답을 복사하면서 경계 검사를 하지 않아 슬랩 메모리 밖으로 최대 944 바이트를 기록합니다. 인증이 필요 없으며 네트워크만 열려 있으면 원격에서 트리거할 수 있습니다.

💥 영향 분석

슬랩‑out‑of‑bounds 쓰기로 인한 힙 손상은 커널 패닉, 시스템 재부팅 또는 루트 권한을 얻는 원격 코드 실행(RCE)으로 이어질 수 있습니다. 또한 전체 호스트가 서비스 거부(DoS) 상태에 빠지며, NFS를 사용하는 모든 애플리케이션이 영향을 받습니다.

🔗 관련 취약점·체이닝

  • 추정: CWE‑122 (Heap‑based Buffer Overflow) 유형의 다른 파일 시스템 데몬 취약점과 연계될 수 있습니다.
  • 추정: 동일한 메모리 손상 경로를 이용해 커널 권한 상승을 목표로 하는 로컬 익스플로잇 체인에 결합될 가능성이 존재합니다.

🔎 탐지

  • 로그 지표

    • dmesg / kernel 로그: “nfsd4_encode_operation” 문자열과 함께 “bytes copied” 혹은 “slab out of bounds” 메시지가 나타날 경우.
    • auditd 로그(type=PROCTITLE): NFS 서버 프로세스(rpc.nfsd)가 LOCK_DENIED 응답을 생성하면서 XDR 버퍼 길이가 비정상적으로 큰(>256) 경우.
    • netfilter NFLOG: 포트 2049(UDP/TCP)에서 동일 클라이언트 IP가 짧은 시간 내에 다수의 LOCK 요청과 거부 응답을 교환할 때 기록.
  • SIEM 쿼리 예시 (예: Splunk, Elastic)

    text
    1index=kernel_logs ("nfsd4_encode_operation" AND "bytes copied")
    2 OR (msg="NFSv4 LOCK_DENIED" AND xdr_len>256)
    3| stats count by host, src_ip, _time
    4| where count > 5
  • 정규식 예시

    text
    1/LOCK_DENIED.*opaque_length=\d{3,}/
  • 오탐 튜닝

    • 정상적인 대용량 파일 잠금(예: HPC 클러스터)에서는 owner 길이가 512 바이트 이하인 경우만 경보 제외.
    • 동일 src_ip에서 1분 내에 10건 이상 발생하면 고위험으로 승격하고, 그 이하이면 “정보” 레벨로 낮춤.

🛡️ 완화 방안

  • 즉시(긴급 차단)
    • iptables/nftables 규칙을 추가해 신뢰되지 않은 서브넷에서 NFSv4 LOCK 요청을 차단합니다.
text
1nft add rule ip filter input ip saddr <untrusted_subnet> tcp dport 2049 ct state new log drop comment "Block NFSv4 LOCK"
  • 구현 난이도 ★☆☆ (간단한 방화벽 규칙) / 운영 영향 ★★ (NFS 사용 서비스가 차단될 수 있음) / 검증: 해당 서브넷에서 lockd 명령 실행 시 연결 거부 확인.

  • 단기(완화)

    • NFS 서버 설정 파일 /etc/exportssecure,root_squash 옵션을 강제하고, 허용 클라이언트를 명시적으로 지정합니다.
      • 구현 난이도 ★★★ / 운영 영향 ★ (일부 합법적인 원격 클라이언트가 차단될 수 있음) / 검증: exportfs -v 출력에 적용된 옵션 확인 및 정상 클라이언트에서 LOCK 요청 성공 여부 테스트.
    • SELinux 정책을 이용해 rpc.nfsd_t 프로세스의 메모리 할당 범위를 제한하고, 비정상적인 slab write 시 감사 로그를 생성하도록 규칙 추가.
      • 구현 난이도 ★★★ / 운영 영향 ★★ (정책 재로드 필요) / 검증: ausearch -m avc -ts recent 로 관련 AVC 거부 로그 확인.
  • 근본(해결)

    • 커널 패치를 적용하여 NFSD4_REPLAY_ISIZE 를 충분히 크게 늘린 최신 커널 버전(예: 6.7 이후)으로 업그레이드합니다.
      • 구현 난이도 ★★★★ (커널 교체 및 재부팅) / 운영 영향 ★★★ (재시작 시 서비스 중단) / 검증: `grep NFSD4_REPLAY_ISIZE /boot/config-$(uname

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=9.8 · non-KEV · EPSS=0.0049 · exploit=moderate · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…