CVE-2023-52745 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 30.

리눅스 커널 패닉 또는 Oops 로그를 분석한 결과입니다.

### **1. 핵심 결론** * **발생 위치:** IPv6 UDP 소켓 전송 경로 (`udp_v6_send_skb` → `ip6_finish_output2` → `skb_clone`) * **원인 추정:** **NULL 포인터 역참조 (NULL Pointer Dereference)** 또는 **잘못된 메모리 접근** * **특징:** `skb_clone()` 함수에서 패킷 복사 중 문제가 발생했으며, 이는 일반적으로 **이미 해제된 메모리(kfree된 skb)**나 **잘못된 상태의 skb**를 사용하려고 할 때 발생합니다.

---

### **2. 상세 분석**

#### **(1) Call Trace 분석** ``` skb_clone+0x55/0xd0 ip6_finish_output2+0x3fe/0x690 ip6_finish_output+0xfa/0x310 ip6_send_skb+0x1e/0x60 udp_v6_send_skb+0x1e5/0x420 udpv6_sendmsg+0xb3c/0xe60 sock_sendmsg+0x33/0x40 __sys_sendto+0x103/0x160 ... ``` - **`udpv6_sendmsg`**: 사용자 공간에서 `sendto()` 시스템 콜을 통해 IPv6 UDP 패킷을 전송하려고 함. - **`udp_v6_send_skb`**: UDP 패킷을 IP 레이어로 전달. - **`ip6_send_skb` → `ip6_finish_output` → `ip6_finish_output2`**: IPv6 라우팅 및 출력 준비. - **`skb_clone`**: 패킷을 복사하여 다른 경로로 보내거나, 원본을 유지하면서 복사본을 생성하는 단계.

???? **문제 지점:** `skb_clone()` 함수 내부에서 **NULL 포인터 접근** 또는 **유효하지 않은 메모리 접근**이 발생했습니다.

#### **(2) 레지스터 분석** - **RAX: `ffffffffffffffda`** - 이 값은 `-42` (즉, `-EOPNOTSUPP` 또는 유사한 에러 코드)를 의미할 수 있지만, Oops 로그에서 RAX가 에러 코드를 담고 있는 경우, 이는 함수가 실패한 상태를 나타낼 수 있습니다. - 그러나 **NULL 포인터 접근**의 경우 RAX가 `0x0` 또는 `0x8` 등 작은 값이어야 합니다. - `ffffffffffffffda`는 **음수 값**이므로, **NULL 포인터가 아닌 다른 메모리 접근 오류**일 가능성이 높습니다.

- **RDI: `0x0000000000000030`** - `skb_clone()`의 첫 번째 인자 (`struct sk_buff *skb`)로 추정됩니다. - `0x30`은 **NULL이 아니지만 매우 작은 주소**입니다. 이는 **잘못된 포인터 (Dangling Pointer)**일 가능성이 높습니다. - 정상적인 `skb` 포인터는 일반적으로 `0xffff...` (커널 가상 주소 공간)에 위치해야 합니다. `0x30`은 사용자 공간 주소나 깨진 포인터일 수 있습니다.

#### **(3) DR6/DR7 레지스터** - **DR6: `0x00000000fffe0ff0`** - 디버그 레지스터로, 특정 비트가 설정되어 있어 **NULL 포인터 접근** 또는 **특정 메모리 접근 오류**를 나타낼 수 있습니다. - `0xfffe0ff0`은 일반적인 NULL 접근 패턴과 일치하지 않을 수 있으므로, **메모리 무결성 오류**일 가능성이 있습니다.

---

### **3. 가능한 원인**

1. **Use-After-Free (UAF)** - `skb`가 이미 해제된 후 다시 사용하려고 함. - 예: 네트워크 드라이버나 프로토콜 스택에서 `kfree_skb()` 후에도 포인터를 유지하고 있음.

2. **잘못된 skb 구조체** - `skb`의 `head`, `data`, `end` 포인터가 잘못 설정되어 있음. - `skb_clone()`에서 `skb->head`나 `skb->data`를 접근할 때 잘못된 메모리 주소를 참조.

3. **커널 버그 또는 드라이버 버그** - IPv6 UDP 전송 경로에서 특정 조건에서 `skb`가 손상되는 버그. - 네트워크 드라이버에서 `skb`를 잘못 관리하고 있음

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!