当前位置: 首页 > news >正文

苹果公司的Wifi定位服务(WPS)存在被滥用的风险

安全博客 Krebs on Security 2024年5月21日发布博文,表示苹果公司的定位服务存在被滥用风险,通过 "窃取"WPS 数据库,可以定位部队行踪。

相关背景知识

手机定位固然主要依赖卫星定位,不过在城市地区,密集的高楼会导致移动设备难以接收卫星的微弱信号,因此移动设备在这种场景中会依赖基于 Wi-Fi 的定位系统(WPS)。

WPS 使用一个包含近 5 亿台 Wi-Fi 路由器的全球数据库。最重要的是,这不仅仅是他们能实际访问的公共路由器,而且他们能看到的所有 BSSID,这也包括很多家庭中的 Wi-Fi 路由器。

设备无法访问你的路由器,但它们可以检测到路由器并查询数据库,找出路由器的确切位置。这些数据库是由四处行驶的汽车创建的,它们使用多种方法跟踪自己的位置,并收集 BSSID,然后将其与这些位置进行匹配。

制造商设置的 BSSID 与用户选择的路由器 SSID 不同,简单来说可以将其视为路由器中无线网卡的 MAC 地址。

苹果和谷歌都有自己的 WPS 数据库,它们使用的方法基本相同。检测附近的 BSSID,测量每个信号的强度,然后将这些数据与 WPS 数据库进行比较,找出移动设备的位置。

谷歌定位方式

安卓手机会记录它能看到的 BSSID 及其信号强度,并将数据发送到谷歌服务器,服务器使用 WPS 数据库计算手机的位置,并将其发送给手机。

苹果定位方式

苹果的 WPS 还接受附近 BSSID 的列表,不是根据观察到的接入点及其接收到的信号强度来计算设备的位置,而是苹果通过 API 返回最多 400 个 BSSID 的地理位置,然后使用其中大约 8 个 BSSID 根据已知地标确定用户的位置。

定位方式区别

从本质上讲,谷歌的 WPS 可以计算用户的位置,并与设备共享。苹果的 WPS 为其设备提供了足够多的有关该地区已知接入点位置的数据,设备可以自行进行估算。

根据论文描述,WPS定位主要两种工作方式:1)在服务器计算手机端位置,2)返回一些的BSSID的地理位置,并让手机端进行计算以确定其位置。谷歌的WPS采用前者,而苹果的WPS采用后者。

研究人员指出,谷歌和苹果的WPS系统在基本工作原理上有根本区别,苹果的系统由于其开放性,为安全研究人员和潜在的攻击者提供了进行这项研究的途径。

研究人员指出,苹果的WPS系统特别“热情健谈”(下图):
在这里插入图片描述

论文指出:“除了客户端提交的BSSID的地理位置,苹果的API还会随机性地返回多达数百个附近BSSID的地理位置。”

“在苹果的WPS版本中,用户提交BSSID进行地理定位,苹果WPS则会返回其认为的BSSID位置,同时返回的还包括用户未请求的多达400个附近BSSID的位置。这400个额外的BSSID对于安全研究人员/黑客的研究非常重要,因为它们允许研究人员在短时间内积累大量的地理定位BSSID。此外,苹果的WPS服务接口没有设置认证或速率限制,可以免费使用。”

相比之下,谷歌的WPS则仅返回计算出的位置,并且经过认证、速率限制和收费,使得进行类似攻击或安全研究变得难以负担,因此比苹果的WPS要安全得多。

苹果定位方式漏洞

马里兰大学的研究人员表示可以利用苹果公司 API 的冗长功能,绘制出单个设备进出世界上几乎任何指定区域的移动地图。

马里兰大学的这对研究人员说,他们在研究初期花了一个月的时间不断查询 API,询问随机生成的十亿多个 BSSID 的位置。

在这些随机生成的 BSSID 中,只有约 300 万个是苹果公司的 Wi-Fi 地理定位 API 所知道的,但苹果公司还返回了另外 4.88 亿个 BSSID 位置,这些位置已经通过其他查询存储在其 WPS 中。

研究人员说,通过归零(zeroing)或“地理围栏”苹果公司位置 API 索引的其他较小区域,他们可以监控 Wi-Fi 接入点随着时间的推移是如何移动的。

这个问题在实际层面可能会是个大问题,团队可以对俄乌冲突区域进行定位,能确认乌克兰和俄罗斯军队使用的星链设备的位置和移动情况。

参考

IT 之家博文

Krebs on Security 博文

Maryland大学的研究论文

安全内参博客

相关文章:

  • GPIO和PIN
  • 用户想知道数据库每天增长几个G,到底都是啥?
  • Jmeter 入门指南:从零开始学习
  • 【分享】Word“打开密码”的常见问题及解决方法
  • electron教程(一)创建项目
  • uniapp + vue3 + Script Setup 写法变动 (持续更新)
  • IP白名单及其作用解析
  • 获取HTML元素的offsetParent属性
  • 传输线在阻抗匹配时串联端接电阻为什么要靠近发送端
  • Java_多线程:线程池
  • Spring Boot与Apache Kafka的深度集成
  • 如何利用React和Python构建强大的网络爬虫应用
  • leetcode-20-回溯-切割、子集
  • 5G赋能安防视频监控:EasyCVR视频汇聚融合创新技术,共筑多场景安全防线
  • 学习springAOP
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS魔法堂:Absolute Positioning就这个样
  • ES6 学习笔记(一)let,const和解构赋值
  • Fabric架构演变之路
  • JavaScript实现分页效果
  • Laravel 实践之路: 数据库迁移与数据填充
  • Nacos系列:Nacos的Java SDK使用
  • use Google search engine
  • 从0实现一个tiny react(三)生命周期
  • 离散点最小(凸)包围边界查找
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 用jQuery怎么做到前后端分离
  • linux 淘宝开源监控工具tsar
  • ​2020 年大前端技术趋势解读
  • # Panda3d 碰撞检测系统介绍
  • #Spring-boot高级
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #前后端分离# 头条发布系统
  • ${ }的特别功能
  • (11)MSP430F5529 定时器B
  • (7)svelte 教程: Props(属性)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • ./configure,make,make install的作用
  • .NET Micro Framework初体验
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • /dev/sda2 is mounted; will not make a filesystem here!
  • ;号自动换行
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AIGC] Redis基础命令集详细介绍
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [BZOJ 1040] 骑士