🇰🇷 한글 설명
Linux 커널의 procfs 모듈에서 do_procmap_query() 함수가 잘못된 크기의 build ID 버퍼를 처리할 때 mmap_lock 해제 후 mmput()이 중복 호출되는 메모리 이중 해제 취약점입니다. 이는 커널 패닉이나 메모리 손상을 야기할 수 있습니다.
💡 쉬운 설명
Linux 커널이 특정 메모리 정보 조회 시 메모리를 두 번 해제하려고 시도하는 버그입니다. 로컬 사용자가 이를 악용하면 시스템을 충돌시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
procfs: fix possible double mmput() in do_procmap_query()
When user provides incorrectly sized buffer for build ID for PROCMAP_QUERY
we return with -ENAMETOOLONG error. After recent changes this condition
happens later, after we unlocked mmap_lock/per-VMA lock and did mmput(),
so original goto out is now wrong and will double-mmput() mm_struct. Fix
by jumping further to clean up only vm_file and name_buf.
📍 영향받는 시스템
Linux kernel 5.10+ (procfs 관련 코드 변경 이후 버전)
⚔️ 공격 벡터
로컬 공격자가 잘못된 크기의 버퍼로 /proc의 PROCMAP_QUERY 기능 호출
🛡️ 대응 방법
Linux 커널을 최신 패치된 버전으로 업그레이드 (해당 버그 픽스 포함 커밋 적용)
🔧 검증 코드
현재 커널 버전을 확인하고, 패치된 버전 이상인지 확인. 영향받는 커널 범위는 배포판 보안 공지를 참조하여 구체적 버전 확인 필요
uname -r | grep -E '^[0-9]+\.[0-9]+(\.[0-9]+)?' && cat /proc/version