黄玮
根据 中国电子技术标准化研究院 发布的 智能终端白皮书(2014年修订版)
智能终端主要表现形式有:智能电视、智能机顶盒、智能手机、平板电脑等
智能终端包含的主要要素:高性能中央处理器、存储器、 操作系统 、应用程序和网络接入
根据 IDC 中国在 2020 年 12 月 10 日发布的 《“颠覆”,IDC发布2021年中国智能终端市场10大预测》
连接、交互、屏幕等一系列新兴技术正逐渐应用于智能终端设备
Wi-Fi 6, 蓝牙等本课程要深入展开讲解的智能终端设备为智能手机平台。


像素点数)。例如, 与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域的像素较少。
横屏 还是 竖屏,分别表示屏幕的纵横比是宽还是高。请注意, 不仅不同的设备默认以不同的方向操作,而且 方向在运行时可随着用户旋转设备而改变

KitKat 为例,发布于 2013 年 10 月,截止 2017 年 11 月,全球范围内仍然有 13.8% 的设备还在运行着 4 年前的“旧”系统Nougat 为例,发布于 2016 年 8 月,截止 2021 年 2 月,全球范围内仍然有 11.2% 的设备还在运行着 4 年前的“旧”系统
11.2% = 84.9% - 73.7%新版本系统更新部署到终端设备周期较长
Codename 从 2014 年 Android 5 (Lollipop) 开始,每年一个新版本代号发布VersionAPI levelAndroid Compatibility Program 用于不同厂商生产的设备可以兼容 Android 应用程序的一个认证标准,只有认证设备才可以使用 Android 商标Android 兼容计划 认证的设备才能向 Google 申请使用 Google Play 服务和随设备分发 Google Mobile Services
Google Play 和 Google Mobile Services 均是 Google 的 私有闭源软件GMS: Google Mobile Services
Google Play Services(也被称为 GmsCore), Google Play Store(应用商店), Google Search, Chrome 等 Google 预置应用GMS 的 Android 系统才可以使用以上基础设施服务
AOSP 授权协议可以制造所有类型设备Android 兼容性认证 ,则需要对照认证标准配备必要硬件
Android 操作系统为核心的全面多行业发展iPhone OS 正式重命名为 iOSAppleTV 的系统被正式命名为 tvOSiPad 的 iOS 被重命名为 iPadOSCocoa –> Cocoa Touch
Core OS
FreeBSD 和 Mach 所改写的 Darwin,是开源、符合 POSIX 标准的一个 Unix 核心iOS 的一些基础功能
POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等C 语言的 API 来提供。Core OS 层的驱动也提供了硬件和系统框架之间的接口。然而,由于安全的考虑,只有有限的系统框架类能访问内核和驱动Apple 官方授权允许汽车、智能家居领域厂商Apple 官方唯一维护
HomeKit 只定义通信接口标准Apple 官方未授权允许任何第三方应用商店,仅允许企业级应用的自行分发和授权模式Apple 强势主导的有限开放生态圈Android 生态圈
过期警告 ⚠️ 本课件使用的 CVE 统计数据服务提供商 https://www.cvedetails.com/ 自从 2019 年下半年后就停止了和上游 CVE 数据源的同步更新。
由于
iOS底层的Core OS是基于FreeBSD和Mach所改写的Darwin,所以FreeBSD的相关漏洞在某些条件下也会影响到iOS
黑产利用新增的 iOS日历邀请 功能群发垃圾信息,这种日历弹窗小广告,不显示来源,仅仅显示广告内容、发送人和一个时段。我们往往会下意识地点击「拒绝」,但没想到这个小动作就能把自己的个人名字泄露了给对方。保留iCloud日历同步功能的同时,防止垃圾邀请充斥日历的操作方法如下:
EvilTwin 类攻击对于iOS手机用户将有更多机会得手,因为用户手机的Wi-Fi功能将会随着用户位置的变化、系统时间的变化而自动被系统强制开启Sign in with Apple)」功能,苹果会为用户随机生成一个「中转邮箱账号」来规避应用服务提供商对用户数据进行收集和追踪Sign in with Apple 更注重用户的隐私保护
私密电子邮件中转服务 帮助用户的「匿名电邮地址」依然可以正确接收到通知邮件“通过 Apple 登录”功能既不会跟踪您,也不会分析您的特征。Apple 只会保留必要的信息,以确保您能够登录和管理自己的帐户。
“通过 Apple 登录”功能内建了具有双重认证的安全保护机制。如果您在使用 Apple 设备,则可以随时通过面容 ID 或触控 ID 进行登录和重新认证。
只要知道你在第三方网站登录使用的 邮箱账号名 即可通过「Sign in with Apple」功能登录进入你在第三方网站的账号。

JWT 又是加密又是签名
根据上述 数据校验 缺陷:收到的请求数据中的 email 字段和前一步身份认证时使用的 email 未进行匹配验证 ,攻击者只需要篡改「交换 JWT」步骤中的请求数据中的 email 字段为任意目标邮箱,苹果服务器均会签发一个「合法 JWT」给攻击者。
// (伪造电邮地址)请求消息示例
POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com
{"email":"contact@bhavukjain.com"}
// 响应消息示例
{
"authorization" : {
"id_token" : "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.XXXXX.XXXXX",
"grant_code" : "XXX.0.nzr.XXXX",
"scope" : [ "name", "email" ]
},
"authorizedData" : {
"userId" : "XXX.XXXXX.XXXX"
},
"consentRequired" : false
}
第七章 Web 安全 —— 1. 未验证的用户输入JWT 为代表的第三方授权协议本身设计是安全的,但在 实现 阶段依然可能引入 安全漏洞
单点登录 和 开放授权登录 从功能设计上就是典型的「牺牲安全性」(风险集中在一个账号上)「换取便利性」
截止 2021 年 2 月 2 日,CVE 数据库中可检索到 53 个锁屏相关漏洞 —— 手机物理安全的保障措施之一

