Benny Czarny’nin “Cybersecurity Upside Down” adlı kitabı hakkında daha fazla bilgi edinin

Daha Fazla Bilgi
Site çevirileri için yapay zeka kullanıyoruz ve doğruluk için çaba göstersek de her zaman %100 kesin olmayabilir. Anlayışınız için teşekkür ederiz.

Tek Dosya, Birçok Yüz: Çok Dilli Algılama Neden Önemlidir?

Çok dilli bir dosya, iki veya daha fazla farklı format olarak doğru şekilde çözümlenen tek bir dosyadır. Fotoğraf görüntüleyici bir görüntüyü okur. Java çalışma ortamı ise yürütülebilir bir arşivi okur. Bir dosyaya tam olarak tek bir tür atayan her tarayıcı, yapısal olarak ikinci yönü görmezden gelir.
Yazan OPSWAT
Bu Gönderiyi Paylaş

Yazarlar

  • Nhut Ngo | Software Mühendislik Direktörü, OPSWAT
  • Linh Ha | Software Mühendislik Müdürü, OPSWAT
  • Teddy Do | Kıdemli Software Mühendisi, OPSWAT

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:

Bir Word belgesini PDF içinde gizleme (tek bir dosyada PDF+JAR+DOCX)
Bir arşivi ve ikinci bir görüntüyü gizleyen GIF
PDF dosyasını gizleyen Office belgesi
PDF dosyasını JPEG içinde gizleme
“PoC‖GTFO” 3. sayısı, PDF+ZIP formatında çok dilli olarak hazırlanmış güvenlik araştırmaları dergisi, 26 MB
Bir GZIP akışı ve bir Java arşivi içeren GIF  
JPG ve PNG dosyalarını içeren, sonuna ZIP ve TIFF dosyaları eklenmiş bir PDF

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.

OPSWAT ile Güncel Kalın!

En son şirket güncellemelerini almak için bugün kaydolun, hikayeler, etkinlik bilgileri ve daha fazlası.