🇰🇷 한글 설명
Linux 커널의 amdxdna 드라이버에서 사용자 명령 제출 시 유효하지 않은 명령 BO 핸들을 검증하지 않아 발생하는 NULL 포인터 역참조 취약점입니다. 공격자가 특정 ioctl을 호출하면 커널 Oops를 유발하여 시스템을 중단시킬 수 있습니다.
💡 쉬운 설명
AMD NPU를 사용하는 컴퓨터에서 잘못된 명령을 보내면 컴퓨터의 핵심 시스템(커널)이 갑자기 멈추거나 오류를 일으킬 수 있는 문제입니다. 공격자가 특수한 명령을 보내 시스템을 강제로 다운시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
accel/amdxdna: reject user command submission without a command BO
amdxdna_drm_submit_execbuf() passes the user-supplied command BO handle
straight into amdxdna_cmd_submit() with drv_cmd == NULL. When the handle
is AMDXDNA_INVALID_BO_HANDLE (0), the block that fetches job->cmd_bo is
skipped, leaving it NULL, and no check rejects it on the user path (the
!job->cmd_bo guard lives inside the != INVALID branch).
The job is then armed and pushed to the DRM scheduler.
aie2_sched_job_run() takes the drv_cmd == NULL path and calls
amdxdna_cmd_set_state(job->cmd_bo) -> amdxdna_gem_vmap(NULL) ->
to_gobj(NULL)->dev, a NULL pointer dereference in the drm_sched worker.
A process with access to the accel node on a system with a probed AMD NPU
can trigger a kernel oops with a single AMDXDNA_EXEC_CMD ioctl
(cmd_handles = 0).
Only internal driver commands (SYNC_DEBUG_BO / ATTACH_DEBUG_BO)
legitimately pass AMDXDNA_INVALID_BO_HANDLE, and they always set drv_cmd.
Reject the invalid handle for user submissions (drv_cmd == NULL) at the
submit choke point so every user path is covered.
Found by 0sec automated security-research tooling (https://0sec.ai).
📍 영향받는 시스템
AMD NPU(accel/amdxdna) 드라이버가 포함된 Linux 커널
⚔️ 공격 벡터
AMD NPU 장치 노드에 접근 권한이 있는 로컬 프로세스가 AMDXDNA_EXEC_CMD ioctl을 호출
🛡️ 대응 방법
amdxdna 드라이버의 명령 제출 경로에서 유효하지 않은 BO 핸들을 거부하도록 커널을 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인