🔍 CVE-2017-1000405

7.0
CVSS Score
HIGH
2017-11-30
2026-05-13 00:24
✅ 완료

🇰🇷 한글 설명

Linux 커널 2.6.38~4.14의 THP(Transparent Huge Pages) 구현에서 touch_pmd() 함수의 부적절한 pmd_mkdirty() 사용으로 인해 읽기 전용 huge page를 더티 상태로 변경할 수 있는 취약점입니다. Copy-on-Write 보호 메커니즘을 우회하여 zero huge page 및 sealed shmem 파일의 메모리를 덮어쓸 수 있습니다.

💡 쉬운 설명

리눅스 커널의 메모리 보호 기능에서 보호된 메모리 영역을 쓸 수 있게 만드는 버그입니다. 악의적인 프로그램이 이를 악용하여 시스템 메모리를 손상시키거나 접근 제어를 우회할 수 있습니다.

🇺🇸 원문 (English)

The Linux Kernel versions 2.6.38 through 4.14 have a problematic use of pmd_mkdirty() in the touch_pmd() function inside the THP implementation. touch_pmd() can be reached by get_user_pages(). In such case, the pmd will become dirty. This scenario breaks the new can_follow_write_pmd()'s logic - pmd can become dirty without going through a COW cycle. This bug is not as severe as the original "Dirty cow" because an ext4 file (or any other regular file) cannot be mapped using THP. Nevertheless, it does allow us to overwrite read-only huge pages. For example, the zero huge page and sealed shmem files can be overwritten (since their mapping can be populated using THP). Note that after the first write page-fault to the zero page, it will be replaced with a new fresh (and zeroed) thp.

📍 영향받는 시스템

Linux Kernel 2.6.38 ~ 4.14 (THP 활성화된 x86-64 시스템)

⚔️ 공격 벡터

get_user_pages() API를 통한 THP 접근으로 read-only 메모리 페이지를 dirty 상태로 변경하여 메모리 덮어쓰기 실행

🛡️ 대응 방법

리눅스 커널을 4.14.1 이상으로 업그레이드하거나 공식 보안 패치 적용

🔧 검증 코드

명령어 실행 후 'Vulnerable'이 나타나면 패치 필요, 버전이 4.14 초과이면 안전

Shell / Script
uname -r | grep -E '^[2-3]\..*|^4\.(0-9|1[0-3])' && echo 'Vulnerable' || echo 'Check version'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel