🇰🇷 한글 설명
Linux 커널의 ATM CLIP 모듈에서 ioctl(ATMARP_MKIP)로 할당된 struct clip_vcc가 ioctl(ATMARPD_CTRL)에 의해 vcc->push()가 NULL로 바뀌면서 해제되지 않아 메모리 누수가 발생하는 문제입니다. 두 ioctl을 lock_sock()으로 직렬화하고 vcc->push() 상태를 확인하여 해결합니다.
💡 쉬운 설명
커널 안에서 사용이 끝난 메모리가 제대로 반환되지 않고 계속 쌓이는 결함입니다. 시스템 메모리가 점차 소모되어 성능 저하나 서비스 장애로 이어질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
atm: clip: Fix memory leak of struct clip_vcc.
ioctl(ATMARP_MKIP) allocates struct clip_vcc and set it to
vcc->user_back.
The code assumes that vcc_destroy_socket() passes NULL skb
to vcc->push() when the socket is close()d, and then clip_push()
frees clip_vcc.
However, ioctl(ATMARPD_CTRL) sets NULL to vcc->push() in
atm_init_atmarp(), resulting in memory leak.
Let's serialise two ioctl() by lock_sock() and check vcc->push()
in atm_init_atmarp() to prevent memleak.
📍 영향받는 시스템
ATM CLIP(Classical IP over ATM) 기능을 포함한 수정 이전 Linux 커널 버전
⚔️ 공격 벡터
로컬 사용자가 ATM 관련 ioctl 호출을 조작해 커널 메모리를 반복적으로 누수시켜 서비스 거부 상태를 유발할 수 있습니다.
🛡️ 대응 방법
배포판 보안 업데이트 또는 CVE-2025-38546 수정이 포함된 Linux 커널로 업그레이드하고 재부팅합니다.
🔧 검증 코드
커널 버전이 수정 패치가 포함된 배포판 버전 이상인지 확인하고, clip/atm 모듈이 로드되어 있지 않으면 해당 기능이 노출되지 않아 영향이 제한적입니다.
uname -r; lsmod | grep -E '^clip|atm' 2>/dev/null