CVE-2024-36904 in Linux정보

요약

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

리눅스 커널 패닉/오류 로그를 분석한 결과, **TCP 소켓 연결 시도 중 참조 카운트(Reference Count) 오버플로우 또는 언더플로우가 감지되어 커널이 경고(Warning)를 발생**시켰습니다.

이 오류는 일반적으로 **커널 버그** 또는 **심각한 메모리/리소스 관리 문제**를 의미하며, 애플리케이션 레벨에서 직접 해결하기 어려운 경우가 많습니다.

---

### ???? 핵심 분석

#### 1. 오류의 본질: `refcount_warn_saturate` - **`refcount_warn_saturate`**: 커널의 참조 카운트 시스템에서 값이 0 미만으로 떨어지거나(언더플로우), 최대값을 초과하는 경우(오버플로우) 발생하는 경고 함수입니다. - **`tcp_twsk_unique`**: 이 함수는 TCP TIME_WAIT 상태의 소켓을 새로운 연결에 재사용할 때 호출됩니다. 여기서 참조 카운트 문제가 발생했다는 것은 **TIME_WAIT 소켓 관리 로직에서 메모리 할당/해제 또는 참조 카운트 조작에 결함이 있음**을 시사합니다.

#### 2. 호출 스택(Call Trace) 해석 ``` tcp_twsk_unique+0x186/0x190 ← TIME_WAIT 소켓 고유성 확인 중 오류 발생 __inet_check_established+0x176/0x2d0 __inet_hash_connect+0x74/0x7d0 tcp_v4_connect+0x278/0x530 ← IPv4 TCP 연결 시도 __inet_stream_connect+0x10f/0x3d0 inet_stream_connect+0x3a/0x60 __sys_connect+0xa8/0xd0 ← 시스템 콜 connect() 호출 ``` - 애플리케이션이 `connect()` 시스템 콜을 호출하여 TCP 연결을 시도하던 중, 커널 내부에서 TIME_WAIT 소켓 처리 로직(`tcp_twsk_unique`)에서 참조 카운트 오류가 발생했습니다.

#### 3. CR2 레지스터 값 분석 - **`CR2: 0000000020ccb000`**: 페이지 폴트 주소입니다. 이는 메모리 접근 오류가 발생한 주소를 나타냅니다. - 이 주소가 유효하지 않거나 보호된 메모리 영역에 접근하려 했을 가능성이 있습니다.

---

### ????️ 원인 및 해결 방안

#### ✅ 1. 커널 버그 가능성 (가장 유력) - 이 오류는 특정 커널 버전에서 알려진 버그일 수 있습니다. - **해결책**: - 사용 중인 커널 버전 확인 (`uname -r`). - 해당 커널 버전에서 `refcount` 관련 패치가 적용되었는지 확인. - **커널 업그레이드** 또는 **패치 적용**을 권장합니다.

#### ✅ 2. 메모리 부족 또는 메모리 누수 - 시스템 메모리가 부족하거나, 커널 메모리 누수로 인해 참조 카운트 구조체가 손상되었을 수 있습니다. - **해결책**: - `dmesg` 로그에서 `Out of memory` 또는 `kmem_cache` 관련 경고 확인. - 시스템 리소스 모니터링 (메모리, 스왑 사용량).

#### ✅ 3. TCP TIME_WAIT 소켓 과다 - 짧은 시간 동안 많은 TCP 연결이 생성/종료되며 TIME_WAIT 소켓이 쌓여 메모리/리소스 고갈을 유발했을 수 있습니다. - **해결책**: - `net.ipv4.tcp_tw_reuse` 설정 확인 (보안상 권장되지 않음). - 애플리케이션에서 연결 풀(Connection Pooling)을 사용하여 연결 재사용. - `net.ipv4.tcp_max_tw_buckets` 조정.

#### ✅ 4. 하드웨어 또는 드라이버 문제 - 드물게, NIC 드라이버 또는 하드웨어 결함이 커널 메모리 corruption을 유발할 수 있습니다. - **해결책**: - NIC 드라이버 최신 버전으로 업데이트. - 메모리 테스트 (memtest86+) 실행.

---

### ???? 권장 조치 순서

1. **`dmesg` 전체 로그 확인**: ```bash dmesg | grep -i "refcount\|tcp\|oom\|bug" ``` 추가적인 경고 메시지나 이전 오류 기록을 확인하세요.

2. **커널 버전 확인 및 업데이트**: ```bash uname -r ``` 사용 중인 커널이 오래되었거나 알려진 버그가 있는 버전이라면, 최신 안정

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

출처

Do you need the next level of professionalism?

Upgrade your account now!