🇰🇷 한글 설명
Linux 커널의 drm/panel 모듈에서 jdi_panel_dsi_remove() 함수가 NULL 포인터 역참조 취약점을 가집니다. 함수는 jdi가 NULL인지 확인하지만, NULL일 때도 계속 실행되어 jdi_panel_disable() 내에서 NULL 포인터를 역참조합니다. 패치는 jdi가 NULL일 때 함수를 조기에 반환하여 해결합니다.
💡 쉬운 설명
Linux 커널의 그래픽 드라이버에서 메모리 주소 확인이 제대로 되지 않아 시스템 충돌을 유발할 수 있습니다. 디스플레이 패널을 제거할 때 발생하는 안정성 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/panel: Fix a possible null-pointer dereference in jdi_panel_dsi_remove()
In jdi_panel_dsi_remove(), jdi is explicitly checked, indicating that it
may be NULL:
if (!jdi)
mipi_dsi_detach(dsi);
However, when jdi is NULL, the function does not return and continues by
calling jdi_panel_disable():
err = jdi_panel_disable(&jdi->base);
Inside jdi_panel_disable(), jdi is dereferenced unconditionally, which can
lead to a NULL-pointer dereference:
struct jdi_panel *jdi = to_panel_jdi(panel);
backlight_disable(jdi->backlight);
To prevent such a potential NULL-pointer dereference, return early from
jdi_panel_dsi_remove() when jdi is NULL.
📍 영향받는 시스템
Linux kernel (jdi_panel_dsi 드라이버 포함된 모든 버전)
⚔️ 공격 벡터
로컬 권한자가 디스플레이 패널 드라이버 언로드 시 NULL 포인터 역참조로 커널 패닉 유발
🛡️ 대응 방법
Linux kernel을 최신 패치 버전으로 업데이트 (jdi_panel_dsi_remove 함수의 NULL 체크 후 리턴 추가된 버전)
🔧 검증 코드
PATCHED 출력시 취약점 패치 적용됨, VULNERABLE 또는 파일 없음시 영향받는 커널이거나 최신 패치 필요
grep -A 5 'jdi_panel_dsi_remove' /usr/src/linux/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c 2>/dev/null | grep -q 'return.*jdi' && echo 'PATCHED' || echo 'VULNERABLE'