🇰🇷 한글 설명
리눅스 커널의 tty 서브시스템에서 cdev_add() 호출 실패 시 cdev 포인터를 초기화하지 않아 발생하는 취약점입니다. 이로 인해 해제된 메모리를 가리키는 잘못된 포인터가 남아있게 되며, 이후 tty_unregister_device() 호출 시 use-after-free 오류를 유발합니다.
💡 쉬운 설명
프로그램이 사용이 끝난 메모리 주소를 지우지 않고 계속 붙잡고 있다가, 나중에 이미 사라진 메모리에 접근하려고 시도할 때 발생하는 문제입니다. 이 과정에서 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tty: clear cdev pointer after cdev_add() failure
tty_cdev_add() drops the cdev reference when cdev_add() fails, but
leaves driver->cdevs[index] pointing to freed memory.
tty_unregister_device() later passes that stale pointer to cdev_del(),
causing a use-after-free.
Clear the slot after dropping the reference.
📍 영향받는 시스템
cdev_add() 실패 시 포인터 초기화 로직이 누락된 리눅스 커널 버전
⚔️ 공격 벡터
특정 조건에서 tty 장치 등록 실패를 유도한 후 장치 해제 과정을 통해 메모리 오류 유발
🛡️ 대응 방법
cdev_add() 실패 시 driver->cdevs[index] 슬롯을 명시적으로 NULL로 초기화하는 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인