CVE-2024-36905 in Linux
요약
\~에 의해 VulDB • 2026. 05. 16.
리포트에 따르면, 이 크래시는 `tcp_recvmsg_locked` 함수에서 발생했으며, 이는 TCP 소켓에서 데이터를 수신하는 과정에서 문제가 발생했음을 나타냅니다. 호출 트레이스를 보면, `tcp_recvmsg_locked`가 `tcp_recvmsg`를 호출하고, 이는 다시 `inet6_recvmsg`를 통해 IPv6 소켓에서 데이터를 수신하는 과정임을 알 수 있습니다.
### 주요 분석 포인트:
1. **`tcp_recvmsg_locked` 함수**: - 이 함수는 TCP 소켓에서 데이터를 수신하는 핵심 로직을 담당합니다. - 크래시가 이 함수에서 발생했다는 것은 데이터 수신 과정에서 메모리 접근 오류 또는 기타 문제가 발생했음을 시사합니다.
2. **`CR2` 레지스터**: - `CR2` 레지스터는 페이지 폴트 발생 시 접근하려고 했던 가상 주소(`0x7f1155bf2304`)를 저장합니다. - 이 주소가 유효하지 않거나 접근 권한이 없는 메모리 영역을 가리키고 있다면, 이는 메모리 접근 오류(예: NULL 포인터 디레퍼런스 또는 잘못된 메모리 접근)로 인한 크래시일 가능성이 높습니다.
3. **`RIP` 레지스터**: - `RIP` 레지스터는 크래시가 발생한 명령어 주소(`0x7faeb6363db9`)를 가리킵니다. - 이 주소는 사용자 공간(`0x7faeb6363db9`)에서 발생했음을 나타내며, 이는 시스템 콜(`recvmmsg`)을 통해 데이터 수신 요청이 들어온 후 내부적으로 처리되는 과정에서 문제가 발생했음을 의미합니다.
4. **`EFLAGS` 레지스터**: - `EFLAGS` 레지스터의 값(`0x00000246`)은 크래시 발생 시 CPU 상태 플래그를 나타냅니다. - 이 값은 일반적으로 페이지 폴트나 기타 예외 상황과 관련이 있을 수 있습니다.
5. **`ORIG_RAX` 레지스터**: - `ORIG_RAX` 레지스터는 시스템 콜 번호(`0x12b`)를 나타내며, 이는 `recvmmsg` 시스템 콜을 의미합니다. - `recvmmsg`는 여러 메시지를 한 번에 수신하는 시스템 콜로, 네트워크 데이터 수신 과정에서 문제가 발생했을 가능성이 높습니다.
### 결론: 이 크래시는 TCP 소켓에서 데이터를 수신하는 과정에서 메모리 접근 오류가 발생했음을 나타냅니다. 특히, `CR2` 레지스터에 저장된 주소(`0x7f1155bf2304`)가 유효하지 않거나 접근 권한이 없는 메모리 영역을 가리키고 있으므로, 이는 메모리 관리 문제(예: 잘못된 포인터 사용 또는 메모리 할당 오류)로 인한 크래시일 가능성이 높습니다.
### 추가 분석 필요 사항: - `CR2` 주소(`0x7f1155bf2304`)가 어떤 메모리 영역을 가리키는지 확인해야 합니다. - `tcp_recvmsg_locked` 함수의 소스 코드를 검토하여 메모리 접근 관련 로직을 확인해야 합니다. - 시스템 콜(`recvmmsg`) 호출 시 전달된 인자(`RDI`, `RSI`, `RDX` 등)를 확인하여 문제의 원인을 더 구체적으로 파악해야 합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.