Universal Plug and Play (UPnP ) - это набор сетевых протоколов, которые позволяют устройства, такие как персональные компьютеры, принтеры, интернет-шлюзы, точки доступа Wi-Fi и мобильные устройства, чтобы беспрепятственно обнаруживать присутствие друг друга в сети и устанавливать функциональные сетевые службы для обмена данными, связи и развлечений. UPnP предназначен в первую очередь для жилых сетей без устройств корпоративного класса.
Протоколы UPnP продвигались форумом UPnP - инициативой компьютерной индустрии, призванной обеспечить простое и надежное подключение к автономным устройствам и персональным компьютерам от многих различных поставщиков. Форум состоял из более чем восьмисот поставщиков, занимающихся всем, от бытовой электроники до сетевых вычислений. С 2016 года все усилия по UPnP находятся под управлением Open Connectivity Foundation (OCF).
UPnP предполагает, что сеть использует Интернет-протокол (IP), а затем использует HTTP поверх IP для предоставления описания устройства / службы, действий, передачи данных и событий. Запросы на поиск устройств и рекламные объявления поддерживаются запуском HTTP поверх UDP (порт 1900) с использованием многоадресной рассылки (известной как HTTPMU). Ответы на поисковые запросы также отправляются через UDP, но вместо этого отправляются с использованием одноадресной рассылки (известной как HTTPU).
Концептуально UPnP расширяет plug and play - технологию динамического подключения устройств непосредственно к компьютеру - до сетей с нулевой конфигурацией для жилых и SOHO беспроводных сетей. Устройства UPnP работают по принципу «включай и работай», поскольку при подключении к сети они автоматически устанавливают рабочие конфигурации с другими устройствами.
UPnP обычно считается непригодным для развертывания в бизнес-среде по причинам экономии, сложности и согласованности: основа многоадресной рассылки делает его болтливым, потребляя слишком много сетевых ресурсов в сетях с большим количеством устройств; упрощенные средства управления доступом плохо подходят для сложных сред; и он не обеспечивает унифицированный синтаксис конфигурации, такой как среды CLI Cisco IOS или JUNOS.
Архитектура UPnP позволяет объединять в сеть бытовую электронику, мобильные устройства, персональные компьютеры и объединенные в сеть бытовые устройства. Это распределенный протокол с открытой архитектурой,, основанный на установленных стандартах, таких как Internet Protocol Suite (TCP / IP), HTTP, XML <27.>и SOAP. Контрольные точки UPnP (CP) - это устройства, которые используют протоколы UPnP для управления устройствами (CD), управляемыми UPnP.
Архитектура UPnP поддерживает сеть с нулевой конфигурацией. UPnP-совместимое устройство от любого поставщика может динамически подключаться к сети, получать IP-адрес, объявлять свое имя, рекламировать или передавать свои возможности по запросу, а также узнавать о присутствии и возможностях других устройств. Протокол динамической конфигурации хоста (DHCP) и Серверы системы доменных имен (DNS) не являются обязательными и используются только в том случае, если они доступны в сети. Устройства могут автоматически отключаться от сети, не оставляя информации состояние.
UPnP был опубликован как международный стандарт , состоящий из 73 частей,, ISO / IEC 29341, в декабре 2008 года.
Другие функции UPnP включают:
UPnP использует общие Интернет технологии. Предполагается, что в сети должен работать Интернет-протокол (IP), а затем используются HTTP, SOAP и XML поверх IP, чтобы для предоставления описания устройства / услуги, действий, передачи данных и событий. Запросы на поиск устройств и рекламные объявления поддерживаются запуском HTTP поверх UDP с использованием многоадресной передачи (известной как HTTPMU). Ответы на поисковые запросы также отправляются через UDP, но вместо этого отправляются с использованием одноадресной передачи (известной как HTTPU). UPnP использует UDP из-за меньших накладных расходов, поскольку не требует подтверждения полученных данных и повторной передачи поврежденных пакетов. HTTPU и HTTPMU изначально были представлены как Internet Draft, но срок его действия истек в 2001 году; с тех пор эти спецификации были интегрированы в фактические спецификации UPnP.
UPnP использует порт UDP 1900, и все используемые порты TCP получены из сообщений активности и ответа SSDP.
Основой сети UPnP является IP-адресация. Каждое устройство должно реализовывать DHCP-клиент и искать DHCP-сервер при первом подключении устройства к сети. Если DHCP-сервер недоступен, устройство должно присвоить себе адрес. Процесс, с помощью которого устройство UPnP назначает себе адрес, известен в архитектуре устройства UPnP как AutoIP. В версии 1.0 архитектуры устройства UPnP AutoIP определяется в самой спецификации; в версии 1.1 архитектуры устройства UPnP, AutoIP ссылается на IETF RFC 3927. Если во время транзакции DHCP устройство получает доменное имя, например, через DNS-сервер или через него, устройство должно использовать это имя в последующих сетевых операциях; в противном случае устройство должно использовать свой IP-адрес.
После того, как устройство установило IP-адрес, следующим шагом в сети UPnP является обнаружение. Протокол обнаружения UPnP известен как протокол обнаружения простых служб (SSDP). Когда устройство добавляется в сеть, SSDP позволяет этому устройству рекламировать свои услуги для контрольных точек в сети. Это достигается путем отправки сообщений об активности SSDP. Когда контрольная точка добавляется в сеть, SSDP позволяет этой контрольной точке активно искать интересующие устройства в сети или пассивно прослушивать сообщения SSDP об активности устройства. Основной обмен - это сообщение об обнаружении, содержащее некоторые важные сведения об устройстве или одной из его услуг, например, его тип, идентификатор и указатель (сетевое местоположение) на более подробную информацию.
После того, как контрольная точка обнаружила устройство, контрольная точка все еще очень мало знает об устройстве. Чтобы контрольная точка могла узнать больше об устройстве и его возможностях или взаимодействовать с устройством, контрольная точка должна получить описание устройства из местоположения (URL ), предоставленного устройством в сообщении об обнаружении. Описание устройства UPnP выражается в XML и включает специфичную для поставщика информацию о производителе, такую как название модели и номер, серийный номер, название производителя, (презентационные) URL-адреса для конкретных поставщиков веб-сайтов. и т. д. Описание также включает список любых встроенных сервисов. Для каждой службы в документе «Описание устройства» перечислены URL-адреса для управления, событий и описания службы. Каждое описание службы включает список команд или действий, на которые служба отвечает, и параметры или аргументы для каждого действия; описание услуги также включает список переменных ; эти переменные моделируют состояние службы во время времени выполнения и описываются в терминах их типа данных, диапазона и характеристик событий.
Получив описание устройства, точка управления может отправлять действия в службу устройства. Для этого контрольная точка отправляет подходящее контрольное сообщение на контрольный URL-адрес для службы (указанный в описании устройства). Управляющие сообщения также выражаются в XML с использованием Simple Object Access Protocol (SOAP). Подобно вызову функции , служба возвращает любые значения, относящиеся к действию, в ответ на управляющее сообщение. Эффекты действия, если они есть, моделируются изменениями в переменных, которые описывают состояние выполнения службы.
Другой возможностью сети UPnP является уведомление о событии или событие. Протокол уведомления о событиях, определенный в архитектуре устройства UPnP, известен как общая архитектура уведомления о событиях (GENA). Описание UPnP для службы включает список действий, на которые служба отвечает, и список переменных, которые моделируют состояние службы во время выполнения. Служба публикует обновления при изменении этих переменных, и точка управления может подписаться на получение этой информации. Сервис публикует обновления, отправляя сообщения о событиях. Сообщения о событиях содержат имена одной или нескольких переменных состояния и текущее значение этих переменных. Эти сообщения также выражаются в XML. Специальное начальное сообщение о событии отправляется при первой подписке контрольной точки; это сообщение о событии содержит имена и значения для всех согласованных переменных и позволяет подписчику инициализировать свою модель состояния службы. Для поддержки сценариев с несколькими контрольными точками обработка событий разработана таким образом, чтобы все контрольные точки были одинаково информированы о последствиях любого действия. Таким образом, всем подписчикам отправляются все сообщения о событиях, подписчики получают сообщения о событиях для всех «согласованных» переменных, которые изменились, а сообщения о событиях отправляются независимо от того, почему переменная состояния изменилась (либо в ответ на запрошенное действие, либо потому, что состояние службы моделирование изменено).
Последний шаг в сети UPnP - это представление. Если у устройства есть URL-адрес для представления, то контрольная точка может получить страницу по этому URL-адресу, загрузить страницу в веб-браузер и, в зависимости от возможностей страницы, позволить пользователю управлять устройства и / или просмотреть статус устройства. Степень выполнения каждого из них зависит от конкретных возможностей страницы презентации и устройства.
Архитектура UPnP AV - это аудио и видео расширение UPnP, поддерживающее различные устройства, такие как телевизоры, видеомагнитофоны, проигрыватели CD / DVD / музыкальные автоматы, приставки, стереосистемы системы, MP3-плееры, фотоаппараты, видеокамеры, электронные фоторамки (EPF) и персональные компьютеры. Архитектура UPnP AV позволяет устройствам поддерживать различные типы форматов развлекательного контента, включая MPEG2, MPEG4, JPEG, MP3, Windows Media Audio (WMA), растровые изображения (BMP) и форматы NTSC, PAL или ATSC. Поддерживаются несколько типов протоколов передачи, включая IEEE 1394, HTTP, RTP и TCP / IP.
12 июля 2006 года UPnP Forum объявил о выпуске версии 2 спецификаций UPnP для аудио и видео с новыми Классы MediaServer (MS) версии 2.0 и MediaRenderer (MR) версии 2.0. Эти улучшения создаются путем добавления возможностей к классам устройств MediaServer и MediaRenderer, что обеспечивает более высокий уровень взаимодействия между продуктами различных производителей. Некоторые из первых устройств, соответствующих этим стандартам, продавались Philips под торговой маркой Streamium.
С 2006 года были опубликованы версии 3 и 4 протоколов управления аудио и видео UPnP. В марте 2013 года была опубликована обновленная спецификация архитектуры uPnP AV, включающая обновленные протоколы управления устройствами.
На стандарты UPnP AV ссылались в спецификациях, опубликованных другими организациями, включая Digital Living Network Alliance Руководство по совместимости сетевых устройств, Международная электротехническая комиссия IEC 62481-1 и Лаборатории кабельного телевидения OpenCable Протокол домашней сети.
A UPnP AV-медиа-сервер - это UPnP-сервер («главное» устройство), который предоставляет информацию медиатеки и передает медиаданные (например, аудио / видео / изображение / файлы) в UPnP. клиенты в сети. Это компьютерная система или аналогичное цифровое устройство, которое хранит цифровые мультимедиа, такие как фотографии, фильмы или музыку, и делится ими с другими устройствами.
Медиа-серверы UPnP AV предоставляют услугу клиентским устройствам UPnP AV, так называемым контрольным точкам, для просмотра медиаконтента сервера и запрашивают медиа-сервер для доставки файла в точку управления для воспроизведения.
Медиа-серверы UPnP доступны для большинства операционных систем и многих аппаратных платформ. Медиа-серверы UPnP AV можно разделить на программные или аппаратные. Программные медиа-серверы UPnP AV могут работать на ПК. Аппаратные медиа-серверы UPnP AV могут работать на любых устройствах NAS или любом конкретном оборудовании для доставки мультимедиа, таком как DVR. По состоянию на май 2008 года было больше программных медиа-серверов UPnP AV, чем аппаратных серверов.
Одно решение для NAT traversal, называемое протоколом шлюза Интернет (протокол IGD), реализуется через UPnP. Многие маршрутизаторы и брандмауэры представляют себя как устройства интернет-шлюза, позволяя любой локальной точке управления UPnP выполнять различные действия, включая получение внешнего IP-адреса устройства, перечисление существующих сопоставлений портов, а также добавление или удаление сопоставлений портов. Добавляя сопоставление портов, UPnP-контроллер позади IGD может разрешить обход IGD от внешнего адреса к внутреннему клиенту.
Протокол UPnP по умолчанию не реализует никакой аутентификации, поэтому реализации устройства UPnP должны реализовывать дополнительное устройство Служба защиты или внедрите Службу безопасности устройств. Также существует нестандартное решение под названием UPnP-UP (Universal Plug and Play - User Profile), которое предлагает расширение, позволяющее использовать механизмы аутентификации и авторизации пользователей для устройств и приложений UPnP. Во многих реализациях устройств UPnP отсутствуют механизмы аутентификации, и по умолчанию предполагается, что локальные системы и их пользователи полностью заслуживают доверия.
Когда механизмы аутентификации не реализованы, маршрутизаторы и межсетевые экраны протокол UPnP IGD уязвим для атак. Например, программы Adobe Flash, работающие вне изолированной программной среды браузера (например, для этого требуется определенная версия Adobe Flash с подтвержденными проблемами безопасности), способны генерировать определенный тип HTTP запрос, который позволяет маршрутизатору, реализующему протокол UPnP IGD, контролироваться вредоносным веб-сайтом, когда кто-то с маршрутизатором с поддержкой UPnP просто посещает этот веб-сайт. Это относится только к функции «пробивание дыр в межсетевом экране» в UPnP ; он не применяется, если IGD не поддерживает UPnP или UPnP отключен в IGD. Кроме того, не все маршрутизаторы могут иметь такие вещи, как настройки DNS-сервера, измененные UPnP, потому что большая часть спецификации (включая конфигурацию хоста LAN) является необязательной для маршрутизаторов с поддержкой UPnP. В результате некоторые устройства UPnP поставляются с отключенным по умолчанию UPnP в качестве меры безопасности.
В 2011 году исследователь Даниэль Гарсиа разработал инструмент, предназначенный для использования уязвимости в некоторых стеках устройств UPnP IGD, которые разрешают запросы UPnP из Интернета. Инструмент был опубликован на DEFCON 19 и позволяет отображать запросы на внешние IP-адреса от устройства и внутренние IP-адреса за NAT. Проблема широко распространена по всему миру, при сканировании одновременно обнаруживаются миллионы уязвимых устройств.
В январе 2013 года охранная компания Rapid7 в Бостоне сообщила о шестимесячной исследовательской программе. Команда просканировала сигналы от устройств с поддержкой UPnP, объявляющих об их доступности для подключения к Интернету. На их запросы ответили около 6900 сетевых продуктов от 1500 компаний с 81 миллионом IP-адресов. 80% устройств - домашние роутеры; другие включают принтеры, веб-камеры и камеры наблюдения. Используя протокол UPnP, можно получить доступ и / или управлять многими из этих устройств.
В феврале 2013 года форум UPnP ответил в пресс-релизе, порекомендовав более свежие версии используемых стеков UPnP и улучшив программу сертификации, включив в нее проверки, чтобы избежать подобных проблем в дальнейшем.
UPnP часто является единственным значимым многоадресным приложением, используемым в цифровых домашних сетях; поэтому неправильная конфигурация многоадресной сети или другие недостатки могут проявляться как проблемы UPnP, а не как основные проблемы сети.
Если IGMP Snooping включен на коммутаторе или, чаще, на беспроводном маршрутизаторе / коммутаторе, он будет мешать обнаружению устройств UPnP / DLNA (SSDP), если он неправильно или не полностью настроен (например, без активный запросчик или прокси-сервер IGMP), что делает UPnP ненадежным.
Типичные наблюдаемые сценарии включают сервер или клиент (например, Smart TV), появляющийся после включения, а затем исчезающий через несколько минут (часто 30 по умолчанию) из-за истечения срока членства в группе IGMP.
8 июня 2020 года было объявлено еще об одном недостатке конструкции протокола. Получивший название «CallStranger» своим открывателем, он позволяет злоумышленнику нарушить механизм подписки на события и выполнить различные атаки: усиление запросов для использования в DDoS; перечисление; и кража данных.
OCF опубликовала исправление для спецификации протокола в апреле 2020 года, но поскольку многие устройства, на которых работает UPnP, нелегко обновить, CallStranger, вероятно, останется угрозой еще долгое время. CallStranger вызвал призывы к конечным пользователям отказаться от UPnP из-за неоднократных сбоев в безопасности его дизайна и реализации.
UPnP продолжает активно развиваться. Осенью 2008 года UPnP Forum ратифицировал преемника UPnP 1.0 Архитектура устройства UPnP 1.1. Стандарт Devices Profile for Web Services (DPWS) был кандидатом на замену UPnP, но UPnP 1.1 был выбран форумом UPnP.
Стандарт UPnP Internet Gateway Device (IGD) имеет службу WANIPConnection, которая содержит конкурирующее решение, известное как NAT-PMP, которое представляет собой проект IETF, представленный Apple Inc. в 2005 году. Однако NAT-PMP ориентирован только на обход GNAT. Версия 2 IGD стандартизирована.