Linux 커널에서는 다음 취약점이 해결되었습니다. ext4: 잔여 데이터로 인한 무한 루프 방지 mkdir/mknod 경로에서 논리 블록을 물리 블록으로 매핑할 때, 범위 트리에 새 범위를 삽입하는 데 실패하는 경우(이 예에서는 파일 시스템이 표시할 때 대용량 파일 기능을 비활성화했기 때문입니다. inode가 더러워짐), ext4_ext_map_blocks()는 ext4_free_blocks()만 호출하여 해당 데이터를 삭제하지 않고 물리적 블록을 회수합니다. 범위 트리. 이것
Linux 커널에서는 다음 취약점이 해결되었습니다.
ext4: 잔여 데이터로 인한 무한 루프 방지
mkdir/mknod 경로에서 논리 블록을 물리 블록으로 매핑할 때, 범위 트리에 새 범위를 삽입하는 데 실패하는 경우(이 예에서는 파일 시스템이 표시할 때 대용량 파일 기능을 비활성화했기 때문입니다. inode가 더러워짐), ext4_ext_map_blocks()는 ext4_free_blocks()만 호출하여 해당 데이터를 삭제하지 않고 물리적 블록을 회수합니다. 범위 트리. 이로 인해 후속 mkdir 작업이 참조됩니다. 이전에 회수된 물리적 블록 번호를 다시 xattr 블록에서 물리적 블록을 이미 사용하고 있습니다. 그러므로 디렉토리와 xattr이 모두 동일한 것을 사용하는 상황이 발생합니다. 동시에 메모리에 버퍼 헤드 블록이 생성됩니다.
위의 내용으로 인해 ext4_xattr_block_set()이 무한 루프에 들어갑니다. "삽입"되어 inode 잠금을 해제할 수 없어 궁극적으로 [1]에 언급된 143s 차단 문제.
메타데이터가 손상된 경우 어느 정도 공간을 제거하려고 합니다. 더욱 해를 끼칠 수 있습니다. 또한 EXT4_GET_BLOCKS_DELALLOC_RESERVE의 경우 전달되었습니다. 공간을 제거하면 할당량 정보가 잘못 업데이트됩니다. Jan Kara는 두 가지 경우를 구별할 것을 제안합니다.
오류는 ENOSPC 또는 EDQUOT입니다. 이 경우 파일 시스템이 완전히 일관성이 있으며 우리는 모든 사항을 포함하여 일관성을 유지해야 합니다. 회계. 그러나 이러한 오류는 우리가 범위 트리에 범위를 삽입했습니다. 따라서 현재 코드가 올바르게 작동합니다. 이 경우.
기타 오류 - 이는 메타데이터가 손상되었음을 의미합니다. 우리는 노력해야 한다 손상을 제한하려면 가능한 한 적은 수정을 하십시오. 그래서 그냥 건너뛰겠습니다 할당된 블록을 해제합니다.
[1] 정보: 작업 syz.0.17:5995가 143초 이상 차단되었습니다. 통화 추적: inode_lock_nested include/linux/fs.h:1073 [인라인] __start_dirop fs/namei.c:2923 [인라인] start_dirop fs/namei.c:2934 [인라인]
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 94.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 94.00 |
VPI 공식 vpi-v1 기준