· kaynak dev.to (home feed)
CVE-2025-4517: Python tar çıkarma açığı, path filter'ları atlatarak dosya yazılmasına izin veriyor
Kritik bir Python tar çıkarma açığı, path filter kullanılsa bile arşivlerin hedef dizinin dışına dosya yazmasına imkân tanıyor. Bir dev.to rehberi, container'lar genelinde yamalanmış interpreter'ların nasıl doğrulanacağını anlatıyor.

dev.to'da yayımlanan bir yazı, CVE-2025-4517 kodlu, Python'ın tar çıkarma sürecindeki kritik bir rastgele dosya yazma (arbitrary-file-write) açığını inceliyor ve düzeltmeyi doğrulamanın, build sunucusundaki tek bir interpreter'ı kontrol etmekten fazlasını gerektirdiğini savunuyor.
Filter nasıl atlatılıyor
Yazıya göre çıkarma kontrolü, arşivdeki her üyenin hedefini os.path.realpath ile çözüyor. Yeterince uzun bir symlink zinciri, çözülen yolu platform sınırının ötesine taşıyabilir; bu noktada realpath hatalı bir yol döndürüyor. Filter, uygulama yol sınırını zorunlu kılmak için tasarlanan data veya tar çıkarma filter'larını zaten kullanıyor olsa bile, bu sayede aslında çıkarma dizininden kaçan bir üyeyi kabul edebiliyor.
Yazının açıkladığı gibi düzeltme, link hedeflerini normalize ediyor ve eksik yollara izin veren katı bir çözümleme moduna geçiyor. Bu çalışma, yazının kaynaklarında CPython issue 135034 olarak referans veriliyor.
Yamalanmış sürümler
Python projesi, yazıya göre altı dal genelinde yamalanmış build'ler yayımladı: 3.9.23, 3.10.18, 3.11.13, 3.12.11, 3.13.4 ve 3.14.0b1. Bunun pratik sonucu şu: Her deployment, güncel olduğu varsayılmak yerine, gerçekte çalıştırdığı dal ve artifact'e göre haritalanmalı.
Gerçekte çalışan şeyin doğrulanması
Yazının ana argümanı şu: Sunucudaki interpreter yamalanmış olsa bile, bir worker container hâlâ eski bir CPython build'i taşıyorsa bu hiçbir koruma sağlamaz. Önerilen envanter; base image'ları, sidecar'ları, job image'larını ve Python gömülü paketlenmiş uygulamaları kapsıyor ve her biri için image digest'i, dalı, yama sürümünü ve interpreter'ın kaynağını kaydediyor. Build sunucusundan yapılan bir paket metadata sorgusu, tek başına açıkça yetersiz kabul ediliyor.
Runtime'da yazar, container'ın içinden interpreter sürümünü yazdırmayı ve arşiv işinin gerçekte hangi kod yolunu kullandığını doğrulamayı öneriyor. Base image güncellendikten sonra türetilmiş image'lar yeniden build edilmeli. CPython'u vendor eden uygulamalar, sabitlenmiş kaynak kodundan, build attestasyonları korunarak yeniden derlenmeli.
Sınırlı曝光 verisi
Maruziyeti ölçmek için yazar ZoomEye'de app="Python" sorgusu yaptı ve 60.035 eşleşme aldı; buna karşılık CVE'ye özgü sorgu sıfır sonuç döndürdü. Yazı bu boşluktan ölçülü bir sonuç çıkarıyor: parmak izi kapsamı keşfe yardımcı olur, ancak saldırgan tarafından sağlanan arşivleri gerçekten ayrıştıran bir hizmet ile ilgisiz bir Python hizmetini ayırt edemez; dolayısıyla ham eşleşme sayıları gerçek risk hakkında pek bir şey söylemez.
Geçici azaltımlar
Yamalanmış runtime'lar her yerde dağıtılana kadar yazı; arşiv linklerinde ".." içerenleri reddetmeyi, çıkarmadan önce arşiv üyelerini incelemeyi ve worker süreçlerinin uygulama veya kimlik bilgisi yollarına yazmasını engellemeyi öneriyor.
Nihai doğrulama, hazırlanmış uzun linkli bir arşivin, izole bir ortamda dağıtılmış hizmete karşı test edilmesini içermeli. Yazı ayrıca bir doğrulama kaydının ne içermesi gerektiğini tanımlıyor: image digest, çalışan interpreter sürümü, çıkarma giriş noktası ve test sonucu. Kapanış noktası şu: Runtime kontrolü olmadan başarılı bir build, konuyu kapatmaz.
Neden önemli
Tar çıkarma uzun zamandan beri path-traversal hatalarının tekrarlayan bir kaynağı olmuştur ve bu açık, geliştiricilerin tam da bu tür riskleri kontrol altına almak için benimsediği data ve tar filter'larını atlatması nedeniyle dikkat çekicidir. Güvenilmeyen arşivleri açan herkes — upload işleyicileri, CI artifact pipeline'ları, paket mirror'ları — filter seçiminin yamalanmamış bir interpreter üzerinde onları güvende kıldığını varsayamaz.
Operasyonel ders en az o kadar önemli: Python runtime'ları aynı anda birçok yerde yaşar; base image'lardan sidecar'lara, vendor edilmiş build'lere kadar. Görebildiğiniz makineyi yamalamak, tüm filoyu yamalamakla aynı şey değildir ve tek güvenilir kontrol, işi gerçekte yapan container'ın içinde yapılandır.
- #python
- #security
- #cve
- #containers
- #packaging