ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

iOS 平台 Bonjour 服务发现安全测试指南:mDNS/DNS-SD 原理、API 选择与本地网络隐私配置(OWASP MASTG)

iOS 平台 Bonjour 服务发现安全测试指南:mDNS/DNS-SD 原理、API 选择与本地网络隐私配置(OWASP MASTG) 文档教程网络安全【免费下载链接】mastgThe OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.项目地址https://gitcode.com/gh_mirrors/ow/mastg点击查看免费下载本指南以 OWASP Mobile Application Security Testing GuideMASTG知识库条目 MASTG-KNOW-0128 为主体系统讲解 iOS 平台上基于 Bonjour 的零配置局域网服务发现机制涵盖其 mDNS/DNS-SD 底层原理、两代 APIFoundation 与 Network framework的选型、iOS 14 起的本地网络隐私声明NSLocalNetworkUsageDescription/NSBonjourServices配置以及服务发现之后必须补齐的传输安全与对端认证责任。读者在完成本篇后将能够在 MASTG 测试流程中准确识别 App 的 Bonjour 使用面、核查其Info.plist隐私声明是否合规并针对该 IPC 通道制定完整的静态与动态测试方案。Bonjour 是什么Apple 的零配置网络实现Bonjour 是 Apple 基于multicast DNSmDNS与DNS Service DiscoveryDNS-SD实现的零配置网络zero-configuration networking方案。它允许 App 在局域网内广播advertise和发现discover服务无需手动配置 IP、端口或依赖集中式目录服务器如企业级 DNS 服务器这与传统依赖 DHCP/DNS 基础设施的服务发现模式有本质区别mDNS使用224.0.0.251IPv4与FF02::FBIPv6组播地址在本地链路范围内解析主机名.local形式的名称无需配置 DNS 服务器DNS-SD基于现有 DNS 记录类型PTR、SRV、TXT描述服务的实例、位置与附加属性使发现这一行为标准化。在 MASTG 的 iOS 平台分类中Bonjour 被归类为基于网络的 IPC 通道Network-based Channel它只负责服务发现真正的数据交换发生在发现之后建立起来的网络连接上见 MASTG-KNOW-0078。理解这一点是后续安全分析的前提——发现机制本身不携带业务数据也不提供任何传输保护。App Store 应用的典型使用场景App Store 上架的 App 可以使用 Bonjour 发现并连接同一局域网内的其他设备与服务包括其他 iOS 设备、Mac、智能家居配件以及第三方硬件。MASTG 文档给出的常见用例包括发现并连接配套的 Mac 应用或本地服务器例如手机端 App 与桌面端配套软件在同一局域网内自动配对iOS 设备之间的点对点通信同局域网内多台 iOS 设备不经云端直接互连与网络可访问设备集成如打印机、媒体播放器、IoT 硬件等支持 Bonjour 广播的外设。从源码与测试的角度看凡是在 App 中观察到NWBrowser/NWListener/NetService/NetServiceBrowser等 API 引用即可推断其存在 Bonjour 服务发现面应纳入 MASTG-BEST-0045 所述网络型 IPC安全审查范畴。Bonjour 的两套 API 体系iOS 为 Bonjour 提供两代 API 体系开发者选型直接影响代码审计时的追踪目标API 体系主要类定位与现状Foundation旧NetService广告服务、NetServiceBrowser按类型浏览服务较早的 Foundation APIApple Developer Technical SupportDTS已指出旧的 Bonjour API 被标记为 deprecated建议新开发改用 Network frameworkNetwork framework新NWListener所描述的底层网络栈以 Network framework 为例广告一个 Bonjour 服务的核心代码如下示意import Network // 广告侧NWListener 发布服务 let parameters NWParameters() parameters.includePeerToPeer true let listener try NWListener(using: parameters) listener.service NWListener.Service(name: MyAppInstance, type: _myapp._tcp, txtRecord: [version: 1.0]) listener.newConnectionHandler { connection in connection.start(queue: .main) // 此处才建立真正的数据传输通道 } listener.start(queue: .main) // 浏览侧NWBrowser 按类型发现服务 let browser NWBrowser(for: .bonjour(type: _myapp._tcp, domain: nil), using: parameters) browser.browseResultsChangedHandler { results, changes in for result in results where result.endpoint ! nil { // 发现到远端服务随后通过 endpoint 建立 NWConnection } } browser.start(queue: .main)对应的旧式 Foundation 写法NetService广告 NetServiceBrowser浏览仍可在存量代码中见到审计时两者都应覆盖。需要特别说明的是服务类型service type遵循固定格式_name._tcp或_name._udp例如_myapp._tcp。该类型字符串既用于 API 调用也用于Info.plist的NSBonjourServices声明是静态检查与运行时流量观察之间的关键关联点。本地网络访问权限iOS 14 起的隐私门槛自iOS 14起任何通过 Bonjour 等方式访问本地网络的 App都必须在Info.plist中声明NSLocalNetworkUsageDescription中描述的 iOS 权限分层模型一致本地网络权限属于运行时授权 用途说明字符串这一类受保护资源App 必须同时满足声明与运行时授权两个条件。同时使用 Bonjour 的 App 还应通过Info.plist的NSBonjourServices键声明其浏览的服务类型。MASTG 文档给出的最小配置如下keyNSBonjourServices/key array string_myapp._tcp/string /array完整声明还应搭配本地网络用途说明keyNSLocalNetworkUsageDescription/key string此 App 需要访问本地网络以发现并连接同一局域网内的配套设备。/string缺少必需的本地网络隐私声明时Bonjour 浏览或本地网络访问可能失败或被系统直接拦截——这一行为既影响功能也是 MASTG 测试中的典型发现项若 App 实际调用了 Bonjour API 却未声明NSLocalNetworkUsageDescription或NSBonjourServices即为隐私配置缺陷。关联 EntitlementMulticast Networking除Info.plist声明外某些场景还涉及签名授权entitlement。从 MASTG-KNOW-0077 可知com.apple.developer.networking.multicastentitlement 允许 App 在 iOS 上发送 IP 组播/广播流量并允许任意的 Bonjour 浏览或广告。也就是说普通、受限的 Bonjour 服务发现依赖Info.plist声明NSLocalNetworkUsageDescriptionNSBonjourServices需要绕过上述限制例如浏览未在NSBonjourServices中声明的服务类型或使用组播通信的 App则可能额外携带该 entitlement。测试人员在提取已签名 App 的 entitlements可结合代码签名提取技术如 MASTG-TECH-0111 提及的方法时若发现com.apple.developer.networking.multicast应重点确认其用途是否超出功能所需因为 unnecessary entitlement 会扩大本地网络攻击面。安全边界与约束发现 ≠ 信任Bonjour 本身存在明确的安全边界MASTG 文档将其归纳为三点测试时务必逐条核对仅限本地发现不提供互联网级发现或穿越Bonjour 面向局域网local network服务发现本身不具备互联网规模的发现能力也不能自行穿越 NAT 或网络边界。若 App 需要跨网络发现必须依赖其他机制如后端目录服务。发现不加密、不认证后续连接Bonjour 只负责找到服务发现之后建立的连接是否加密、对端身份是否可信完全由 App 自行负责。App 有义务为连接施加传输安全如 TLS并认证对端peer。这意味着测试中绝不能因为服务是通过 Bonjour 在本地发现的就假定它安全——本地网络上的任意设备都可能广播同名服务并实施中间人攻击。本地网络权限是面而非点本地网络权限授予的是 App 对整个本地网络的访问权而不是对某一个 Bonjour 服务类型的访问权。因此 App 仍应声明其浏览的服务类型并尽量把本地网络使用控制在最小范围。这一边界在最佳实践中得到进一步强化。根据 MASTG-BEST-0045 的Secure Network-Based IPC指导Bonjour 提供的是服务发现而非传输安全。发现之后建立的连接仍需要正常的认证、授权、传输保护和输入校验。不要将处于本地网络视为信任信号——必须认证对端、在适当场合加密流量并校验所有消息。MASTG 视角下的测试要点结合上述原理与 MASTG 知识库针对 Bonjour 的测试可按下述路径开展静态配置核查Info.plist检查 App 的Info.plist是否包含NSLocalNetworkUsageDescription若 App 使用 Bonjour 浏览确认NSBonjourServices中声明了实际使用的服务类型与代码中的_name._tcp/_name._udp字符串比对。源码级 API 追踪在二进制或源码中检索NWBrowser、NWListener、NetService、NetServiceBrowser的引用确认服务类型、txtRecord暴露的附加信息以及发现回调之后连接的处理逻辑是否施加 TLS、是否认证对端。Entitlements 审查检查签名中是否含com.apple.developer.networking.multicast等不必要的网络 entitlement。运行时行为验证触发 App 的本地网络流程观察系统是否弹出本地网络权限提示结合网络抓包确认实际连接是否加密、服务发现是否仅限局域网范围。威胁建模将 Bonjour 通道视为不可信输入源——本地网络上的任意设备都能广播服务名App 对发现结果的信任程度、对后续连接数据的输入校验强度都应作为测试结论写入报告。延伸阅读本条目在 MASTG 知识体系中与以下内容直接关联可结合阅读以形成完整认知MASTG-KNOW-0078iOS IPC 通道全景明确 Bonjour 属于网络型通道的定位MASTG-KNOW-0073iOS 网络 API 分层理解NWListener/NWBrowser与 Network framework 的关系MASTG-KNOW-0077iOS 权限分层模型用途说明字符串、entitlements、运行时授权本地网络权限属其中一类MASTG-BEST-0045针对 iOS IPC 通道含 Bonjour的最小化数据暴露与对端认证最佳实践。赞分享文档教程网络安全【免费下载链接】mastgThe OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.项目地址https://gitcode.com/gh_mirrors/ow/mastg点击查看免费下载相关推荐Marlin网络发现mDNS和Bonjour服务Marlin网络发现mDNS和Bonjour服务 概述 在现代3D打印生态系统中网络连接已成为提升用户体验的关键技术。Marlin固件作为最流行的开源3D打智能硬件嵌入式固件物联网如何轻松打造可拖拽缩放界面Vue.Draggable.Resizable高效开发指南如何轻松打造可拖拽缩放界面Vue.Draggable.Resizable高效开发指南 Vue.Draggable.Resizable是一款基于Vue.js的轻音视频后端iOS 平台架构与安全测试指南基于 OWASP MASTG 的 iOS 平台安全纵深解析iOS 平台架构与安全测试指南基于 OWASP MASTG 的 iOS 平台安全纵深解析 本文是 OWASP Mobile Application Secur文档教程网络安全上一篇LeetCode 179 Largest Number 的 Go 题解自定义比较器快排与 ab、ba 拼接比较下一篇RustFS 与 MinIO 的 Router 兼容边界异常清单、源码级实现与迁移排查指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表