CVE-2025-39792 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 15.

리눅스 커널에서 다음 취약점이 해결되었습니다:

dm:_zone 장치 한계에 대해 쓰기 BIO를 항상 분할함

영역 추가(zone append) 에뮬레이션을 필요로 하는 모든 영역화 DM 타겟은 블록 레이어의 영역 쓰기 플러깅(zone write plugging)을 사용합니다. 이러한 경우, DM 타겟 드라이버는 dm_accept_partial_bio()를 사용하여 BIO를 분할해서는 안 됩니다. 그렇게 하면 큐 동결(queue freeze) 작업과 관련하여 데드락이 발생할 가능성이 있기 때문입니다. 영역 추가 작업을 에뮬레이션하는 데 사용되는 일반 쓰기 연산도 대상 드라이버에 의해 분할될 수 없습니다. 이는 BIO 섹터를 통해 반환되는 잘못된 쓰인(seen) 섹터 값을 초래하기 때문입니다.

영역화 DM 타겟 드라이버가 이러한 잘못된 BIO 분할을 피하려면, 큰 BIO를 타겟의 map() 함수로 전달되기 전에 분할되도록 보장해야 합니다. 이를 통해 매핑된 장치의 한계를 초과하지 않도록 할 수 있습니다.

dm-crypt와 dm-flakey는 영역화 장치를 지원하고 dm_accept_partial_bio()를 사용하는 유일한 타겟 드라이버입니다.

dm-crypt의 경우, 이 함수는 내부 max_write_size 제한까지 BIO를 분할하는 데 사용됩니다(별도 패치에서 제거될 예정). 그러나 crypt_alloc_buffer()는 BIO당 최대 256개의 벡터(BIO_MAX_VECS)까지만 허용하는 bioset을 사용하므로, dm-crypt 장치의 max_segments 한계(설정되지 않아 BLK_MAX_SEGMENTS(128)로 기본값이 설정됨)를 준수해야 하며 이에 따라 쓰기 BIO가 분할되어야 합니다.

dm-flakey의 경우 영역 추가 에뮬레이션이 필요하지 않으므로 블록 레이어의 영역 쓰기 플러깅이 사용되지 않으며, BIO 분할도 필요하지 않습니다.

dm_zone_bio_needs_split() 함수를 수정하여 bio_needs_zone_write_plugging() 블록 레이어 헬퍼 함수를 사용하고 dm_split_and_process_bio()에서 bio_split_to_limits() 호출을 강제합니다. 이를 통해 DM 타겟 드라이버는 영역화 DM 장치에 대한 쓰기 작업 시 dm_accept_partial_bio() 사용을 피할 수 있습니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Linux

예약하다

2025. 04. 16.

모더레이션

수락

항목

VDB-323791

EPSS

0.00156

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!