Linux 커널에서는 다음 취약점이 해결되었습니다. libceph: ceph_monmap_decode()에서 음수가 아닌 값에는 u32를 사용합니다. 이 패치는 부호를 변경하는 불필요한 암시적 변환을 수정합니다. ceph_monmap_decode()의 blob_len 및 num_mon입니다. 현재 blob_len 및 num_mon은 (서명된) int 변수입니다. 그들은 사용됩니다 항상 음수가 아닌 값을 보유하고 할당됩니다. ceph_decode_32_safe()는 u32 값을 할당하기 위한 것입니다. 둘 다 변수는 이후에 unsign으로 사용됩니다.
Linux 커널에서는 다음 취약점이 해결되었습니다.
libceph: ceph_monmap_decode()에서 음수가 아닌 값에는 u32를 사용합니다.
이 패치는 부호를 변경하는 불필요한 암시적 변환을 수정합니다. ceph_monmap_decode()의 blob_len 및 num_mon입니다. 현재 blob_len 및 num_mon은 (서명된) int 변수입니다. 그들은 사용됩니다 항상 음수가 아닌 값을 보유하고 할당됩니다. ceph_decode_32_safe()는 u32 값을 할당하기 위한 것입니다. 둘 다 변수는 이후에 부호 없는 값으로 사용되며, num_mon은 u32 유형인 monmap->num_mon에 추가로 할당됩니다. 따라서 두 변수 모두 u32 유형이어야 합니다. 이는 특히 num_mon과 관련됩니다. 수신 메시지에서 읽은 값이 다음과 같은 경우 매우 크면 음수 값으로 해석됩니다. num_mon > CEPH_MAX_MON이 이를 포착하지 못합니다. 이는 다음과 같은 시도로 이어진다. monmap에 매우 큰 메모리 덩어리를 할당합니다. 실패하다. 이 경우 불필요한 메모리 할당 시도가 발생합니다. 수행되고 -EINVAL 대신 -ENOMEM이 반환됩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 75.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 75.00 |
VPI 공식 vpi-v1 기준