7-Zip은 압축률이 높은 파일 아카이버입니다. 버전 26.00 및 이전에는 NTFS 압축 스트림 버퍼(GetCuSize Shift UB)의 과소 할당으로 인해 발생하는 힙 버퍼 오버플로 취약점이 포함되어 있어 잠재적으로 공격자가 임의 코드 실행 또는 응용 프로그램 충돌을 일으킬 수 있습니다. NTFS 처리기의 CInStream::GetCuSize()는 압축 단위 버퍼 크기를 (UInt32)1 << (BlockSizeLog + CompressionUnit)으로 계산하고 ClusterSizeLog >= 28 및 Compression을 사용하여 제작된 이미지를 계산합니다.
7-Zip은 압축률이 높은 파일 아카이버입니다. 버전 26.00 및 이전에는 NTFS 압축 스트림 버퍼(GetCuSize Shift UB)의 과소 할당으로 인해 발생하는 힙 버퍼 오버플로 취약점이 포함되어 있어 잠재적으로 공격자가 임의 코드 실행 또는 응용 프로그램 충돌을 일으킬 수 있습니다. NTFS 처리기의 CInStream::GetCuSize()는 압축 단위 버퍼 크기를 (UInt32)1 << (BlockSizeLog + CompressionUnit)으로 계산하고 ClusterSizeLog >= 28 및 CompressionUnit == 4로 제작된 이미지는 지수를 32로 구동합니다. 이는 정의되지 않은 동작이며 x86/x64에서 축소되므로 _inBuf가 1바이트로 할당됩니다. 그런 다음 ReadStream_FALSE는 최대 256MB의 공격자가 제어하는 데이터를 64KB 반복으로 해당 1바이트 버퍼에 기록하며, CInStream 개체는 _inBuf 뒤의 304바이트에만 위치하므로 해당 vtable 포인터가 덮어쓰여지고 다음으로 전달된 호출에서 vtable 하이재킹이 발생합니다. 32비트 빌드에서는 무조건 오버플로에 도달합니다. 64비트에서는 성공하려면 병렬 8GB _outBuf 할당이 필요하며, 그렇지 않으면 실패하여 서비스 거부가 발생합니다. NTFS 처리기는 스톡 7z.dll에서 기본적으로 활성화되어 있으며, 오프셋 3의 "NTFS"와 일치하는 서명 기반 폴백을 통해 추출 또는 테스트 중에 파일 확장자에 관계없이 제작된 이미지를 엽니다. 버전 26.01에서는 문제가 해결되었습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 88.00 |
| 악용 신호(PoC 존재) | ×1.20 |
| VPI | 100.00 |
VPI 공식 vpi-v1 기준