Universal Plug and Play ( UPnP ) — это набор сетевых протоколов Интернет -протокола (IP), который позволяет сетевым устройствам, таким как персональные компьютеры, принтеры, интернет-шлюзы , точки доступа Wi-Fi и мобильные устройства, беспрепятственно обнаруживать присутствие друг друга. в сети и установить функциональные сетевые службы. UPnP предназначен в первую очередь для бытовых сетей без устройств корпоративного класса.
UPnP предполагает, что сеть использует IP, а затем использует HTTP поверх IP, чтобы предоставить описание устройства/службы, действия, передачу данных и уведомление о событиях . Запросы и рекламные объявления поиска устройств поддерживаются за счет запуска HTTP поверх UDP ( порт 1900) с использованием многоадресной рассылки (известной как HTTPMU). Ответы на поисковые запросы также отправляются по UDP, но вместо этого они отправляются с использованием одноадресной рассылки (известной как HTTPU).
Концептуально UPnP расширяет технологию Plug and Play — технологию динамического подключения устройств непосредственно к компьютеру — до сетей с нулевой конфигурацией для жилых и домашних беспроводных сетей. Устройства UPnP являются автоматически подключаемыми, поскольку при подключении к сети они автоматически устанавливают рабочие конфигурации с другими устройствами, избавляя пользователей от необходимости вручную настраивать и добавлять устройства через IP-адреса . [1]
UPnP обычно считается непригодным для развертывания в бизнес-средах из соображений экономии, сложности и согласованности: многоадресная рассылка делает его «болтливым», потребляя слишком много сетевых ресурсов в сетях с большим количеством устройств; упрощенные средства контроля доступа плохо сочетаются со сложными средами; и он не обеспечивает единый синтаксис конфигурации, такой как среды CLI Cisco IOS или JUNOS. [ нужна цитата ]
Архитектура UPnP позволяет объединять в сети бытовую электронику , мобильные устройства, персональные компьютеры и бытовую технику между устройствами . Это протокол с распределенной открытой архитектурой , основанный на установленных стандартах, таких как набор протоколов Интернета (TCP/IP), HTTP , XML и SOAP . Точки управления UPnP (CP) — это устройства, которые используют протоколы UPnP для управления устройствами (CD), управляемыми UPnP. [2]
Архитектура UPnP поддерживает сети с нулевой конфигурацией. UPnP-совместимое устройство любого производителя может динамически подключаться к сети, получать IP-адрес, объявлять свое имя, рекламировать или передавать свои возможности по запросу, а также узнавать о присутствии и возможностях других устройств. Серверы протокола динамической конфигурации хоста (DHCP) и системы доменных имен (DNS) являются необязательными и используются только в том случае, если они доступны в сети. Устройства могут автоматически отключаться от сети, не оставляя информации о состоянии .
UPnP был опубликован как международный стандарт ISO/IEC 29341, состоящий из 73 частей , в декабре 2008 года . [3] [4] [5] [6] [7] [8]
Другие функции UPnP включают в себя:
UPnP использует распространенные интернет -технологии. Предполагается, что сеть должна использовать Интернет-протокол (IP), а затем использовать HTTP , SOAP и XML поверх IP, чтобы предоставить описание устройства/службы, действия, передачу данных и события. Запросы и рекламные объявления на поиск устройств поддерживаются за счет запуска HTTP поверх UDP с использованием многоадресной рассылки (известной как HTTPMU). Ответы на поисковые запросы также отправляются по UDP, но вместо этого они отправляются с использованием одноадресной рассылки (известной как HTTPU). UPnP использует UDP из-за меньших затрат, поскольку не требует подтверждения полученных данных и повторной передачи поврежденных пакетов. HTTPU и HTTPMU изначально были представлены как интернет-проект , но срок их действия истек в 2001 году; [9] эти спецификации с тех пор были интегрированы в действующие спецификации UPnP.
UPnP использует порт UDP 1900, и все используемые порты TCP получаются из активных и ответных сообщений SSDP. [10]
Основой сети UPnP является IP-адресация. Каждое устройство должно реализовать DHCP-клиент и выполнять поиск DHCP-сервера при первом подключении устройства к сети. Если DHCP-сервер недоступен, устройство должно назначить себе адрес. Процесс, с помощью которого устройство UPnP назначает себе адрес, известен в архитектуре устройств UPnP как AutoIP . В архитектуре устройства UPnP версии 1.0 [3] AutoIP определен в самой спецификации; в архитектуре устройства UPnP версии 1.1, [4] AutoIP ссылается на IETF RFC 3927. Если во время транзакции DHCP устройство получает доменное имя, например, через DNS-сервер или посредством пересылки DNS, устройство должно использовать это имя в последующей сети. операции; в противном случае устройство должно использовать свой IP-адрес.
После того как устройство установило IP-адрес, следующим шагом в работе сети UPnP является обнаружение. Протокол обнаружения UPnP известен как протокол простого обнаружения служб (SSDP). Когда устройство добавляется в сеть, SSDP позволяет этому устройству рекламировать свои услуги точкам управления в сети. Это достигается путем отправки активных сообщений SSDP. Когда в сеть добавляется контрольная точка, SSDP позволяет этой контрольной точке активно искать интересующие устройства в сети или пассивно прослушивать активные сообщения SSDP устройств. Фундаментальный обмен — это сообщение обнаружения, содержащее несколько важных сведений об устройстве или одной из его служб, например его тип, идентификатор и указатель (сетевое расположение) на более подробную информацию.
После того как контрольная точка обнаружила устройство, она по-прежнему знает об устройстве очень мало. Чтобы точка управления могла узнать больше об устройстве и его возможностях или взаимодействовать с устройством, точка управления должна получить описание устройства из местоположения ( URL ), указанного устройством в сообщении обнаружения. Описание устройства UPnP выражается в формате XML и включает информацию о производителе, зависящую от поставщика, такую как название и номер модели, серийный номер , имя производителя, URL-адреса (презентации) на веб-сайты конкретного поставщика и т. д. Описание также включает список всех встроенных услуги. Для каждой службы в документе «Описание устройства» перечислены URL-адреса для управления, событий и описания службы. Каждое описание службы включает список команд или действий , на которые служба отвечает, а также параметры или аргументы для каждого действия; описание услуги также включает список переменных ; эти переменные моделируют состояние службы во время выполнения и описываются с точки зрения типа данных, диапазона и характеристик событий.
Получив описание устройства, точка управления может отправлять действия в сервис устройства. Для этого точка управления отправляет подходящее управляющее сообщение на контрольный URL-адрес службы (указанный в описании устройства). Управляющие сообщения также выражаются в формате XML с использованием протокола простого доступа к объектам (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. [11]
12 июля 2006 года UPnP Forum объявил о выпуске версии 2 спецификаций аудио и видео UPnP [12] с новыми классами MediaServer (MS) версии 2.0 и MediaRenderer (MR) версии 2.0. Эти улучшения создаются путем добавления возможностей к классам устройств MediaServer и MediaRenderer, что обеспечивает более высокий уровень взаимодействия между продуктами разных производителей. Некоторые из первых устройств, соответствующих этим стандартам, продавались Philips под торговой маркой Streamium .
С 2006 года публикуются версии 3 и 4 протоколов управления аудио- и видеоустройствами UPnP. [13] В марте 2013 года была опубликована обновленная спецификация архитектуры uPnP AV, включающая обновленные протоколы управления устройствами. [11] Архитектура устройства UPnP 2.0 была выпущена в апреле 2020 года.
Стандарты UPnP AV упоминаются в спецификациях, опубликованных другими организациями, в том числе в Руководстве по совместимости сетевых устройств Альянса цифровых жилых сетей , [14] Международной электротехнической комиссии IEC 62481-1, [15] и Протоколе домашней сети OpenCable для лабораторий кабельного телевидения . [16]
Обычно архитектура аудио/видео (AV) UPnP состоит из: [17]
АМедиасервер UPnP AV — это UPnP-сервер («главное» устройство), который предоставляет информацию медиатеки и передает мультимедийные данные (например, аудио/видео/изображения/файлы) клиентам UPnP в сети. Это компьютерная система или подобное цифровое устройство, которое хранит цифровые медиафайлы, такие как фотографии, фильмы или музыку, и передает их другим устройствам.
Медиасерверы UPnP AV предоставляют услугу клиентским устройствам UPnP AV, так называемым контрольным точкам , для просмотра медиаконтента сервера и запрашивают у медиасервера доставку файла в точку управления для воспроизведения.
Медиа-серверы UPnP доступны для большинства операционных систем и многих аппаратных платформ. Медиа-серверы UPnP AV можно разделить на программные и аппаратные. Программные медиасерверы UPnP AV можно запускать на ПК . Аппаратные AV-медиасерверы UPnP могут работать на любых устройствах NAS или на любом специальном оборудовании для доставки мультимедиа, например на цифровом видеорегистраторе . По состоянию на май 2008 года программных медиасерверов UPnP AV было больше, чем аппаратных серверов.
Одно из решений для прохождения NAT , называемое протоколом управления устройством шлюза Интернета (протокол UPnP IGD), реализуется через UPnP. Многие маршрутизаторы и межсетевые экраны выступают в качестве устройств интернет-шлюзов, позволяя любой локальной точке управления UPnP выполнять различные действия, включая получение внешнего IP-адреса устройства, перечисление существующих сопоставлений портов, а также добавление или удаление сопоставлений портов. Добавляя сопоставление портов, контроллер UPnP позади IGD может обеспечить прохождение IGD с внешнего адреса на внутренний клиент.
Существует множество проблем совместимости из-за различных интерпретаций очень больших, фактически обратно совместимых спецификаций IGDv1 и IGDv2. Одним из них является клиент UPnP IGD, интегрированный с текущими системами Microsoft Windows и Xbox с сертифицированными маршрутизаторами IGDv2. Проблема совместимости все еще существует с момента появления клиента IGDv1 в Windows XP в 2001 году и маршрутизатора IGDv2 без обходного пути, который делает невозможным сопоставление портов маршрутизатора. [19]
Если UPnP используется только для управления сопоставлением портов маршрутизатора и точечными отверстиями, существуют альтернативные, более новые, гораздо более простые и легкие протоколы, такие как PCP и NAT -PMP , оба из которых были стандартизированы IETF как RFC. Пока неизвестно, что эти альтернативы имеют проблемы совместимости между различными клиентами и серверами, но их распространение все еще находится на низком уровне. Что касается потребительских маршрутизаторов, в настоящее время известно, что только AVM и проекты программного обеспечения маршрутизаторов с открытым исходным кодом OpenWrt , OPNsense и pfSense поддерживают PCP в качестве альтернативы UPnP. В реализации Fritz!Box UPnP IGDv2 и PCP от AVM было много ошибок с момента их появления. Во многих случаях это не работает. [20] [21] [22] [23] [24]
Протокол UPnP по умолчанию не реализует никакой аутентификации , поэтому реализации устройств UPnP должны реализовать дополнительную службу защиты устройства [25] или реализовать службу безопасности устройства . [26] Также существует нестандартное решение под названием UPnP-UP (Universal Plug and Play — профиль пользователя) [27] [28] , которое предлагает расширение, обеспечивающее механизмы аутентификации и авторизации пользователей для устройств и приложений UPnP. Во многих реализациях устройств UPnP отсутствуют механизмы аутентификации, и по умолчанию предполагается, что локальные системы и их пользователи полностью заслуживают доверия. [29] [30]
Если механизмы аутентификации не реализованы, маршрутизаторы и межсетевые экраны , использующие протокол UPnP IGD, уязвимы для атак. Например, программы Adobe Flash , работающие вне «песочницы» браузера (например, для этого требуется определенная версия Adobe Flash с подтвержденными проблемами безопасности), способны генерировать определенный тип HTTP- запроса, который позволяет маршрутизатору, реализующему протокол UPnP IGD, управляться вредоносный веб-сайт, когда кто-то с маршрутизатором с поддержкой UPnP просто посещает этот веб-сайт. [31] Это применимо только к функции «пробивания отверстий в брандмауэре» UPnP; он не применяется, если маршрутизатор/брандмауэр не поддерживает UPnP IGD или отключен на маршрутизаторе. Кроме того, не на всех маршрутизаторах могут быть изменены такие параметры, как настройки DNS-сервера с помощью UPnP, поскольку большая часть спецификаций (включая настройку узла локальной сети) является необязательной для маршрутизаторов с поддержкой UPnP. [6] В результате некоторые устройства UPnP поставляются с отключенным UPnP по умолчанию в целях безопасности.
В 2011 году исследователь Дэниел Гарсия разработал инструмент, предназначенный для использования уязвимости в некоторых стеках устройств UPnP IGD, которые позволяют выполнять запросы UPnP из Интернета. [32] [33] Этот инструмент был обнародован на DEFCON 19 и позволяет сопоставлять запросы на внешние IP-адреса устройства и внутренние IP-адреса за NAT. Проблема широко распространена по всему миру: при сканировании одновременно обнаруживаются миллионы уязвимых устройств. [34]
В январе 2013 года охранная компания Rapid7 в Бостоне сообщила [35] о шестимесячной исследовательской программе. Команда сканировала сигналы от устройств с поддержкой UPnP, сообщая об их доступности для подключения к Интернету. На их запросы ответили около 6900 сетевых продуктов от 1500 компаний с 81 миллионом IP-адресов. 80% устройств — домашние роутеры; другие включают принтеры, веб-камеры и камеры наблюдения. Используя протокол UPnP, ко многим из этих устройств можно получить доступ и/или манипулировать ими.
В феврале 2013 года форум UPnP отреагировал в пресс-релизе [36] , рекомендовав более свежие версии используемых стеков UPnP и улучшив программу сертификации, включив в нее проверки, чтобы избежать дальнейших подобных проблем.
UPnP часто является единственным важным приложением многоадресной рассылки, используемым в цифровых домашних сетях; поэтому неправильная конфигурация многоадресной сети или другие недостатки могут проявляться как проблемы UPnP, а не как основные проблемы сети.
Если отслеживание IGMP включено на коммутаторе или, чаще, на беспроводном маршрутизаторе/коммутаторе, это будет мешать обнаружению устройств UPnP/DLNA (SSDP), если оно неправильно или неполностью настроено (например, без активного запроса или прокси-сервера IGMP), что делает UPnP ненадежным. .
Типичные наблюдаемые сценарии включают появление сервера или клиента (например, Smart TV) после включения питания, а затем исчезновение через несколько минут (часто 30 в конфигурации по умолчанию) из-за истечения срока членства в группе IGMP.
8 июня 2020 года было объявлено об еще одной ошибке в конструкции протокола. [37] Названный первооткрывателем «CallStranger» [38] , он позволяет злоумышленнику нарушить механизм подписки на события и выполнить различные атаки: усиление запросов для использования в DDoS; перечисление; и эксфильтрация данных.
OCF опубликовала исправление спецификации протокола в апреле 2020 года [39] , но поскольку многие устройства, работающие под управлением UPnP, не поддаются легкому обновлению, CallStranger, вероятно, будет оставаться угрозой еще долгое время. [40] CallStranger вызвал призывы к конечным пользователям отказаться от UPnP из-за неоднократных сбоев в безопасности его разработки и реализации. [41]
Протоколы UPnP продвигались Форумом UPnP (сформированным в октябре 1999 г.), [42] инициативой компьютерной индустрии, призванной обеспечить простое и надежное подключение к автономным устройствам и персональным компьютерам от различных производителей. В форуме приняли участие более 800 поставщиков, занимающихся всем: от бытовой электроники до сетевых вычислений. С 2016 года всеми усилиями UPnP управляет Open Connectivity Foundation (OCF).
Осенью 2008 года UPnP Forum утвердил преемника архитектуры устройств UPnP 1.0 — UPnP 1.1. [43] Стандарт профиля устройств для веб-служб (DPWS) был кандидатом на замену UPnP, но UPnP 1.1 был выбран UPnP Forum. Версия 2 IGD стандартизирована. [44]
Стандарт UPnP Internet Gateway Device (IGD) [6] имеет службу WANIPConnection, которая обеспечивает функциональность, аналогичную стандартному IETF протоколу управления портами . Спецификация NAT-PMP содержит список проблем IGDP [45] : 26–32 , которые побудили создание NAT-PMP и его преемника PCP.
Для архитектуры устройств UPnP был определен ряд дополнительных стандартов:
urn:schemas-wifialliance-org:device:WFADevice
услуг «устройства WFA» ( ), связанных с точкой беспроводного доступа.{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )