Her Kontrolü Geçen Dosya
Dosya güvenliği iş akışları, nadiren sorgulanan bir varsayım üzerine kuruludur: Her dosyanın tek bir türü vardır. Algılayıcı dosyaya bir tür atar ve politika dosyayı bu türe göre yönlendirir. Ardından, iş akışının sonraki aşamalarındaki her bir motor dosyayı bu tür olarak analiz eder: kötü amaçlı yazılımdan koruma, sanal ortam ve temizleme.
Çok dilli dosyalar bu varsayımı çürütür. Tek bir bayt akışı, aynı anda hem tamamen geçerli bir GIF hem de tamamen geçerli bir Java arşivi olabilir. Aynı yöntem, aynı zamanda bir RAR arşivi olan bir JPEG dosyası veya mantıksal sonunun ötesinde tam bir ZIP dosyası barındıran bir PDF dosyası için de geçerlidir. Her bir parça tek başına standartlara uygundur; bu nedenle hiçbir format ayrıştırıcısı herhangi bir sorun tespit etmez.

Tek bir resimde çok dilli bir örnek: klasik GIF+JAR. İki ayrıştırıcı, iki giriş noktası, tek bir dosya ve her bir yüz tamamen geçerli.
Bunun güvenlik açısından sonucu nettir: boru hattı, dosyayı algıladığı tür olarak tarar ve diğer formatlar ise dokunulmadan geçer. Aynı zamanda bir komut dosyası olan bir görüntü, bir web uygulaması tarafından geri sunulduğunda depolanmış XSS’ye dönüşür. Bir görüntünün arkasına gizlenmiş bir arşiv, yükünü içerik filtrelerinden geçirebilir. Klasik GIF+JAR kombinasyonundan steganografi destekli istismar dağıtımına kadar, bu fikre dayanan saldırı zincirleri neredeyse yirmi yıldır kamuoyunun bilgisi dahilindedir. Her bir resim ayrı ayrı incelendiğinde zararsız olduğu için, kötü amaçlı yazılım önleme motorları bu tür saldırılara karşı büyük ölçüde kör kalmaktadır.
Motor İkinci Bir Yüzü Nasıl Bulur?
Dosya Yapısı Doğrulama motorumuz, herhangi bir format işleyiciden önce taranan her dosyada çalıştırılan bir ön işleme adımı olarak çoklu dil algılama özelliğini ekler. Bu tasarım üç temel ilkeye dayanmaktadır.
- Akışın tamamını tarayın. Tarayıcı, dosyanın tamamını bir format sihirli imzaları listesiyle karşılaştırır. Akışın herhangi bir yerinde kendini bildiren ikinci bir format, dosyanın türü zaten tespit edilmiş olsa bile tam ofsetiyle birlikte ortaya çıkarılır. Buna, bir PDF dosyasının dosya sonu işaretinden sonra eklenmiş veya bir görüntünün piksel verilerinin arkasına gizlenmiş imzalar da dahildir.
- Bir formatın yasal olarak nerede bittiğini bilin. Container formatları, yasal olarak içlerinde başka dosyalar barındırabilir. Bir ZIP dosyasının içindeki resim, sıradan bir içeriktir. Algılayıcı, her bir kapsayıcının gerçek sonunu, kapsayıcının kendi yapısından belirler. Bir PDF dosyasının son kısmı, bir ZIP dosyasının merkezi dizini ve bir OLE (Nesne Bağlama ve Gömme) bileşik dosyasının sektör tahsisi, bu sınırı belirler. PDF çözümlemesi, artımlı güncellemeleri de hesaba katar. Yalnızca bu yapının dışındaki imzalar ikinci bir sınır olarak kabul edilir. Bu yapısal sınır, gerçek bir çok dilli karar ile her sıradan arşivdeki yanlış alarmı birbirinden ayıran unsurdur.
- Suçlamadan önce doğrulayın. Motor, akıştan her bir aday yüzü ayırır ve raporlamadan önce bunları Dosya Türü motorumuzla bağımsız olarak yeniden tanımlar. Yapılandırılmamış veri olarak tanımlanan adaylar elenir. Bir sonuç, o ofset noktasında ikinci bir formatın gerçekten ayrıştırılabildiği anlamına gelir. Tek başına rastgele sihirli baytlar asla böyle bir sonuç vermez.

