# UPnP
UPnP, Universal Plug&Play'in kısaltması. Günümüzde var olan birçok aygıt ve program, Evrensel Tak ve Çalıştır (UPnP) protokolünü desteklemektedir. UPnP protokolü, Windows masaüstü makinelerinde bulunan tak ve çalıştır konseptini yerel ağa getirmek için 1999'un başlarında Microsoft tarafından ortaya atıldı.
UPnP'nin ardındaki fikir, bir kullanıcının bir aygıtı yerel ağa bağlamasını sağlamaktır ve aygıt ister yazıcı, tarayıcı, dosya sunucusu veya güvenlik duvarı olsun, basitçe çalışacaktır. Tüm yapılandırma kullanıcı için gizlidir ve bunun yerine aygıtlar ve programların kendileri tarafından otomatik olarak yapılır.
UPnP'nin ilk uygulamaları 2000 yılının ortalarında piyasaya sürüldü, Windows ME ve Intel'in Linux için açık kaynaklı UPnP SDK'sı ilk oldu. Windows XP ayrıca 2001 yılında piyasaya sürüldüğünden beri yerleşik UPnP desteğine sahiptir. Şu anda Windows, VxWorks, Linux ve FreeBSD gibi çeşitli işletim sistemleri için uygulamalar mevcuttur. UPnP protokol yığını, HTTP, XML ve SOAP gibi iyi tanımlanmış İnternet standartlarını kullanır.


## UPnP’nin Kullanımı.
UPnP ağında aşağıdaki işlemler sırasıyla gerçekleştirilir:
  - Adresleme
  - Cihaz Bulma
  - Cihaz Özelliklerini Öğrenme
  - Denetim
  - Bilgilendirme
  - Sunum


### Adresleme.
UPnP Ağı üzerindeki her cihaz kendisine otomatik IP adresi atayacak bir DHCP sunucusu arar. Bunu bulması halinde uygun IP adresini alıp ağa dâhil olur. Ağ üzerinde IP numarası sağlayacak herhangi bir DHCP sunucusu bulunmaması halinde ise cihaz kendine uygun olan otomatik bir IP adresi atar.


### Cihaz Bulma.
UPnP ağı üzerinde bir ağın bulunması işlemi cihazın ağa bağlanması ile başlar. SSDP olarak tanımlanan protokole göre cihaz ağa bağlandığı anda üzerinde barındırdığı hizmetlerin bilgisini ağdaki denetleme birimlerine yayınlamaya başlar. Aynı zamanda ağa bir denetleme birimi bağlandığı anda SSDP, denetleme biriminin ağda kendisiyle ilgili cihazları aramasına olanak sağlar. SSDP protokolü her iki yönlü durum için birkaç cümlelik arama ve tanımlama bilgisi adresi mesajını kullanır.


### Cihaz Özelliklerini Öğrenme.
Cihazın bulunmasının ardından denetim birimi hâlâ cihaz hakkında çok az bilgiye sahiptir. Ancak cihazın bulunduğu anda kendisine gelen yanıtın içinde cihazın tanımlama bilgisine ulaşılabilecek XML belgesinin adresi bulunmaktadır. Denetim birimi bu adresten ilgili belgeyi alarak cihazın özelliklerini öğrenir. Bu XML belgesi içinde cihazın üreticisi, markası, modeli, seri numarası, üretici internet siteleri gibi bilgiler verilir. Aynı zamanda cihaz üzerindeki tüm hizmetlerin listesi, denetim, olay ve sunum adresleri de bu belge de yer alır.


### Denetim.
Cihaz özelliklerinin öğrenildiği esnada denetleme birimi denetleyebileceği hizmetlerin bilgisi alır ancak bu hizmetlerin izlenme ve ayarlanma detaylarını öğrenmek için yine her hizmetle ilgili XML formatında hazırlanmış belgelere başvurur. Denetim birimi bir cihazı denetlemek için cihazın hizmetine bir istek gönderir. Bu işlem, cihaz tanımlama belgesinde tanımlanan denetim adresine bir denetim mesajı göndererek sağlanır. Burada kullanılan mesajlar da yine SOAP adı verilen protokolle XML formatında oluşturulmuş mesajlardır. Gelen denetim mesajlarına cevap olarak hizmetler durum veya hata mesajları döndürürler.


