PDF dosyası kullanmayan bir şirket veya devlet ajansı yoktur. Genellikle de bu tür belgelerin orijinal hallerinin bozulmamasını sağlamak için dijital imzalar kullanırlar. İmzalı dosyayı herhangi bir PDF görüntüleyicisinde açtığınızda program, belgenin kimin tarafından imzalandığını belirten bir bayrak görüntüler ve imza doğrulama menüsüne erişmenizi sağlar.
Çeşitli Alman üniversitelerinden bir araya gelen bir araştırma ekibi, bu PDF imzalarının sağlamlığını test etmek için yola çıktı. Ruhr-Universität Bochum’dan Vladislav Mladenov, Chaos İletişim Kongresi’nde (36С3) ekibin bulgularını paylaştı.
Araştırmacıların görevi basitti: İşlem sırasında imzayı geçersiz kılmadan imzalı bir PDF belgesinin içeriğini değiştireceklerdi. Teoride siber suçlular da yanlış bilgi vermek veya imzalı bir dosyaya kötü amaçlı içerik eklemek için aynı şeyi yapabilirdi. Ne de olsa bir bankadan imzalı bir belge alan müşterilerin bu belgeye güvenmesi ve içindeki herhangi bir bağlantıya tıklama olasılığı yüksekti.
Ekip, çeşitli platformlara yönelik 22 popüler PDF görüntüleyicisi seçerek sistematik olarak deneylerinin sonuçlarını girdi.
PDF dosya yapısı
İlk olarak , PDF formatını birkaç cümleyle açıklayalım. Her dosya dört ana bölümden oluşur: PDF sürümünü gösteren başlık; kullanıcının gördüğü ana içeriği gösteren gövde; Xref bölümü, gövde içindeki nesneleri ve konumlarını listeleyen bir dizin (içeriği görüntülemek için); PDF görüntüleyicilerin belgeyi okumaya başladığı artbilgi. Artbilgi, programın dosyayı nereden işlemeye başlayacağını ve Xref bölümünün nerede başladığını bildiren iki önemli parametre içerir.
Biçime entegre, kullanıcının örneğin metnin bir bölümünü vurgulamasına ve yorum bırakmasına izin veren artımlı bir güncelleme işlevidir. Teknik açıdan bakıldığında bu işlev; gövde için güncellemeler, yeni bir Xref dizini ve yeni bir artbilgi olmak üzere üç bölüm daha ekler. Bu da nesnelerin kullanıcı tarafından nasıl görüldüğünü değiştirmeyi ve yeni içerik eklemeyi etkili bir şekilde mümkün kılar. Özünde, dijital imza da dosyaya başka bir öğe ve bu öğeyle ilgili bölümler ekleyen artımlı bir güncellemedir.
Artımlı kayıt saldırısı (ISA)
İlk olarak ekip, bir metin düzenleyicisi kullanarak başka bir artımlı güncelleme ile dosyaya ek bölümler eklemeye çalıştı. Açıkçası, bu bir saldırı değildi: Ekip sadece formatın yaratıcıları tarafından uygulanan bir işlevi kullandı. Kullanıcı bu şekilde değiştirilmiş bir dosyayı açtığında, PDF okuyucu genellikle dijital imzanın geçerli olduğunu ancak belgenin değiştirildiğini belirten bir mesaj görüntüler. Bu, özellikle de deneyimsiz bir kullanıcı için, hiç de aydınlatıcı bir mesaj değil. Daha da kötüsü, PDF görüntüleyicilerinden biri (LibreOffice) bu mesajı bile göstermedi.
Bir sonraki deney, iki son bölümün çıkarılmasını (yani, Xref ve artbilgiye değil, yalnızca gövdeye bir güncelleme eklenmesini) içeriyordu. Bazı uygulamalar böyle bir dosyayla çalışmayı reddetti. İki PDF görüntüleyici, bölümlerin eksik olduğunu gördü ve okuyucuya içerikteki bir değişiklik hakkında bildirimde bulunmadan bu bölümleri otomatik olarak ekledi. Diğer üçü ise dosyayı itiraz etmeden aldı.
Ardından araştırmacılar, dijital imzayı kendi “manuel” güncellemelerine kopyalarlarsa ne olacağını merak ettiler. Foxit ve MasterPDF olmak üzere iki görüntüleyici daha tuzağa düştü.
Toplamda 22 PDF görüntüleyiciden 11’inin bu basit manipülasyonlara karşı savunmasız olduğu kanıtlandı. Dahası, bunların altısı, görüntülemek üzere açılan belgenin değiştirildiğine dair hiçbir bildirim göstermedi. Diğer beş örnekte ise herhangi bir manipülasyon belirtisini ortaya çıkarmak için dosyayı açmak yeterli olmadı; kullanıcının menüye girerek dijital imzanın geçerliliğini manuel olarak kontrol etmesi gerekti.
İmza kaydırma saldırısı (SWA)
Bir belgenin imzalanması, gövdeye artımlı güncelleme olarak iki önemli alan ekler: İmzayı içeren /Contents ve tam olarak neyin imzalandığını açıklayan /ByteRange. Dijital imza, PDF belgesinin kodundan kriptografik yollarla üretilen bir karakter dizisi olduğu için, eklenen ikinci alanda dosyanın başlangıcını, imza kodundan önceki bayt sayısını, imza kodunun nerede biteceğini ve imzadan sonraki bayt sayısını tanımlayan dört parametre bulunur. Doğal olarak imza kendini imzalayamaz, bu nedenle depolandığı alan imza hesaplama işleminden hariç tutulur.
Araştırmacılar imzanın hemen ardından başka bir /ByteRange alanı eklemeye çalıştı. İlk iki değer değiştirilmeden bırakıldı, yalnızca imza kodunun sonunun adresi değiştirildi. Sonuçta, dosyada kötü amaçlı nesnelerin eklenmesine izin veren ek bir alanın yanı sıra bunları açıklayan bir Xref bölümü ortaya çıktı. Teorik olarak, eğer dosya doğru okunmuş olsaydı, PDF görüntüleyici bu bölüme kadar ulaşamazdı. Ancak, 22 uygulamanın 17’si böyle bir saldırıya karşı savunmasız kaldı.
Evrensel imza sahteciliği (USF)
İyi bir ölçüm için araştırma ekibi, alan değerlerinin yanlış olanlarla değiştirilmeye veya basitçe silinmeye çalışıldığı standart bir pentesting hilesine karşı uygulamaları stres testine tabi tutmaya karar verdi. /Contents bölümü denenirken, gerçek imza 0x00 değeriyle değiştirildiğinde iki görüntüleyicinin hala imzayı doğruladığı ortaya çıktı.
Peki ya imza yerinde bırakılırsa, ancak /ByteRange bölümü (yani tam olarak neyin imzalandığı hakkındaki bilgi) silinirse? Ya da gerçek değerler yerine null yerleştirilirse? Her iki durumda da görüntüleyicilerin bazıları bu tür imzaları doğruladı.
Toplamda 22 programdan 4’ünün kötüye kullanılabilecek uygulama hataları içerdiği bulundu.
Özet sonuç tablosu, 22 PDF görüntüleyiciden en az 21’inin aldatılabileceğini gösteriyor. Yani, bunlardan biri hariç geri kalan hepsiyle, kullanıcıya doğrulanmış görünen kötü amaçlı içerikler veya yanlış bilgiler içeren bir PDF dosyası oluşturmak mümkün.
İlginçtir ki araştırmacıların tuzaklarının hiçbirine düşmeyen tek uygulama Adobe Reader 9 oldu. Tek sorun, Adobe Reader 9’un bir RCE güvenlik açığına duyarlı olması ve Linux kullanıcılarına yönelik mevcut son sürüm olduğundan dolayı yalnızca Linux kullanıcıları tarafından kullanılması.
Pratik sonuçlar
Tüm bunlardan ne tür pratik sonuçlar çıkarabiliriz? İlk olarak, hiç kimse PDF dijital imzalarına körü körüne güvenmemeli. Bir yerde yeşil bir onay işareti görmeniz, bu imzanın geçerli olduğu anlamına gelmiyor.
İkincisi, imzalı bir belge bile risk oluşturabilir. Bu nedenle, çevrimiçi alınan herhangi bir dosyayı açmadan veya içindeki herhangi bir bağlantıyı tıklamadan önce bilgisayarınızda güvenilir bir güvenlik çözümü yüklü olduğundan emin olun.