使用设备主机会创建安全问题,原因如下:
- 在运行 Windows XP 的计算机上托管的设备在所有网络上发送公告。
- 在运行 Windows XP 的计算机上托管的设备允许控制来自所有网络的设备。
这会增加家庭使用者的风险,因为运行 Windows XP 的计算机上托管的媒体播放器或桥接照明或 HVAC 系统等设备可见,并且可以从家庭外部的控制点进行控制。
创建托管设备时,需要考虑一些安全问题。
- 为了减少基于 UPnP 的设备发现和攻击的范围,所有 SSDP 消息的 TTL 为 1。 这意味着已注册的设备仅由同一网络上的控制点发现。 可以在注册表中配置更高的 TTL。
- 注册非正在运行的设备需要将设备预注册到 COM .dll,这需要管理员权限。
- 注册正在运行的设备需要管理员、本地服务或本地系统权限。
- 启动设备主机时,它将作为 localService 运行。 这使设备能够生成审核并读取 HKEY_LOCAL_MACHINE 注册表项。 设备有权访问 HKEY_CURRENT_USER。 LocalService 帐户可以使用已向其授予 LocalService 访问权限的资源,以及授予对 AuthenticatedUser 的访问权限的资源。 设备具有受限的文件系统访问权限。
- 必须更新文件系统 ACL,以允许 LocalService 访问资源目录。
- 如果设备必须具有更多安全访问权限,则可以为设备创建自己的进程,并使用 IUPnPRegistrar::RegisterRunningDevice进行注册。