iOS 目前还存在哪些厂商故意设计的「以牺牲安全性」为代价换来「用户体验提升」的设计?
日历邀请 功能依然存在 垃圾邀请 风险删除照片进入垃圾箱并保留 30 天 功能存在敏感信息残留风险控制中心软关闭 Wi-Fi 功能WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法现在会返回常量值 02:00:00:00:00:00 。当运行 Android 6.0(API 级别 23)的设备发起后台 WLAN 或蓝牙扫描时,在外部设备看来,该操作的发起来源是一个 随机化 MAC 地址。0700)。
0750
file:// URI。SECCOMP) 过滤器来过滤所有应用。允许的系统调用列表仅限于通过 bionic 公开的系统调用。WebView 对象将在多进程模式下运行。网页内容在独立的进程中处理,此进程与包含应用的进程相隔离,以提高安全性。ANDROID_ID 的值在软件包卸载或重新安装时就不会发生变化。即使系统更新导致软件包签署密钥发生变化,ANDROID_ID 的值也不会变化。net.hostname 系统属性返回的结果为空,系统属性 net.dns1、net.dns2、net.dns3 和 net.dns4 不再可用。READ_CONTACTS 权限,查询联系人的使用情况数据得到的是 近似值 而不是精确值。中文翻译版滞后 2 个月!!!
Fixes listed in the public bulletin come from various different sources: the Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chip (SOC) manufacturers. For device manufacturers:
| iOS | Android | FreeBSD | Linux 内核 | |
|---|---|---|---|---|
| 高危漏洞占比 | 17.3% | 32.3% | 7.2% | 5.7% |
| CVSS 平均分 | 6.7 | 7.4 | 6.3 | 5.9 |
| 3年前CVSS平均分 | 6.8 | 8 | 6.2 | 5.9 |
| 近3年CVSS平均分 | 6.5 | 6.6 | 7.2 | 6 |
价格从 短期 来看是由 供需 决定, 长期 来看是围绕 价值 上下波动的。
iOS 和 Android 总体安全性「不相上下」,目前 iOS 稍占上风。
| 威胁 | iOS | Android |
|---|---|---|
| 钓鱼及鱼叉式(定向)钓鱼,(邮件、网页、文件) | √ | √ |
| 短信欺诈 (钓鱼) | √ | √ |
| 应用欺诈 (钓鱼) | √ | √ |
| 盗取上传通讯录 | √ | √ |
| 越狱、root、越狱伪装 | √ | √ |
| SSL漏洞利用 | √ | √ |
| 恶意配置文件 | √ | - |
| 邮件附件未加密 | √ | √ |
| 勒索软件 | √ | √ |
| 备份(数据)劫持 | √ | √ |
| 系统(设备)碎片化 | - | √ |
| 非官方应用(恶意捆绑) | √* | √ |
| 通话和短信记录上传 | - | √ |
App Store 审核通过后允许消费者下载安装使用App Store 审核,消费者可以直接下载安装使用

通过钓鱼邮件「诱骗」用户安装恶意配置文件。
iOS 的安全机制
root 权限代码执行权限
SDK 管理器Android SDK 目录
├── build-tools // 构建 Android 应用所需要的工具,建议总是使用最新版构建工具
├── emulator // 模拟器运行时环境相关工具
├── extras // 扩展开发包,如高版本的API在低版本中开发使用用到的兼容包v4、v7、v13等。也会存放Google提供的USB驱动,Intel提供的硬件加速附件工具包
├── fonts
├── licenses
├── patcher
├── platform-tools // 平台工具,包含 adb 等基本工具。每次更新都向后兼容旧的平台版本
├── platforms // 平台工具资源文件,配套 build-tools 版本
├── skins
├── sources
├── system-images // 已下载模拟器镜像
└── tools // 命令行工具,包括 ProGuard, avdmanager 等基本工具
Android SDK Manager 相结合,可在启用英特尔虚拟机的系统上更快地模拟 Android OS$SDK_ROOT/platform-tools/adb 的子命令提前在对应系统中新建系统环境变量 ANDROID_HOME 设置为 Android SDK 的根路径
# macOS && Linux
$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/emulator
# Windows
%ANDROID_HOME%/platform-tools:%ANDROID_HOME%/tools/bin:%ANDROID_HOME%/emulator
AVD Manager 先创建 Android 模拟器环境
Google Play 标志的硬件 Profile 表示支持 Google Play 相关 API 虚拟硬件特性支持Android 5.1 系统镜像
android dl.google.com 国内镜像Android SDK 安装路径 $ANDROID_HOME
API 版本号 的系统镜像压缩包文件
x86-27_r11.zip 为例x86 的目录$ANDROID_HOME/system-images/android-27 下包含 同名 x86 的子目录,形成如下目录层次结构android-27
└── google_apis
└── x86
AVD Manager 的镜像列表页面点击「刷新」按钮即可看到镜像已可用