Bilişim tüketicileri olarak her zaman kolay olanı tercih etme eğilimindeyiz. Aldığımız bir cihazı kullanmak istediğimizde genelde kullanıcı el kitabını okumayı, ayrıntılı kurulum ayarlarıyla uğraşmayı, varsayılan değerleri değiştirmeyi hiç sevmeyiz. Sevmeyiz çünkü bunların bizim işimizi zorlaştırdığını düşünürüz. Bu noktada en sevdiğimiz ürün tipi UPnP cihazlardır, yani “evrensel tak kullan cihazlar”.
UPnP nedir?
UPnP, bilgisayar sistemlerinden baskı sistemlerine, ağ cihazlarından tüketici elektroniğine, akıllı ev sistemlerinden taşınabilir cihazlara ve IP kameralara kadar çok geniş yelpazede sistemlerin birbirleriyle iletişimini sağlayan ağ protokolleri kümesidir. Ağ protokolleri kümesidir çünkü UPnP; içerisinde IP, UDP, HTTP, SSDP, SOAP gibi farklı OSI katmanlarındaki protokolleri kullanır.
UPnP’nin en önemli özelliği üreticiden bağımsız bir şekilde, bağlandığı ortamdan dinamik olarak kolaylıkla IP alabilmesi, ağdaki diğer sistemlerle iletişime geçebilmesidir. Böylece siz yeni satın aldığınız bir ağ yazıcısını ağınıza bağladığınızda kolaylıkla IP alır, diğer cihazlar tarafından tanınır ve ağdaki diğer cihazları tanıyarak iletişime geçer.
Peki nasıl çalışır?
UPnP, farklı protokolleri birlikte kullanarak çalışır. Temelinde İnternet Protokol’ünü (IP) kullanan UPnP, iletim katmanında User Datagram Protokol (UDP) kullanır. UDP 1900 portu üzerinden diğer cihazlarla iletişime geçer. Ağdaki diğer cihazları bulmak için Simple Service Discovery Protokol’ünü (SSDP) kullanır. UDP üzerinden gönderdiği HTTP paketini 239:255.255.250 multicast adresine göndererek karşı taraftan cevap bekler.
Karşı tarafta bu isteğe 200 OK olarak cevap döner ve döndüğü HTTP paketinin içerisinde kendisine ait UUID, üretici bilgileri, ilgili web servis tanımlarının olduğu XML yolu gibi bilgiler bulunur.
Yukarıdaki örnekte, 78.173.202.214 IP’li uç sistemle ilgili şu bilgilere erişebildik;
1.) UPnP’nin etkin olduğunu
2.) Cihazın bir AirTies cihaz olduğunu
3.) Miniupnpd servisinin çalıştığını
4.) Web servis tanımının http://192.168.2.1:5555/rootDesc.xml yolunda olduğu gördük.
Burada web servislerine bakarak hangi parametrelerin gönderilmesi gerektiğini ve nasıl cevap alacağımızı görebiliriz. Tabi bize dönen cevapta ilgili modemin iç IP’si bulunduğu için biz bu servise http://78.173.202.214:5555/rootDesc.xml adresinden ulaşıyoruz;
Tehlike bunun neresinde?
İlk bakışta hayatımızı çok kolaylaştırdığını düşündüğümüz –ki gerçekten de öyle- bu cihazlar büyük risk altında. UPnP özelliği barındıran cihazların çok büyük kısmında uzaktan komut çalıştırma (remote code execution) zafiyeti bulunmaktadır. Bu zafiyet istismar edilerek, hedef sisteme gönderilen UDP paketlerindeki belli parametrelere belli değerler atanarak, hedef sistemde önbellek taşmasına (buffer overflow) neden olmaktadır. Bellek taşması sağlandıktan sonra, belleğe istenen kod parçası yüklenerek hedef sistem ele geçirilmektedir.
Bununla ilgili Intel Portable SDK (libupnp) üzerinde 8, Mini UPnP üzerinde ise 2 adet zafiyetin varlığı bilinmektedir. Bu zafiyetlere ilişkin CVE (Common Vulnerabilities and Exposures) numaraları aşağıdaki gibidir;
1.) CVE-2012-5958
2.) CVE-2012-5959
3.) CVE-2012-5960
4.) CVE-2012-5961
5.) CVE-2012-5962
6.) CVE-2012-5963
7.) CVE-2012-5964
8.) CVE-2012-5965
9.) CVE-2013-0229
10.) CVE-2013-0230
Hali hazırda CVE-2012-5958 için Metasploit üzerinde exploit modülü bulunmaktadır. Bu exploit (istismar kodu) kullanılarak, hedef sistemden reverse shell alınabilmektedir. Sistemden reverse shell alınması demek, sistemin sizin emrinize amade olması anlamına gelecektir.
Peki şu ana kadar bahsettiklerimiz bizim için ne anlam ifade etmeli?
Burada bahsettiğimiz UPnP modüllerinin, çok yaygın şekilde kullanılan modem üreticileri tarafından kullanıldığını, Cisco’nun bazı telepresence sistemlerinde bu zafiyetin bulunduğunun tespit edilmesi ve daha pek çok üründe bu modüllerin kullanıldığını düşünürsek olayın vehameti konusunda fikir sahibi olabiliriz.
Cisco’nun konuyla ilgili Security Advisory sayfasına aşağıdaki bağlantıdan ulaşıbilir.
http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20130129-upnp
Nexpose’un üreticisi Rapid7’ın yaptığı son araştırma riskin ne kadar büyük olduğunu anlamamız açısından çok faydalı olacaktır. 1 Haziran – 17 Kasım 2012 tarihleri arasında Rapid7’ın yaptığı araştırmadan çıkan sonuçlara göre;
1.) IPv4 bloğunun tamamına (tabi sadece route edilenler) yapılan isteklerde 81 milyon tekil IP’de UPnP özelliğinin devrede olduğu görülmüştür.
1.) 17 milyondan fazlası SOAP servis isteklerine cevap vermiştir.
3.) 1500’den fazla üreticinin 6900’den fazla ürününde bu güvenlik açıklarından birine rastlanmıştır.
4.) Uzaktan komut çalıştırma (remote code execution) açığına sahip cihaz sayısı ise 23 milyondan fazla çıkmıştır.
Biz tehlike altında mıyız?
Bahsi geçen UPnP zafiyetine sahip bir cihazımızın olup olmadığını anlayabilmemiz için Rapid7’ın ücretsiz olarak sunduğu ScanNow ürününü kullanabiliriz. Bunun için ilgili uygulamayı çevrimiçi kullanarak doğrudan router/modem’imizi taratabileceğimiz gibi, uygulamayı indirip belli IP aralığını da taratabiliriz.
Uygulamayı sistemimize indirdikten sonra tek yapmamız gereken yerel ağda kullandığımız IP aralığını girmek ya da doğrudan router/modem’imizin IPsini başlangıç ve bitiş IP’si olarak tanımlayıp taramayı başlatmak.
Tarama sonucunda çıkan raporda, hangi IPlerimizde bu zafiyetin olduğunu görebilmekteyiz;
Tarama sonucundan da görüldüğü üzere 10.0.0.1 IP’li cihazımızda (bu IP burada modem IP’miz) zafiyet bulunduğunu tespit ettik.
Zafiyeti nasıl gideririz?
Sistemimizde zafiyet bulunduysa, bu zafiyeti gidermenin 2 yolu olabilir. Birincisi; varsa sistemimize ilgili yama/güncelleme geçişi yapmak. İkincisi; daha kesin olanı, UPnP’yi devre dışı bırakmak olacaktır. Cisco’nun resmi sitesinde verdiği alternatif çözüm de doğrudan bunu tavsiye etmektedir. Bunun dışında UDP 1900’ü engelleme de çözüm olarak uygulanabilir.
Biz burada örnek olması açısından, zafiyet tespit ettiğimiz AirTies marka modemimizin UPnP özelliğini nasıl devre dışı bırakabileceğimizi göstereceğiz.
Modemimizin arayüzüne girdiğimizde, soldaki ana menüde UPnP sekmesi görülmektedir.
Burada “UPNP Devre Dışı” seçeneği işaretlenerek kaydedildiğinde UPNP modülü kapatılacaktır. Bu işlemi yaptıktan sonra yine ScanNow ile tarama yaparak, yaptığımız işlemin etkili olup olmadığını görebiliriz;
Tarama sonucundan da görülüyor ki, ilgili zafiyet UPnP devre dışı bırakılarak giderilmiştir.
Kolay Gelsin.