Gerçek bir örnekten alınmıştır: JPG ve PNG dosyalarını içeren bir PDF; mantıksal sonunun arkasına ise bir ZIP ve bir TIFF dosyası eklenmiştir. Sonuçta, ZIP ve TIFF dosyaları belirtilmiş, ancak gömülü resimler hakkında herhangi bir bilgi verilmemiştir.
Sonuç, her bir yüzü kendi ofsetiyle birlikte bildirir. Örneğin, tek bir .gif dosyasının yüklenmesi, ofset 0’da GIF89a olarak ve akışın daha derinlerinde bir ZIP arşivi olarak tanımlanır. Geri kalanı politika belirler: bulguyu bildirmek ya da dosyayı, eşleşmeleri listeleyen bir açıklama ile doğrudan engellemek.
Tespitten Diseksiyona
Tespit, çözümün sadece yarısıdır; çünkü Polyglot’un tüm püf noktası, her bir yüzün tek başına zararsız görünmesidir. Tespitin ardından motor, dosyayı ayrıntılı olarak inceler. Doğrulanmış her yüz, formatı, ofseti ve boyutu ile birlikte ayrı bir nesne olarak dışa aktarılır (polyglot_part_1.pdf, polyglot_part_2.zip vb.). Motor, her birini gerçekte ne olduğuna göre tam işleme tabi tutulması için MetaDefender Core™ iş akışına geri gönderir.
Bunu, çalışır durumdaki bir MetaDefender Core™ örneğinde uçtan uca doğruladık.
Motor, gizlice bir Word belgesini (PDF+JAR+DOCX çoklu format) barındıran bir PDF örneğini, PDF katmanına ve ZIP katmanına ayırdı. JAR ve DOCX’in her ikisi de ZIP kapsayıcıları olduğundan, tek bir ZIP katmanı her iki spesifikasyonu da karşılar. Dosya Türü motoru daha sonra bu katmanı bir DOCX olarak tanımladı ve Deep CDR™ Teknolojisi onu ayrı ayrı temizledi. Gizli katman, kaçınmak için oluşturulduğu işlemle aynı muameleye tabi tutulur.
Zor Olan Kısım Hassasiyettir
Sihirli baytlar masum dosyalarda doğal olarak ortaya çıkar; bu nedenle asıl mühendislik yatırımı, “kurt geliyor” diye boş yere alarm vermemektir. Kamera fotoğrafları, kendi JPEG imzalarını taşıyan EXIF küçük resimleri içerir. Office belgeleri ise kaplama yapılarının içine resimler yerleştirir. Media dosyaları, sıkıştırma başlıklarına benzeyen bayt dizilerini rastgele içerir. Algılama mantığı, meşru bir yapının zaten hesaba kattığı baytları hariç tutar ve bu güvenlik güçlendirme, format format sürekli olarak genişletilmektedir. Her kamera fotoğrafını işaretleyen bir algılayıcı devre dışı bırakılır ve devre dışı bırakılmış bir algılayıcı kimseyi korumaz.
Gerçek Çokdilli Kişiler Üzerinde Test Edildi
Gerçek çok dilli örnekleri, Dosya Yapısı Doğrulama motoru ile birlikte çalışan bir MetaDefender Core™ kurulumunda test ettik. Her biri tespit edildi ve her bir yüz, tam bayt ofsetiyle eşleştirildi:
Örnek | Bulunan yüzler (ofset) | Sonuç |
Bir Word belgesini PDF içinde gizleme (tek bir dosyada PDF+JAR+DOCX) | PDF @ 0 · ZIP @ 34.016 | Yüzler çıkarıldı; gizli DOCX dosyası Deep CDR™ Teknolojisi ile temizlendi |
Bir arşivi ve ikinci bir görüntüyü gizleyen GIF | GIF89a @ 0 · ZIP @ 25.214 · TIFF @ 154.270 | Algılandı |
PDF dosyasını gizleyen Office belgesi | OLE @ 0 · PDF @ 73.217 | Algılandı |
PDF dosyasını JPEG içinde gizleme | Üç yüz, PDF eki @ 26.830 | Algılandı |
“PoC‖GTFO” 3. sayısı, PDF+ZIP formatında çok dilli olarak hazırlanmış güvenlik araştırmaları dergisi, 26 MB | PDF @ 25 · ZIP @ 12.224.072 | Tespit edildi: Tam tarama sonucunda 12 MB derinlikte ikinci yüz bulundu |
Bir GZIP akışı ve bir Java arşivi içeren GIF | GIF89a @ 0 · GZIP @ 427.764 · ZIP @ 937.265 | Engellendi |
JPG ve PNG dosyalarını içeren, sonuna ZIP ve TIFF dosyaları eklenmiş bir PDF | PDF @ 0 · ZIP @ 204.849 · TIFF @ 257.395 | Engellendi; gömülü resimler doğru şekilde raporlanmadı |
Son satır, reddetme kuralının işleyişini göstermektedir: Karar, eklenmiş ZIP ve TIFF dosyalarını belirtmekte ve PDF içindeki görüntüleri göz ardı etmektedir. Konteyner çözümleyicisi, bunları PDF’nin kendi içeriği olarak değerlendirmiştir. MetaDefender Core™’un söz konusu dosya için verdiği sonuç JSON’u (kısaltılmış):

fsv_output_files listesi, yukarıda açıklanan kesit işleminin canlı halidir: üç yüz kesilerek çıkarılmış ve kendi nesneleri olarak iş akışına geri verilmiştir.
MetaDefender Core™’daki her bir örnek sonucun ekran görüntüleri aşağıda yer almaktadır:







Kapsam ve Yapılandırma
Günümüzde kapsama alanı, saldırganların fiilen bir araya getirdiği formatları içermektedir: PDF, ZIP, OLE bileşik dosyaları, PNG, GIF, JPEG, TIFF, RAR, GZIP ve 7z.
Yapısal konteyner sonu çözünürlüğü, konteyner biçimleri için geçerlidir. Bu özellik, “önce yapılandırma” ilkesiyle sunulur: algılama, engelleme ve tam dosya taraması, her biri birer ilke anahtarıdır; bu nedenle operatörler, her bir dağıtım için görünürlük ile uygulama arasında seçim yaparlar.
Alt Çizgi
İki geçerli yüz içeren bir dosya, ona tek bir tür atayan her türlü iş akışını atlatır; oysa tek tür algılama, çoğu tarama yığınının temelini oluşturur. Yapısal çok dilli algılama, her yüzü bulup her birinin çözümlenebilir olduğunu kanıtlayarak bu boşluğu doldurur. Böylece, herhangi bir uygulama yanlış yorumlayıcıyı seçmeden önce politika, dosyayı engelleyebilir.
Günümüzde yaygın saldırı formatlarında algılama desteği mevcuttur. Geri kalan arşiv formatları için konteyner sonu çözümleme özelliği yol haritasında yer almaktadır.
Dosya Yapısı Doğrulama özelliğinin, ortamınızda dolaşan dosya biçimlerini nasıl işlediğini görün.

