🇰🇷 한글 설명
Linux 커널의 netdev-genl 구성 요소에서 NAPI 스레드의 PID를 보고할 때, 호출자의 PID 네임스페이스가 아닌 초기(global) PID 네임스페이스의 PID를 반환하는 취약점이 발견되었습니다. 이로 인해 자식 PID 네임스페이스에 있는 사용자가 해당 네임스페이스에서 보이지 않는 커널 스레드의 전역 PID를 확인할 수 있습니다.
💡 쉬운 설명
격리된 환경(컨테이너 등)에 있는 사용자가 시스템 전체에서 사용하는 실제 프로세스 번호를 훔쳐볼 수 있는 보안 허점이 있었습니다. 이는 시스템 내부 정보가 유출될 수 있는 정보 노출 취약점입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netdev-genl: report NAPI thread PID in the caller's pid namespace
netdev_nl_napi_fill_one() reports the NAPI kthread PID in NETDEV_A_NAPI_PID
using task_pid_nr(), which returns the PID in the initial pid namespace.
NETDEV_CMD_NAPI_GET does not have GENL_ADMIN_PERM and the netdev genl family
is netnsok, so a caller in a child pid namespace can issue it. That caller
then sees the kthread's global PID, even though the kthread is not visible
in its pid namespace, where the value should be 0.
Translate the PID through the caller's pid namespace, the same way commit
3799c2570982 ("io_uring/fdinfo: translate SqThread PID through caller's
pid_ns") did for the io_uring SQPOLL thread. The doit and dumpit paths both
run synchronously in the caller's context, so task_active_pid_ns(current) is
the caller's pid namespace.
📍 영향받는 시스템
Linux Kernel (netdev-genl 관련 모듈 사용 버전)
⚔️ 공격 벡터
자식 PID 네임스페이스 내에서 NETDEV_CMD_NAPI_GET 명령을 실행하여 커널 스레드의 전역 PID를 획득
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 릴리스 버전인지 확인