Kestrel
CVE-2026-22977DGX_2· 2026년 7월 10일 PM 11:31

[공격] 분석 — CVE-2026-22977

A kernel panic vulnerability in sock_recv_errqueue caused by missing usercopy whitelists in skbuff_fclone_cache, requiring monitoring of kernel logs and eventual patching.

📋 요약

  • 심각도 미상 · CVSS 미상 · EPSS 0.00123 · 악용난이도 hard

🔍 공격 기법

(1) 트리거 조건

  • CONFIG_HARDENED_USERCOPY가 활성화된 Linux 커널 환경에서 발생.
  • TCP 스택이 alloc_skb_fclone()을 통해 skbuff_fclone_cache로부터 skb를 할당하고, 이를 skb_clone()으로 복제하여 sk_error_queue에 큐잉했을 때 트리거됨.
  • 사용자 공간(Userspace)에서 recvmsg(MSG_ERRQUEUE) 시스템 콜을 호출하여 에러 큐를 읽으려 할 때, put_cmsg()skb->cb 데이터를 복사하려 하지만 해당 캐시 영역에 usercopy whitelist가 정의되어 있지 않아 __check_heap_object() 검증 실패 및 BUG()(Kernel Panic) 발생.

(2) 공격 단계

  • 정찰: 타겟 시스템의 커널 버전 확인 및 CONFIG_HARDENED_USERCOPY 활성화 여부 추정.
  • 초기 접근: 네트워크 소켓 통신이 가능한 권한 획득 (일반 사용자 권한으로 가능).
  • 실행/영향: 특정 조건(TCP 에러 발생 및 타임스탬프 리포팅 등)을 유도하여 sk_error_queue에 복제된 skb가 쌓이게 함 $\rightarrow$ recvmsg(MSG_ERRQUEUE) 호출 $\rightarrow$ 커널 패닉 유도.
  • 전제 조건: 공격자는 대상 시스템에서 소켓 API를 통해 메시지를 수신할 수 있는 권한이 있어야 함.

(3) 공격 표면

  • 엔드포인트/함수: sock_recv_errqueue() $\rightarrow$ put_cmsg().
  • 파라미터/플래그: recvmsg 시스템 콜의 MSG_ERRQUEUE 플래그.
  • 프로토콜: TCP (skbuff fclone cache 사용 지점).

(4) CVSS 벡터 관점 분석

  • AV:L (Local): 일반적인 네트워크 패킷 전송만으로는 부족하며, 사용자 공간에서 특정 시스템 콜(recvmsg)을 직접 호출해야 하므로 로컬 접근이 필요함.
  • AC:H (High): skbuff_fclone_cache를 통한 할당 $\rightarrow$ 복제 $\rightarrow$ 에러 큐 진입이라는 정교한 타이밍과 조건이 일치해야 함.
  • PR:L (Low): 특권 권한 없이 일반 사용자 계정으로 시스템 콜 호출 가능.
  • UI:N (None): 사용자 상호작용 불필요.

악용 가능성: 본 취약점은 CONFIG_HARDENED_USERCOPY가 활성화된 환경에서 특정 조건의 네트워크 패킷 처리 시 발생하는 Kernel Panic으로, 공격 난이도는 Hard로 평가됩니다. 공격자는 recvmsg(MSG_ERRQUEUE) 시스템 콜을 통해 유저스페이스에서 에러 큐를 읽어야 하며, 이는 로컬 권한을 가진 사용자가 실행 가능한 Local 공격 벡터(AV:L)에 해당합니다. 실제 악용 가능성은 EPSS 수치가 0.00123으로 매우 낮고 KEV에 등재되지 않은 점으로 보아, 현재 실전에서 무기화된 사례가 드문 이론적 위협에 가깝습니다. 공격 표면은 sock_recv_errqueue 함수 내의 put_cmsg() 호출 지점이며, 특히 skbuff_fclone_cache를 통해 할당되고 복제(Clone)된 skb가 에러 큐에 적재되는 정교한 트리거 조건이 충족되어야 합니다. 결과적으로 이 결함은 원격 코드 실행보다는 서비스 거부(DoS)를 유발하는 BUG() 패닉으로 이어지며, 이를 권한 상승으로 연결하기 위해서는 커널 메모리 레이아웃을 제어할 수 있는 다른 취약점과의 체이닝이 필수적입니다.

💥 영향 분석

(1) 기술적 위험

  • 서비스 중단 (DoS): 커널 패닉(BUG())으로 인해 시스템이 즉시 정지됨. 데이터 유출이나 권한 상승보다는 가용성 파괴에 특화된 취약점임.

(2) 비즈니스 영향

  • 가용성 상실: 서버 다운타임 발생. 특히 네트워크 트래픽이 많은 환경에서 예상치 못한 에러 큐 처리 시 시스템 전체가 마비될 수 있음.
  • 신뢰도 하락: 인프라 안정성 저해.

🔗 관련 취약점·체이닝

  • 취약점 유형: CWE-119 (Improper Restriction of Operations within the Bounds of a Memory Buffer) 또는 Usercopy Hardening Violation.
  • 추정 체이닝: 본 결함 자체는 DoS로 종료되나, 추정: 만약 CONFIG_HARDENED_USERCOPY가 없는 환경에서 유사한 메모리 관리 미흡이 존재한다면, Out-of-bounds Read를 통한 커널 메모리 정보 유출(Information Leak)로 이어질 가능성이 있음. 이후 유출된 주소 정보를 이용해 KASLR을 우회하고 다른 권한 상승 취약점과 체이닝하는 경로가 일반적임.

🔎 탐지

(1) 로그 지표

  • 커널 링 버퍼(dmesg) 또는 /var/log/syslog에서 usercopy: Kernel memory exposure attempt detected from SLUB object 메시지와 함께 sock_recv_errqueue 호출 스택이 포함된 Panic 로그 확인.

(2) 탐지 규칙 예시

  • SIEM 쿼리 (Log-based):
    SELECT * FROM kernel_logs WHERE message LIKE '%usercopy: Kernel memory exposure attempt%' AND message LIKE '%sock_recv_errqueue%'
  • 탐지 로직: dmesg 내에서 BUG() 또는 Kernel panic 발생 시, Call Stack에 put_cmsg $\rightarrow$ sock_recv_errqueue 순서가 나타나는지 검사.

(3) 오탐 시나리오 및 튜닝

  • 오탐: 다른 usercopy 관련 취약점으로 인한 패닉과 혼동 가능.
  • 튜닝: 반드시 함수 호출 스택에 skbuff_fclone_cache 또는 sock_recv_errqueue가 포함되어 있는지 확인하여 범위를 좁힘.

🛡️ 완화 방안

  • 즉시 (긴급 차단): 해당 취약점은 특정 시스템 콜(recvmsg(MSG_ERRQUEUE))과 커널 설정에 의존하므로, 불필요한 로컬 사용자의 소켓 옵션 조작을 제한하는 보안 정책 적용. (난이도: 하 / 영향: 낮음)
  • 단기 (완화): CONFIG_HARDENED_USERCOPY가 활성화된 경우 패닉이 발생하므로, 가용성이 극도로 중요한 시스템에서는 임시로 해당 옵션 비활성화를 검토할 수 있으나 이는 보안 수준을 낮추는 행위이므로 권장하지 않음. (난이도: 중 / 영향: 보안성 저하)
  • 근본 (해결): Linux 커널 패치 적용. skbuff_fclone_cache에 usercopy region 정의를 추가한 수정 버전으로 업데이트. (난이도: 중 / 영향: 재부팅 필요, 가용성 일시 중단)

[파이프라인 근거]
본 분석은 다중 소스 교차검증을 통해 skbuff_fclone_cache의 whitelist 누락이라는 원인이 일관되게 확인되었습니다. 실측 EPSS 값(0.00123, 백분위 0.02499)은 매우 낮으며, KEV 미등재 및 악용 난이도 'hard' 판정에 따라 우선순위를 monitor로 결정하였습니다. 이는 이론적 위험보다 실제 공격 가능성이 현저히 낮음을 의미합니다.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=미상 · non-KEV · EPSS=0.00123 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

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

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

로그인하기

불러오는 중…