🔍 CVE-2022-48790

9.8
CVSS Score
CRITICAL
2024-07-16
2026-08-04 10:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 NVMe 드라이버에서 컨트롤러 리셋 과정 중 발생할 수 있는 Use-After-Free 취약점입니다. nvme-tcp 드라이버에서 비동기 이벤트(AER) 제출 시 컨트롤러의 준비 상태를 확인하지 않아 레이스 컨디션이 발생하며 메모리 오류를 유발할 수 있습니다.

💡 쉬운 설명

컴퓨터의 저장 장치(NVMe)를 초기화하는 도중에 갑자기 잘못된 명령이 전달되어 시스템 메모리가 꼬이는 문제입니다. 이로 인해 시스템이 멈추거나 보안상 위험한 상태가 될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: nvme: fix a possible use-after-free in controller reset during load Unlike .queue_rq, in .submit_async_event drivers may not check the ctrl readiness for AER submission. This may lead to a use-after-free condition that was observed with nvme-tcp. The race condition may happen in the following scenario: 1. driver executes its reset_ctrl_work 2. -> nvme_stop_ctrl - flushes ctrl async_event_work 3. ctrl sends AEN which is received by the host, which in turn schedules AEN handling 4. teardown admin queue (which releases the queue socket) 5. AEN processed, submits another AER, calling the driver to submit 6. driver attempts to send the cmd ==> use-after-free In order to fix that, add ctrl state check to validate the ctrl is actually able to accept the AER submission. This addresses the above race in controller resets because the driver during teardown should: 1. change ctrl state to RESETTING 2. flush async_event_work (as well as other async work elements) So after 1,2, any other AER command will find the ctrl state to be RESETTING and bail out without submitting the AER.

📍 영향받는 시스템

Linux kernel (특히 nvme-tcp 드라이버를 사용하는 환경)

⚔️ 공격 벡터

컨트롤러 리셋과 비동기 이벤트 처리 간의 타이밍 차이를 이용한 레이스 컨디션 공격

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 컨트롤러 상태 확인 로직을 적용해야 합니다.

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel