🇰🇷 한글 설명
Linux 커널의 RDMA/erdma 드라이버에서 CEQ 작업 완료 후 태스크릿(tasklet)이 해제된 메모리에 접근하는 Use-After-Free 취약점이 발견되었습니다. 인터럽트 핸들러가 이미 예약한 태스크릿이 EQ 버퍼가 해제된 이후에도 실행되어 시스템 불안정이나 메모리 오염을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품이 사용을 마치고 정리되는 과정에서, 이미 사라진 데이터 영역을 프로그램이 다시 읽으려고 시도하여 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
RDMA/erdma: Fix CEQ tasklet use-after-free on removal
Each CEQ interrupt handler only schedules eqc->tasklet. The tasklet calls
erdma_ceq_completion_handler(), which reads the DMA-coherent EQ ring
through get_next_valid_eqe() and updates eq->dbrec through notify_eq().
erdma_ceqs_uninit() frees each CEQ IRQ and then destroys its EQ.
free_irq() prevents another hard IRQ and waits for an in-flight handler,
but it does not drain a tasklet that the handler already scheduled. The
tasklet can therefore access eq->qbuf or eq->dbrec after
erdma_eq_destroy() frees them.
Clearing ceq_cb->ready does not synchronize with a tasklet that already
passed the check at the start of erdma_ceq_completion_handler().
Kill the tasklet after free_irq(), when no handler can schedule it again,
and before erdma_ceq_uninit_one() releases the EQ buffers.
📍 영향받는 시스템
Linux kernel (RDMA/erdma driver components)
⚔️ 공격 벡터
로컬 공격자가 특정 RDMA 작업 및 장치 제거 시퀀스를 유도하여 메모리 오류 유발
🛡️ 대응 방법
erdma 드라이버의 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인