Ne oldu?
15 Temmuz 2026’da Trend Micro’nun Zero Day Initiative (ZDI) ekibi, 7-Zip’te bir açık duyurdu: CVE-2026-14266. Özel hazırlanmış bir XZ arşivini açtığında 7-Zip, bellekte ayırdığı alanın dışına yazıyor. Saldırgan bunu 7-Zip’in içinde kod çalıştırmak için kullanabiliyor. Açığı Lunbun LLC’den Landon Peng 5 Haziran’da bildirdi. Düzeltme 25 Haziran’da çıkan 7-Zip 26.02’de. Yani yama, ayrıntılar açıklanmadan üç hafta önce hazırdı. Bu, ZDI’nin yamasız açıkları herkese açık listeye gönderdiği Kara Ekim olayının tam tersi: Burada sıra doğru işledi.
Ciddiyet puanı ZDI’ye göre 10 üzerinden 7.0, NVD’ye göre 7.8. Başlıkta “uzaktan kod çalıştırma” yazıyor ama dosyayı senin açman gerekiyor. Çalışan kod da 7-Zip hangi yetkiyle açıldıysa o yetkiye sahip oluyor.
XZ ve filtreler
XZ bir sıkıştırma biçimi, içinde genelde LZMA2 algoritması var. Biçimin ilginç yanı filtre zinciri: Veri, asıl sıkıştırmadan önce en fazla dört filtreden geçebiliyor. Filtreler veriyi küçültmüyor, daha kolay sıkıştırılır hâle getiriyor. Örneğin BCJ (Branch/Call/Jump) filtreleri, programların makine kodundaki göreli atlama adreslerini mutlak adrese çeviriyor. Böylece aynı fonksiyona yapılan çağrılar aynı baytlara dönüşüyor ve sıkıştırıcı tekrarları yakalıyor. Delta filtresi de her baytı, belli bir mesafe gerideki baytla farkı olarak saklıyor. Arşivi açarken bu zincir tersten çalışıyor.
Hata ne?
7-Zip’te zinciri yürüten fonksiyon C/XzDec.c dosyasındaki MixCoder_Code. Açma sırasında elinde iki bilgi var: Çıktının yazılacağı yeri gösteren bir işaretçi (pointer) ve orada kaç bayt boş yer kaldığını tutan bir uzunluk. Her yazmadan sonra ikisi birlikte güncellenmeli: İşaretçi ilerlemeli, kalan uzunluk azalmalı. The Hacker News’in düzeltmeyi incelemesine göre zincirde filtre olduğunda kod, her turda kalan alanı değil, arabelleğin tam boyutunu kullanıyordu. Videodaki anlatımla: İşaretçi ilerliyor ama “buraya en fazla şu kadar yazabilirsin” değeri yerinde sayıyor. Sonraki kopyalama arabelleğin sonunu geçip heap’teki komşu verilerin üstüne yazıyor. Buna heap taşması deniyor. 26.02’deki düzeltme, yazılmış baytları kalan alandan düşüyor ve toplam sınırı aşarsa işlemi durduruyor.
Aynı hata ailesini Broadcom’un WPS açığında da gördük: C’de bellek sınırlarını programcı elle takip ediyor ve unutulan tek bir güncelleme yetiyor. Low Level, taşmayı tetikleyen bir dosyayla kendi derlediği 7-Zip’i çökertiyor ama tam bir saldırı göstermiyor.
Fuzzer’lar neden kaçırdı?
Fuzzing, programa milyonlarca bozuk girdi verip çöküp çökmediğine bakan bir test yöntemi. Google’ın OSS-Fuzz projesi kritik açık kaynak yazılımları sürekli böyle test ediyor ve listede bir LZMA projesi de var. Ama bu proje, ayrı bir depoda tutulan test kodunu (harness) kullanıyor ve o deponun son kod değişikliği Nisan 2024’ten. Üstelik videodaki örneğe göre hatayı tetiklemek için geçerli bir XZ yapısı, iki filtre ve neredeyse hiç sıkışmayan veri aynı anda gerekiyor. Ders şu: Bir projenin OSS-Fuzz’da olması, yeni kodunun test edildiği anlamına gelmiyor.
Bir de bakım yükü var. 7-Zip’i neredeyse tek başına Igor Pavlov geliştiriyor. Onlarca arşiv biçimini çözen büyük bir C/C++ kod tabanı için bu çok az göz demek.
XZ adı sana 2024’ü hatırlattıysa: O olay, Linux’taki ayrı bir proje olan XZ Utils’e bilerek eklenmiş bir arka kapıydı, bu hatayla ilgisi yok.
Ne yapmalısın?
- 7-Zip sürümüne Help > About menüsünden bak. 26.02’den eskiyse 7-zip.org’dan yenisini kur. 7-Zip kendini otomatik güncellemiyor.
- The Hacker News’e göre hatalı kod en az 21.07’den (2021) beri değişmeden duruyor, ama hangi sürümlerin gerçekten istismar edilebildiği açıklanmadı. NVD, 26.02’den önceki her sürümü etkilenmiş sayıyor.
- 7-Zip’in kodunu kendi içine gömen başka programlar ayrı yama gerektiriyor. 7-Zip’i güncellemek onları düzeltmiyor.
- Tanımadığın kaynaktan gelen arşivleri açmadan önce bir kez daha düşün.
Sonra ne oldu?
CVE kaydında CISA’nın 29 Temmuz’da eklediği değerlendirmeye göre o tarihte bilinen bir istismar yoktu. 3 Eylül’de çıkan 26.03, başka bir açığı kapattı (CVE-2026-58052): 7-Zip, özel hazırlanmış bir arşivden çıkardığı dosyalara Windows’un “bu dosya internetten geldi” işaretini (Mark-of-the-Web) aktarmıyordu. Bu işaret olmadan Windows, dosyayı açarken uyarı göstermeyebiliyor. 26.04 (5 Ekim) ve 26.05 (21 Ekim) de “bazı hata ve açıklar düzeltildi” notuyla geldi. Bugün en güncel sürüm 26.05.
Düşün
- Bilgisayarında 7-Zip’in ya da başka bir arşiv kütüphanesinin hangi programların içinde gizlice durduğunu biliyor musun?
- Kendi kodunda bir işaretçi ile uzunluğu ayrı ayrı mı taşıyorsun, yoksa ikisini birlikte tutan bir yapı mı kullanıyorsun?
Videoyu izle
Kaynaklar (11, İngilizce)
- Low Level: I dove down the 7z rabbit hole (video) (yeni sekmede açılır)
- Zero Day Initiative: ZDI-26-444, 7-Zip XZ Decompression Heap-based Buffer Overflow (yeni sekmede açılır)
- CVE.org: CVE-2026-14266 (yeni sekmede açılır)
- NVD: CVE-2026-14266 (yeni sekmede açılır)
- 7-Zip: Version history (history.txt) (yeni sekmede açılır)
- 7-Zip: Official site and downloads (yeni sekmede açılır)
- oss-security: ZDI-26-444 / CVE-2026-14266 (yeni sekmede açılır)
- The Hacker News: New 7-Zip vulnerability could let crafted XZ archives run code during extraction (yeni sekmede açılır)
- Tukaani: The .xz File Format specification (yeni sekmede açılır)
- OSS-Fuzz: lzma project configuration (yeni sekmede açılır)
- GitHub: fancycode/lzma-fuzz (Fuzzing for the LZMA SDK) (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.