🔍 CVE-2026-93231

0.0
CVSS Score
UNKNOWN
2026-09-24
2026-10-21 13:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 lockd 구성 요소에서 nlmsvc_match_ip() 함수의 인자 순서가 잘못 전달되어 발생하는 취약점입니다. 이로 인해 /proc/fs/nfsd/unlock_ip를 통해 특정 서버 IP의 잠금을 해제하려 할 때 비교 로직이 정상적으로 작동하지 않아 잠금이 해제되지 않는 문제가 발생합니다.

💡 쉬운 설명

특정 IP 주소와 관련된 파일 잠금을 해제하려고 할 때, 컴퓨터가 주소를 비교하는 순서가 거꾸로 되어 있어 명령이 무시되는 버그입니다. 이로 인해 잠금이 풀리지 않아 시스템 리소스가 계속 점유될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: lockd: fix swapped arguments in nlmsvc_match_ip() When releasing locks by server IP address via /proc/fs/nfsd/unlock_ip, nlmsvc_unlock_all_by_ip() calls nlm_traverse_files() with the server sockaddr as the opaque @data argument: nlm_traverse_files(server_addr, nlmsvc_match_ip, NULL); The match callback is later invoked from nlm_traverse_locks() as: match(lockhost, host); where the first argument is the nlm_host that owns the lock, and the second argument is the @data that was originally passed down (here the server sockaddr). This is the convention every other match callback relies on (nlmsvc_mark_host(), nlmsvc_same_host(), nlmsvc_is_client()): arg1 is the real nlm_host, arg2 is the caller-supplied reference value. nlmsvc_match_ip() has had these two arguments reversed ever since the unlock-by-IP feature was introduced in commit 4373ea84c84d ("lockd: unlock lockd locks associated with a given server ip"): return rpc_cmp_addr(nlm_srcaddr(host), datap); Here @host is actually the server sockaddr, so nlm_srcaddr(host) dereferences a struct sockaddr as a struct nlm_host and reads garbage at the offset of h_srcaddr; meanwhile @datap is actually the lock owner's nlm_host but is compared as a sockaddr. As a result the comparison practically never matches and locks are not released for the requested IP. Swap the arguments so the lock owner's source address is compared against the requested server address: return rpc_cmp_addr(nlm_srcaddr(datap), (struct sockaddr *)host); [ cel: fix the misleading typedef parameter names too ]

📍 영향받는 시스템

Linux kernel (lockd 기능이 포함된 버전)

⚔️ 공격 벡터

로컬 시스템에서 /proc/fs/nfsd/unlock_ip 인터페이스를 통한 잘못된 잠금 해제 시도

🛡️ 대응 방법

nlmsvc_match_ip() 함수의 인자 순서를 수정한 최신 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 패치가 적용된 최신 보안 업데이트 버전인지 확인

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel