🇰🇷 한글 설명
Linux 커널의 xenbus 구성 요소에서 장치 초기화 과정 중 otherend_id 필드가 완전히 설정되기 전에 xenstore watch가 발생할 경우 발생하는 취약점입니다. 이로 인해 잘못된 장치 상태 변경으로 인식되어 device_unregister()가 호출될 수 있으며, 이는 모듈 로드 시의 장치 프로브 과정과 충돌하여 데드락(Deadlock)을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품이 처음 켜질 때 정보를 다 읽기도 전에 다른 프로그램이 '장치가 꺼졌다'고 잘못 판단하여 시스템이 멈춰버릴 수 있는 문제입니다. 장치 정보가 완전히 준비될 때까지 기다리지 않아 발생하는 충돌 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xen/xenbus: check otherend_id only after it has been initialized
When device just got initialized (for example on module load), the
otherend_id field is initialized only after
xenbus_read_otherend_details() gets called. If xenstore watch triggers
xenbus_dev_changed() before that, it might consider still zeroed
otherend_id field (not matching actual xenstore content) as a sign of
device state reset. It can happen because xenstore watch are handled in
another thread (xenwatch), which can run in parallel to the initial
device probe running at module load. In that case, it would call
device_unregister(), which would deadlock against device probe from
module init.
Fix this by considering dev->otherend_id change only after dev->otherend
is set (which happen after otherend_id is initialized).
📍 영향받는 시스템
Linux Kernel (xen/xenbus 관련 모듈 사용 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 조건(모듈 로드 시점의 타이밍 이슈)을 유도하여 시스템 데드락을 발생시킬 수 있음
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 보안 업데이트 버전인지 확인하십시오.