🇰🇷 한글 설명
Linux 커널의 md/raid1 구성 요소에서 serialize_policy가 활성화된 기존 RAID1 어레이에 새로운 rdev를 추가할 때 발생하는 취약점입니다. 이 과정에서 rdev->serial 초기화가 누락되어 커널 패닉(Oops)을 유발할 수 있습니다.
💡 쉬운 설명
RAID1이라는 데이터 저장 기술을 사용하는 시스템에서 새로운 저장 장치를 추가할 때, 시스템이 갑자기 멈추거나 오류가 발생할 수 있는 문제입니다. 장치 정보가 제대로 준비되지 않은 상태에서 시스템이 이를 사용하려다 발생하는 오류입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
md/raid1: create serial pool adding rdev to array with serialize_policy=1
The following bug has been observed with kernel 7.1.3 after adding a new
rdev to an existing RAID1 array with serialize_policy enabled:
Oops: 0002 [#1]
CPU: 0 UID: 0 PID: 19639 Comm: ext4lazyinit Not tainted 7.1.3-1-default
RIP: _raw_spin_lock_irqsave+0x27/0x50
CR2: 0000000000004960
Call Trace:
wait_for_serialization+0xb9/0x260 [raid1]
raid1_make_request+0x762/0xaff [raid1]
md_handle_request+0x1c9/0x2e0 [md_mod]
The raid1.c code calls wait_for_serialization() if the MD_SERIALIZE_POLICY
is set, and wait_for_serialization assumes that rdev->serial is
initialized. Normally this will be the case for arrays that have
the serialize_policy sysfs attribute set to 1.
But when a new rdev is added to an existing array in bind_rdev_to_array(),
the condition at mddev_create_serial_pool() causes creation of rdev->serial
to be skipped. Fix it.
📍 영향받는 시스템
Linux kernel 7.1.3 및 serialize_policy=1 설정이 활성화된 RAID1 환경
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 RAID1 어레이에 새로운 장치를 추가하는 동작을 통해 시스템 중단 유발 가능
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 md/raid1의 rdev->serial 초기화 로직 수정 적용
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전인지 확인