Posted on November 16th, 2015
fonthack

5-6 Kasım 2015 tarihinde SignalSEC Research ekibi olarak Güney Kore‘de bu yıl 10.su düzenlenen POC2015 hacker konferansına katıldık. Bu konferansta bizim de Breaking Font Parsers isimli bir sunumumuz mevcuttu. (Sunum dosyaları:http://github.com/signalsec/kirlangic-ttf-fuzzer )

Sunumda, TTF font formatı yapısını ve bu dosya formatına uygun akıllı bir fuzzing aracını nasıl geliştirdiğimizi anlattık. Çünkü TTF dosyalarını fuzz edecekseniz , “dumb fuzzing” gibi bir seçeneğimiz malesef yoktu. Dosya formatı içinde bulunan tablo checksum değerleri gibi doğrulama mekanizmaları buna engel olmaktaydı. Sunumun sonunda ise geliştirdiğimiz fuzzer ile keşfettiğimiz güvenlik açıklarını gösterdik.

Örneğin keşfettiğimiz zero-day açıklardan biri Microsoft Office Word’ü etkiliyordu. 10 Kasım’da Microsoft’un yayınladığı patchler ile kapatıldı. Biz testlerimizi Office 2013 üzerinden yapmıştık ve zafiyeti bildirdiğimizde sadece Office 2013’ü etkilediğini biliyorduk. Ancak Microsoft’un yayınladığı bültende okuduğumuza göre, Office 2007/2010/2013/2016 sürümlerini , SharePoint Server 2010/2013 ‘ ü ve Office Web Apps Server ürünlerinin hepsini etkileyen bir Remote Code Execution zafiyetiymiş meğer. (CVE-2015-6093)

Zafiyet TTF dosya formatındaki “name” tablolarının Office Word tarafından yorumlanması esnasında oluşuyor.  Name tablosu ,  font dosyası hakkında multilingual  stringler tutmak için kullanılıyor. Bu stringler, Font dosyasının ismi, dili, copyright bilgileri vs. olabiliyor. Genel itibariyle bir name tablosu aşağı ana yapıdan oluşur;

name1

NameRecord elementi de aşağıda gösterildiği gibi bir yapıdadır;

namrecords

Keşfettiğimiz zafiyet NameID si 16 olan NameRecord ile ilişkiliydi. NameID 16 , Typographic Family name ismini belirtmek için kullanılmakta. Bu NameRecord’ın length alanında tutulan size değeri büyük bir değer olarak tanımlandığında, Word ilgili hafıza alanına çok fazla data kopyalayarak bir heap overflow zafiyetine neden olmaktaydı. Aşağıda zafiyeti tetiklemek için değiştirilen NameRecord – length değeri görülebilir;

fff

Zafiyet keşfettiğimiz süreden itibaren 3,5 ay boyunca zero-day olarak kaldı. Microsoft Office, Adobe Reader, Adobe Flash ve çeşitli client-side uygulamalar bu tarz bilinen ve bilinmeyen bir çok güvenlik açığı barındırmaktadır. Bildiğiniz üzere client-side zero-day güvenlik açıkları son zamanlarda hedef odaklı gelişmiş siber saldırıların ilk giriş noktasını oluşturmaktadır.

Zafiyet araştırma ve exploit geliştirme alanında uzun yıllardır edindiğimiz tecrübelerle geliştirdiğimiz Zero-Day ataklara karşı CPU tabanlı bir çözüm olan TRAPMINE hakkında bilgi almak için http://www.trapmine.com adresini ziyaret edebilir ya da bizimle demo/poc için iletişime geçebilirsiniz.

Bekir KARUL, Celil Ünüver

SIGNALSEC Ltd.