🇰🇷 한글 설명
Linux 커널의 accel/rocket 드라이버에서 rocket_probe()가 rocket_device_init() 실패 시 반환된 에러 포인터를 전역 rdev 포인터에 그대로 저장하는 문제입니다. 이후 코어 프로브가 이를 초기화된 것으로 오인해 에러 포인터를 역참조할 수 있습니다. 수정은 에러 코드를 별도로 저장하고 실패 경로에서 rdev를 NULL로 초기화하는 것입니다.
💡 쉬운 설명
장치 초기화가 실패했는데도 실패 흔적이 남아, 다른 부분이 초기화가 끝난 것으로 착각하고 잘못된 메모리를 읽을 수 있습니다. 이로 인해 시스템이 불안정해지거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
accel/rocket: clear rdev on device init failure
rocket_probe() stores the return value from rocket_device_init() in the
file-scoped rdev pointer before checking whether it is an error pointer.
If rocket_device_init() fails, rdev is left as an ERR_PTR.
The rdev pointer is also used as the marker for whether the shared rocket
device has already been initialized. A later core probe can therefore see
a non-NULL rdev, skip rocket_device_init(), and dereference the error
pointer when reading rdev->num_cores.
Save the error code and clear rdev before returning from the
rocket_device_init() failure path.
📍 영향받는 시스템
Linux 커널의 accel/rocket 드라이버를 포함하는 버전 (정확한 영향 버전 범위는 확인 필요)
⚔️ 공격 벡터
공개 정보상 원격 공격 경로는 명확하지 않으며, 장치 초기화 실패 상황에서 발생하는 커널 로직 오류로 보임 (CVSS 미평가)
🛡️ 대응 방법
커널 소스의 해당 패치를 적용하거나 배포판에서 제공하는 최신 커널로 업데이트
🔧 검증 코드
커널 버전이 패치된 버전 이상인지 확인하고, rocket 모듈이 로드되지 않았다면 이 취약점의 직접적 영향은 없습니다.
uname -r && lsmod 2>/dev/null | grep -i rocket