### Bilgilendirme.
Cihazlar üzerinde çalışan hizmetlerin durumlarını kayıtlı denetleme birimlerine periyodik olarak bildirirler. Bu bilgilendirme mesajları GENA adı verilen protokol ile yine XML formatında hazırlanan bir belge ile gerçekleştirilir. Ayrıca denetleme birimleri ağa ilk dâhil olduklarında özel bir bilgilendirme mesajı yayınlanır. Bu sayede bilgilenme için kayıt olan denetleme birimleri, hizmetlerin durum modelleri hakkında bilgi sahibi olurlar. Çoklu denetleme birimlerinin de beraber çalışabilmesi için olay bilgilendirme mesajları tüm kayıtlı denetim birimlerine iletilir.


### Sunum.
Bazı UPnP destekli cihazlar üzerlerinde bir internet sayfası barındırarak denetleme birimlerinin izleme ve ayarlama işlemlerini bu sayfa aracılığıyla yapmasına olanak sağlar. Böyle bir sayfadan yapılabilecek ayarlar sayfanın ve cihazın kabiliyetlerine bağlı olarak değişiklikler göstermektedir.
Yukarıda da değinildiği gibi UPnP'de bazı temel haberleşme protokollerinin yanı sıra kendi ihtiyaç duyduğu birkaç özel protokolü daha kullanır.


## AV Standartları.
UPnP AV mimarisi, UPnP'nin bir ses ve video uzantısıdır ve TV'ler, VCR'ler, CD/DVD oynatıcılar/müzik kutuları, set üstü kutuları, stereo sistemleri, MP3 oynatıcılar, hareketsiz görüntü kameraları, video kameralar, elektronik resim çerçeveleri (EPF'ler) ve kişisel bilgisayarlar gibi çeşitli chazları destekler. UPnP AV mimarisi, cihazların eğlence içeriği için MPEG2, MPEG4, JPEG, MP3, Windows Media Audio (WMA), bitmap'ler (BMP) ve NTSC, PAL veya ATSC formatları dahil olmak üzere farklı formatları desteklemesine olanak tanır. IEEE 1394, HTTP, RTP ve TCP/IP dahil olmak üzere çok sayıda aktarım protokolü desteklenir.
12 Temmuz 2006'da UPnP Forumu, yeni MediaServer (MS) sürüm 2.0 ve MediaRenderer (MR) sürüm 2.0 sınıfları ile UPnP Ses ve Video belirtimlerinin 2. sürümünün yayınlandığını duyurdu. Bu geliştirmeler, MediaServer ve MediaRenderer cihaz sınıflarına yetenekler eklenerek oluşturulur ve farklı üreticiler tarafından üretilen ürünler arasında daha yüksek bir birlikte çalışabilirlik düzeyi sağlar. Bu standartlara uyan ilk cihazlardan bazıları Philips tarafından Streamium markası altında pazarlandı.
2006'dan beri, UPnP ses ve video cihazı kontrol protokollerinin 3. ve 4. sürümleri yayınlanmaktadır. Mart 2013'te, güncellenmiş cihaz kontrol protokollerini içeren güncellenmiş bir UPnP AV mimarisi belirtimi yayınlandı.


## AV Bileşenleri.
### Medya Sunucusu.
Bir UPnP AV Medya Sunucusu, medya kitaplığı bilgilerini sağlayan ve medya verilerini (ses/video/resim/dosyalar gibi) ağdaki UPnP istemcilerine aktaran UPnP sunucusudur ("ana" cihaz). Fotoğraf, film, müzik gibi dijital ortamları depolayan ve bunları diğer cihazlarla paylaşan bir bilgisayar sistemi veya benzeri bir dijital cihazdır.
UPnP AV Medya Sunucuları, UPnP AV istemci cihazlarına, sunucunun medya içeriğini taramak için kontrol noktaları adı verilen bir hizmet sağlar ve medya sunucusundan oynatma için kontrol noktasına bir dosya göndermesini talep eder.
UPnP ortam sunucuları, çoğu işletim sistemi ve birçok donanım platformu için kullanılabilir. UPnP AV ortam sunucuları, yazılım tabanlı veya donanım tabanlı olarak kategorize edilebilir. Yazılım tabanlı UPnP AV medya sunucuları bir bilgisayarda çalıştırılabilir. Donanım tabanlı UPnP AV ortam sunucuları, herhangi bir NAS cihazında veya DVR gibi ortam sağlamak için herhangi bir özel donanımda çalışabilir. Mayıs 2008 itibarıyla, yazılım tabanlı UPnP AV ortam sunucuları donanım tabanlı sunuculardan daha fazlaydı.


