🔍 CVE-2023-53823

7.8
CVSS Score
HIGH
2025-12-09
2026-10-30 13:17
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 block/rq_qos 계층에서 디스크 제거와 cgroup 설정 간의 동기화 문제로 인해 발생하는 취약점입니다. 이로 인해 경합 조건(Race Condition)이 발생하여 Null 포인터 역참조 또는 메모리 누수가 발생할 수 있습니다.

💡 쉬운 설명

디스크를 제거하는 과정과 디스크 설정을 변경하는 과정이 동시에 일어날 때 시스템이 충돌하거나 메모리가 낭비될 수 있는 문제입니다. 새로운 잠금(Lock) 장치를 추가하여 이러한 충돌을 방지하도록 수정되었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: block/rq_qos: protect rq_qos apis with a new lock commit 50e34d78815e ("block: disable the elevator int del_gendisk") move rq_qos_exit() from disk_release() to del_gendisk(), this will introduce some problems: 1) If rq_qos_add() is triggered by enabling iocost/iolatency through cgroupfs, then it can concurrent with del_gendisk(), it's not safe to write 'q->rq_qos' concurrently. 2) Activate cgroup policy that is relied on rq_qos will call rq_qos_add() and blkcg_activate_policy(), and if rq_qos_exit() is called in the middle, null-ptr-dereference will be triggered in blkcg_activate_policy(). 3) blkg_conf_open_bdev() can call blkdev_get_no_open() first to find the disk, then if rq_qos_exit() from del_gendisk() is done before rq_qos_add(), then memory will be leaked. This patch add a new disk level mutex 'rq_qos_mutex': 1) The lock will protect rq_qos_exit() directly. 2) For wbt that doesn't relied on blk-cgroup, rq_qos_add() can only be called from disk initialization for now because wbt can't be destructed until rq_qos_exit(), so it's safe not to protect wbt for now. Hoever, in case that rq_qos dynamically destruction is supported in the furture, this patch also protect rq_qos_add() from wbt_init() directly, this is enough because blk-sysfs already synchronize writers with disk removal. 3) For iocost and iolatency, in order to synchronize disk removal and cgroup configuration, the lock is held after blkdev_get_no_open() from blkg_conf_open_bdev(), and is released in blkg_conf_exit(). In order to fix the above memory leak, disk_live() is checked after holding the new lock.

📍 영향받는 시스템

Linux Kernel (rq_qos 관련 모듈을 사용하는 시스템)

⚔️ 공격 벡터

로컬 공격자가 cgroup 설정을 조작하거나 디스크 제거 프로세스를 유도하여 경합 조건을 발생시킴

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel