
NanaZip의 UFS 핸들러에서 공격자가 제어하는 `fs_bsize` 필드를 통한 무제한 메모리 할당.
| 필드 | 값 |
|---|
| CVE | CVE-2026-55781 |
| 권고 | GHSA-m34h-jf84-m74h |
| 벤더 | M2Team / NanaZip |
| 영향받는 버전 | NanaZip <= 6.5 Preview (6.5.1742.0) |
| 수정된 버전 | 6.5.1749.0 |
| 분류 | 서비스 거부 (CWE-789: 과도한 크기 값으로 인한 메모리 할당) |
| 플랫폼 | Windows |
| 작성자 | g17hubH4ck |
| 공개일 | 2026-07-17 |
NanaZip.Codecs.Archive.Ufs.cpp는 UFS 슈퍼블록을 읽고 fs_bsize를
하한(MINBSIZE)에 대해서만 검증합니다. 값이 할당 크기를 결정하는 데
사용되기 전에 상한은 적용되지 않습니다.
루트 아이노드(#2)가 간접 블록을 필요로 할 만큼 큰 di_size를 선언하면,
파서는 fs_bsize를 사용하여 각 간접 레벨마다 하나의 버퍼를 할당합니다.
fs_bsize = 0x40000000(1 GiB) 및 di_size = 0x10000000000(1 TiB)로
설정하면, 어떤 경계 검사도 실행되기 전에 세 번의 1 GiB 할당
(Ufs.cpp:435-437) — 대략 3 GiB의 연속 메모리 — 이 강제됩니다.
결과: 메모리 고갈 및 프로세스 종료. 코드 실행은 없습니다.
| 영역 | 오프셋 | 비고 |
|---|---|---|
루트 아이노드 #2 | 512 | ufs2_dinode, 256 바이트, di_mode = IFDIR, di_size = 1 TiB |
| UFS2 슈퍼블록 | 65536 (SBLOCK_UFS2) | struct fs, 리틀 엔디언, fs_bsize = 0x40000000 |
| 전체 크기 | 66912 바이트 | SBLOCK_UFS2 + sizeof(struct fs) |
주요 슈퍼블록 필드 (FreeBSD fs.h의 offsetof(struct fs, ...) 기준 오프셋):
| 오프셋 | 필드 | 값 |
|---|---|---|
+16 | fs_iblkno | 0 |
+44 | fs_ncg | 1 |
+48 | fs_bsize | 0x40000000 ← 악성 |
+52 | fs_fsize | 1 |
+56 | fs_frag | 1 |
+104 | fs_sbsize | 1376 |
+1000 | fs_sblockloc | 65536 |
+1372 | fs_magic | 0x19540119 (FS_UFS2_MAGIC) |
루트 아이노드 주소: GetInodeOffset(2) = fs_iblkno * fs_fsize + 2 * 256 = 512.
python3 poc.py poc.img
이 스크립트는 잘못된 이미지를 작성하고 다시 파싱하여 모든 필드가 취약한 파서가 예상하는 위치에 배치되었는지 확인합니다. 네트워크 접근, 하위 프로세스, 무기화된 페이로드는 없습니다 — 운반 파일 자체만으로는 무해합니다.
검증
생성된 이미지는 NanaZip 없이도 검사할 수 있습니다:
xxd -s 65536 -l 64 poc.img # superblock header
xxd -s 512 -l 32 poc.img # root inode header
충돌을 관찰하려면 Windows에서 취약한 빌드로 poc.img를 여십시오. 6.5.1749.0 이상은 입력을 올바르게 처리합니다.
참고: 이 PoC는 NanaZip.Codecs 파서의 정적 분석을 통해 작성되었습니다. 권고에 문서화된 정확한 취약한 라인에 도달하지만, 실행 중인 NanaZip 빌드에 대해 실행되지는 않았습니다.
완화 방안
· NanaZip >= 6.5.1749.0으로 업그레이드하십시오. · 업그레이드가 불가능한 경우, 신뢰할 수 없는 출처의 UFS 이미지를 열지 마십시오.
참고 자료
· NanaZip: https://github.com/M2Team/NanaZip · 권고: GHSA-m34h-jf84-m74h · CWE-789: https://cwe.mitre.org/data/definitions/789.html
면책 조항
이 자료는 방어적 연구 및 통제된 환경에서의 취약점 재현을 위해서만 제공됩니다. 소유하지 않았거나 명시적 테스트 허가를 받지 않은 시스템에 대해 사용하지 마십시오.