### Diğer Bileşenler.
  - UPnP MediaServer ControlPoint - ağdaki UPnP sunucularını otomatik olarak algılayabilen ve bunlardan medya/veri dosyalarına göz atabilen UPnP istemcisidir (bir 'bağımlı' cihaz).
  - UPnP MediaRenderer DCP - içeriği işleyebilen (oynatabilen) bir 'bağımlı' cihazdır.
  - UPnP RenderingControl DCP - MediaRenderer ayarlarını kontrol edin  ses seviyesi, parlaklık, RGB, netlik ve daha fazlası.
  - UPnP Uzak Kullanıcı Arayüzü (RUI) istemcisi/sunucusu - ağ üzerinden UPnP istemcisi ile UPnP sunucusu arasında kontrol komutları gönderen/alan (kayıt, program, oynatma, duraklatma, durdurma vb. gibi) 
   - UPnP Uzak Kullanıcı Arabirimi için Web4CE (CEA 2014) - Bu standart, UPnP özellikli bir ev ağı cihazının, ev ağına bağlı diğer herhangi bir cihazda görüntülenecek bir web sayfası olarak arayüzünü (görüntüleme ve kontrol seçenekleri) sağlamasına izin verir. Bu, herhangi bir web tarayıcısı tabanlı iletişim yöntemi aracılığıyla bir ev ağı cihazının kontrol edilebileceği anlamına gelir.
  - QoS (hizmet kalitesi) - UPnP AV (Ses ve Video) ile kullanım için önemli (ancak zorunlu olmayan) bir hizmet işlevidir. QoS (hizmet kalitesi), farklı kullanıcılara veya veri akışlarına farklı öncelikler verebilen veya uygulama programından gelen istekler doğrultusunda bir veri akışına belirli bir performans düzeyi garanti edebilen kontrol mekanizmalarını ifade eder. UPnP AV çoğunlukla gerçek zamana yakın veya gerçek zamanlı ses/video verisi akış ortamı sağlamak için olduğundan, belirli bir süre içinde iletilmesi çok önemlidir, aksi takdirde akış kesintiye uğrar. QoS garantileri, örneğin internet gibi genel ağlar gibi ağ kapasitesi sınırlıysa özellikle önemlidir.
  - Uzaktan Erişim - aynı çok noktaya yayın etki alanında olmayan UPnP cihaz setlerini bağlamak için yöntemleri tanımlar.


## NAT Geçişi.
NAT geçişi için İnternet Ağ Geçidi Aygıt Protokolü (IGD Protokolü) adı verilen bir çözüm, UPnP aracılığıyla uygulanır. Birçok yönlendirici ve güvenlik duvarı kendilerini İnternet Ağ Geçidi Aygıtları olarak gösterir ve herhangi bir yerel UPnP kontrol noktasının, aygıtın harici IP adresini alma, mevcut bağlantı noktası eşlemelerini numaralandırma ve bağlantı noktası eşlemelerini ekleme veya kaldırma dahil olmak üzere çeşitli eylemler gerçekleştirmesine izin verir. Bir bağlantı noktası eşlemesi ekleyerek, IGD'nin arkasındaki bir UPnP denetleyicisi, IGD'nin harici bir adresten dahili bir istemciye geçişini sağlayabilir.


