Aşağıdaki resme ve üzerinde bulunduğunuz cihaza iyi bakın.
Şimdi bir Apple cihazında tekrar görüntüleyin. Tersine, bir Apple cihazı kullanıyorsanız, bu sayfayı bir Android veya Windows cihazında görüntüleyin.
‘Farklı düşün,’ farklı gör
Bir Apple cihazı kullanıyorsanız ve bu sayfayı Safari’de görüntülüyorsanız, görüntünün, örneğin Chrome’da veya Windows’taki bir görüntüleme uygulamasında gördüğünüzden oldukça farklı görünmesi ihtimali vardır.
Tersine mühendis ve kriptograf David Buchanan son eseriyle hepimizi şaşırtmış olabilir:
Yukarıdaki PNG’de çoğu kullanıcı için ‘HELLO WORLD’ yazıyor – Apple yapımı yazılımda ‘HELLO APPLE’ ifadesini görenler hariç.
Ama inan bize, aynı görüntü a.png, Apple ve Apple dışı uygulamalar tarafından farklı yorumlanır.
BleepingComputer tarafından macOS Big Sur 11.6 üzerinde yapılan testlerde, Chrome web tarayıcısının en son sürümü (96.0.4664.110 (x86_64)) görüntüdeki metni ‘HELLO WORLD’ olarak işledi. Ancak, bu sayfayı Safari’de veya yalnızca Mac’in ‘Önizleme’ uygulamasında görüntülendiğinde ‘HELLO APPLE’ görüntülenir.
Ancak, BleepingComputer tarafından bir iPhone’da yapılan başka bir testte, hem iOS hem de Safari için Chrome web tarayıcısında ‘HELLO WORLD’ değil ‘HELLO APPLE’ ifadesi görüldü.
İşte sizi biraz daha şaşırtacak bir şey daha: Aşağıda bir IBM veya Mac görüyor musunuz? Bu sayfayı bir kez daha Apple ve Apple olmayan bir cihazla görüntüleyin:
Bu neden oluyor?
Buchanan, web sitesinde kısaca açıklar yazılım uygulamaları arasında belirsizliğe neden olan ‘paralel çözülebilir PNG’lerin nedeni ve kavramı.
Bir görüntü oluşturucunun uygulamasına bağlı olarak, aynı PNG oldukça farklı yorumlanabilir.
“Bunu çok iş parçacıklı PNG kod çözücümü yazarken buldum. Tasarımımı düşünürken, istismar edilebilir bir uygulama hatası,” yazıyor mühendis.
“Apple’ın kendi uygulamalarına sahip olduğunu öğrendikten sonra paralel kod çözülebilir PNG’ler, onların da aynı hatayı yaptıklarını anladım!”
Buchanan, aşağıdaki durumlarda bir PNG dosyası oluşturmanın mümkün olduğunu keşfetti:
aç(a + b) != aç(a) + aç(b)
“Eğer bu olabilir a sıkıştırılmamış bir bloğun ortasında biter. Bu nedenle, bir görüntünün, paralel veya paralel olmayan bir kod çözücünün onu çözüp çözmediğine bağlı olarak, iki olası yoruma sahip olması mümkündür,” diye açıklıyor Buchanan.
“Bu, kod çözücü tarafından, her bir parçada işlenmemiş veri olup olmadığını kontrol ederek hafifletilebilir. zlib aktarım. Benim uygulamam şu anda bunu yapmıyor!”
Bu ‘hata’ ile elde edilebilecek olasılıkların zirvesini göstermek için Buchanan, kavram kanıtı (PoC) kodunu paylaştı:
84 satırlı PoC, bazı görüntü oluşturma kitaplıklarının bir görüntünün alternatif sürümünü (‘GİZLİ MESAJ’ içeren) göstermek için nasıl kandırılabileceğini gösterir.
Aslında, tersine mühendis, ‘adlı kullanışlı bir araç yayınladı.Belirsiz PNG Paketleyici‘ hemen herkesin Apple yazılımında tamamen farklı görünen PNG görüntüleri oluşturmasını sağlayan GitHub’da.
Bu yılın Mart ayında Buchanan, Twitter görüntülerinin nasıl kötüye kullanılabileceğini de göstermişti. 3 MB büyüklüğündeki ZIP ve MP3 dosyalarını gizle içinde.
Şimdi, bu paralel kod çözme işinin sonucu, yalnızca doğru şekilde oluşturulamayan hatalı veya bozuk bir görüntü olsaydı, bunu bir ‘hata’ olarak sınıflandırmak daha kolay olurdu.
Ancak merak ediyoruz, bu bazı bağlamlarda bir güvenlik riski veya kötü niyetli aktörlerin kötüye kullanması için bir saldırı vektörü olabilir mi? İki varlık tarafından farklı görülen aynı dosya, soruna yol açmaya mahkumdur.