CVE-2025-39989 in Linux정보

요약

\~에 의해 VulDB • 2026. 06. 27.

리눅스 커널에서 다음 취약점이 해결되었습니다.

x86/mce: copy-from-user 컨텍스트를 결정하기 위해 is_copy_from_user() 사용

패치 시리즈 "mm/hwpoison: 메모리 실패 처리의 회귀 현상 수정", v4.

## 1. 목표 사항:

이 패치셋은 버전 5.10 LTS와 비교하여 상위(upstream) 커널에서 5.17 이후로 나타난 메모리 실패(memory failure) 처리 관련 두 가지 심각한 회귀(regression) 문제를 해결합니다.

- copyin 케이스: 커널이 사용자 공간으로부터 복사하는 동안 사용자 페이지에서 중독(poison) 발견 - instr 케이스: 사용자 공간에서 명령어 가져오기(instruction fetching) 중에 중독 발견

## 2. 기대 결과 및 이유

- copyin 케이스의 경우:

커널은 get_user() 또는 copy_from_user() 수행 시 오류 반환을 받고, 크래시(crash) 대신 프로세스에 -EFAULT를 반환한다면 해당 위치에서 발견된 중독으로부터 복구할 수 있습니다. 구체적으로 MCE 핸들러는 수정자(fixup handler) 유형을 확인하여 커널 내부의 #MC(machine check exception)가 복구 가능한지 여부를 결정합니다. EX_TYPE_UACCESS이 발견되면 PC는 _ASM_EXTABLE_FAULT()에 지정된 복구 코드로 점프하고 사용자 공간으로 -EFAULT를 반환합니다.

- instr 케이스의 경우:

사용자 공간에서 명령어 가져오기 중에 중독이 발견되더라도 완전한 복구가 가능합니다. 사용자 프로세스가 #PF(page fault)를 발생시키면, 리눅스는 새 페이지를 할당하여 저장소(storage)로부터 읽어서 채웁니다.


## 3. 실제 현상 및 이유

- copyin 케이스의 경우: v5.17 이후 커널 패닉

커밋 4c132d1d844a("x86/futex: .fixup 사용 제거")는 새로운 extable 수정자 유형인 EX_TYPE_EFAULT_REG를 도입했으며, 후속 패치들은 copy-from-user 작업에 대한 extable 수정자 유형을 EX_TYPE_UACCESS에서 EX_TYPE_EFAULT_REG로 변경했습니다. 이로 인해 get_user() 또는 copy_from_user() 중독이 발견되었을 때 기존 EX_TYPE_UACCESS 처리가 깨졌습니다.

- instr 케이스의 경우: #CMCI와 #MCE 간의 경합(race)으로 인해 SIGBUS 신호에 의해 사용자 프로세스가 종료됨

수정 불가능한(uncorrected) 메모리 오류가 소모(consuming)될 때, UCNA 서명(signature)이 있는 수정 불가능한 오류를 보고하는 메모리 컨트롤러의 CMCI와 데이터가 곧 소모되려 할 때 코어가 보고하고 SRAR 서명을 가진 머신 체크 간에 경합 상태가 발생합니다.

### 배경: 인텔 플랫폼에서 *UN*corrected(수정 불가) 오류가 *C*MCI와 연결되는 이유 [1]

아이스레이크(Icelake) 이전의 메모리 컨트롤러는 이전에 발견되지 않은 수정 불가능한 메모리 오류를 탐지하는 순찰 스크럽(patrol scrub) 이벤트를 보고했으며, 이는 머신 체크 뱅크에서 SRAO(Software Recoverable Action Optional: 소프트웨어 복구 가능 작업 선택 사항) 서명을 가진 브로드캐스트 머신

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2025. 04. 16.

모더레이션

수락

항목

VDB-305621

EPSS

0.00231

출처

Interested in the pricing of exploits?

See the underground prices here!