MDM托管应用配置安全疑问:NSUserDefaults能否被非MDM实体篡改?
MDM托管应用配置的安全机制
配置读取与监听方式
MDM可向托管应用注入配置,服务器推送的配置变更会同步到NSUserDefaults中,还能通过添加观察者监听这些变更。托管应用的配置存储在com.apple.configuration.managed这个key下,读取示例代码如下:
if let managedConf = UserDefaults.standard.object(forKey: "com.apple.configuration.managed") as? [String:Any?] { if let serverURL = managedConf["serverURL"] as? String{ return serverURL } }
核心疑问
既然NSUserDefaults支持终端写入操作,那是什么机制阻止非MDM实体修改com.apple.configuration.managed?比如下面的代码就尝试篡改配置:
managedConf["serverURL"] = "BAD_SERVER_NAME" let defaults = UserDefaults.standard defaults.set(managedConf, forKey: "com.apple.configuration.managed")
难道只有应用内部才能修改自身的NSUserDefaults?
安全限制机制说明
com.apple.configuration.managed是系统级受保护的key,具体限制规则如下:
- 该key属于系统管理的配置域,应用自身代码、终端工具(如
defaults命令)均无写入权限。 - 应用尝试写入这个key时,系统会直接忽略操作,不会生效;终端发起的修改请求也会被系统拒绝。
- 只有经过验证的MDM服务器推送的配置更新,才能触发这个key的变更,系统会负责验证MDM身份并完成配置更新,确保内容不会被未授权篡改。
内容的提问来源于stack exchange,提问作者Zohar81
相关产品推荐
相关产品推荐

