🇰🇷 한글 설명
Linux 커널의 QAT(QuickAssist Technology) 드라이버에서 서비스 테이블을 순회할 때 적절한 잠금(lock)을 사용하지 않아 발생하는 취약점입니다. 서비스 등록 또는 해제 과정이 동시에 발생할 경우 리스트 손상이나 Use-After-Free(UAF) 오류가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 목록을 읽고 있는 도중에 다른 작업이 목록을 갑자기 수정하여 시스템이 혼란에 빠지는 문제입니다. 이로 인해 시스템이 멈추거나 보안상 위험한 상태가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
crypto: qat - protect service table iterations with service_lock
The service_table list is protected by service_lock when entries are
added or removed (in adf_service_add() and adf_service_remove()), but
several functions iterate over the list without holding this lock.
A concurrent adf_service_register() or adf_service_unregister() call
could modify the list during traversal, leading to list corruption or
a use-after-free.
Fix this by holding service_lock across all list_for_each_entry()
iterations of service_table in adf_dev_init(), adf_dev_start(),
adf_dev_stop(), adf_dev_shutdown(), adf_dev_restarting_notify(),
adf_dev_restarted_notify(), and adf_error_notifier().
The lock ordering is safe: callers of the static helpers (adf_dev_up()
and adf_dev_down()) acquire state_lock before service_lock, and no
event_hld callback or service_lock holder ever acquires state_lock in
the reverse order.
📍 영향받는 시스템
Linux kernel (QAT driver 사용 환경)
⚔️ 공격 벡터
동시성 제어 미흡을 이용한 로컬 공격자가 서비스 등록/해제 프로세스를 유도하여 메모리 오류 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 service_lock 적용 확인
🔧 검증 코드
현재 커널 버전과 QAT 모듈 로드 여부를 확인하여 패치 적용 여부를 검토합니다.
uname -r && grep -i 'qat' /proc/modules 2>/dev/null