## SORUNLAR.
### Kimlik doğrulama.
UPnP protokolü varsayılan olarak herhangi bir kimlik doğrulaması uygulamaz, bu nedenle UPnP cihaz uygulamalarının ek "Cihaz Koruma" hizmetini  veya "Cihaz Güvenlik Hizmetini" uygulaması gerekir.  Ayrıca, UPnP cihazları ve uygulamaları için kullanıcı kimlik doğrulaması ve yetkilendirme mekanizmalarına izin veren bir uzantı öneren UPnP-UP (Evrensel Tak ve Çalıştır - Kullanıcı Profili)  adlı standart olmayan bir çözüm de mevcuttur. Birçok UPnP cihaz uygulamasında kimlik doğrulama mekanizmaları yoktur ve varsayılan olarak yerel sistemlerin ve kullanıcılarının tamamen güvenilir olduğunu varsayar.
Kimlik doğrulama mekanizmaları uygulanmadığında, UPnP IGD protokolünü çalıştıran yönlendiriciler ve güvenlik duvarları saldırılara açıktır. Örneğin, tarayıcının sanal alanının dışında çalışan Adobe Flash programları (örneğin, bu, Adobe Flash'ın kabul edilmiş güvenlik sorunları olan belirli bir sürümünü gerektirir), UPnP IGD protokolünü uygulayan bir yönlendiricinin aşağıdakiler tarafından kontrol edilmesini sağlayan belirli bir HTTP isteği türü oluşturabilir: UPnP özellikli bir yönlendiriciye sahip birisi bu web sitesini ziyaret ettiğinde kötü amaçlı bir web sitesi.  Bu yalnızca UPnP'nin "güvenlik duvarı delme" özelliği için geçerlidir; IGD, UPnP'yi desteklemediğinde veya IGD'de UPnP devre dışı bırakıldığında geçerli değildir. Ayrıca, özelliklerin çoğu (LAN Ana Bilgisayar Yapılandırması dahil) UPnP özellikli yönlendiriciler için isteğe bağlı olduğundan, tüm yönlendiriciler UPnP tarafından değiştirilen DNS sunucusu ayarları gibi şeylere sahip olamaz. Sonuç olarak, bazı UPnP cihazları, bir güvenlik önlemi olarak UPnP varsayılan olarak kapalı olarak gönderilir.


### İnternetten erişim.
2011'de araştırmacı Daniel Garcia, internetten UPnP isteklerine izin veren bazı UPnP IGD cihaz yığınlarındaki bir kusurdan yararlanmak için tasarlanmış bir araç geliştirdi.  Araç, DEFCON 19'da herkese açık hale getirildi ve cihazdan harici IP adreslerine ve NAT'ın arkasındaki dahili IP adreslerine bağlantı noktası eşleştirme isteklerine izin veriyor. Sorun, aynı anda milyonlarca savunmasız cihazı gösteren taramalarla dünya çapında geniş çapta yayılıyor.
Ocak 2013'te, Boston'daki güvenlik şirketi Rapid7  altı aylık bir araştırma programı hakkında rapor verdi. Bir ekip, UPnP özellikli cihazlardan gelen ve internet bağlantısı için uygun olduklarını bildiren sinyalleri taradı. 81 milyon IP adresindeki 1500 şirketten yaklaşık 6900 ağa duyarlı ürün, taleplerine yanıt verdi. Cihazların %80'i ev yönlendiricisidir; diğerleri arasında yazıcılar, web kameraları ve güvenlik kameraları bulunur. UPnP protokolü kullanılarak, bu cihazların çoğuna erişilebilir ve/veya manipüle edilebilir.
Şubat 2013'te UPnP forumu, kullanılan UPnP yığınlarının daha yeni sürümlerini önererek ve bu tür sorunları daha fazla önlemek için kontrolleri içerecek şekilde sertifika programını iyileştirerek bir basın bülteninde yanıtını verdi.


### IGMP gözetleme ve güvenilirlik.
UPnP, genellikle dijital ev ağlarında kullanılan tek önemli çok noktaya yayın uygulamasıdır; bu nedenle, çok noktaya yayın ağ yanlış yapılandırması veya diğer eksiklikler, altta yatan ağ sorunları yerine UPnP sorunları olarak görünebilir.
IGMP gözetleme bir anahtarda veya daha yaygın olarak bir kablosuz yönlendirici/anahtarda etkinleştirilirse, yanlış veya eksik yapılandırılmışsa (örn. etkin bir sorgulayıcı veya IGMP proxy'si olmadan) UPnP/DLNA cihaz keşfine (SSDP) müdahale ederek UPnP'nin güvenilmez görünmesine neden olur.
Gözlenen tipik senaryolar, güç açıldıktan sonra ortaya çıkan ve IGMP grup üyeliğinin sona ermesi nedeniyle birkaç dakika sonra (genellikle varsayılan yapılandırma olarak 30) kaybolan bir sunucu veya istemciyi (örn. akıllı TV) içerir.


### Geri arama güvenlik açığı.
8 Haziran 2020'de, başka bir protokol tasarım kusuru daha duyuruldu. Keşfeden kişi tarafından "CallStranger" olarak adlandırılan bu sistem, bir saldırganın olay abonelik mekanizmasını alt üst etmesine ve çeşitli saldırılar gerçekleştirmesine izin verir: DDoS'ta kullanım isteklerinin güçlendirilmesi; numaralandırma; ve veri hırsızlığı.
OCF, Nisan 2020'de protokol spesifikasyonuna yönelik bir düzeltme yayınlamıştı, ancak UPnP çalıştıran birçok cihaz kolayca yükseltilemediğinden, CallStranger muhtemelen daha uzun süre bir tehdit olarak kalacak. CallStranger, tasarım ve uygulama güvenliğinde tekrarlanan başarısızlıklar nedeniyle son kullanıcılara UPnP'yi bırakma çağrılarını ateşledi.
 }}>