sim卡|安卓重大锁屏密码漏洞,国产手机有几个中招了?( 二 )


安卓的锁屏 , 就这???
此时已经输入了 PUK 码 , 重置 PIN 码中 ▼

谷歌的反应
按这 BUG 来说 , 那岂不是所有人的安卓设备都有安全性风险?
认识到这件事严重性的小哥也是第一时间把漏洞发给了 Google 。
照到他自己的说法 , 这是他迄今为止最简单的一次报告了 。。。 一共就五个步骤 , 两分钟不到的时间就可以复现 。
于是也顺便去查了一下谷歌的 “赏金榜单” , 依据谷歌的说法 , 这种高危漏洞能拿到最高 10w 美元的奖励 。

果然 , 比起一个大胆的想法 。。。 还是走正规路子来钱快 。
但谷歌就不一样了 , 虽然收到这个堪称 “十万火急” 的 Bug, 但它的表现还是一如既往的风轻云淡 。
开口就是 :“你这个 Bug 以前有人已经汇报过了( 虽然我们还没修 ) , 我们不鼓励重复的 Bug 汇报 ”( 10W 美元别想了!)
除了态度以外 , 行动也在摆烂 , 小哥提交 Bug 三个月后 , 谷歌依旧没有修好这个问题 , 一直到 9 月的安全补丁更新 , 小哥发现自己的问题还是能触发 。。。
期间他自己还跑到谷歌办公室去了一趟 , 当场给员工当场演示此 Bug , 但依旧没说好什么时候可以修复 。。。

最后忍无可忍的小哥给谷歌下了 “ 最后通牒 ” 。
你再不修 , 我就准备在 10 月 15 号公布这个问题辣!

从这句话开始 , 谷歌的态度突然变了 , 不但改口说可以给小哥7w 美元的奖励( 虽然你不是第一个发现的人 , 但是感谢有你我们才开始修理这个 Bug ) , 也开始积极沟通修 Bug 的时间 。

最后 , 终于在 11 月 5 日的安全更新中这个问题得到了修复 , 漏洞编号 CVE-2022-20465 。

我们的手机 , 大抵可能应该也许是更加安全了 。
BUG 从哪里来?手机看上去是告一段落了 , 那这 Bug 到底是个咋回事呢?
托尼自己也不是非常专业的程序员 , 在看了小哥总结 + 谷歌修改的 AOSP 源码之后 ,
试着稍微那么理解了一下下 , 抛砖引玉将给大家看看 , 感觉讲的不太好的差友 , 也欢迎在评论区补充 。
这次谷歌改动的地方还挺多的 ▼

简单来说就是在安卓上有个叫做 “ 安全屏幕 ”的概念 , 它包括了我们的锁屏密码 , 我们的指纹数据或者是面部数据 , 也包括今天的 “ 罪魁祸首 ” —— SIM 卡 PIN 码以及 SIM 卡的 PUK 码 。
这些安全屏幕呢 , 是实时更新 , 覆盖显示 , 就像下图一样 , 虽然我的手机锁屏了 , 但是在插入加了锁的 SIM 卡之后 , SIM 卡 PIN 码锁就覆盖了手机的密码锁 。
反应有点慢 , 中间剪了一段加速 ▼

而当一个 “ 安全屏幕 ” 完成了它的历史使命之后就要被销毁 , 就比如说我们输入密码解锁屏幕 , 输入 SIM 卡的 PIN 码解锁手机SIM 卡锁 。
负责销毁它的函数 , 叫做
getKeyguardSecurityCallback().dismiss()函数( 下面简称 dismiss( ) )

但是到这问题出现了 , .dismiss() 它虽然负责销毁安全屏幕 , 可是它不负责消除哪一个安全屏幕 。

也就是说不论是锁屏 , 还是 PUK 锁 , 碰上哪个就会清理掉哪个 。。。

而偏偏这个安全屏幕会处在一个 “ 实时更新 ” 的状态 —— 因为手机会时不时检测 SIM 卡的状态 。
所以在我们通过 PUK 锁重置完 SIM 卡 PIN 码之后 , 本来要销毁 PIN 码锁这个安全屏幕的.dismiss() 函数可能就会先撞上 “指纹锁屏” 或者 “密码锁屏” 这个安全屏幕 , 然后把它先行销毁 。
啪 , 我们的手机就解锁了 。

这就这次漏洞的成因 , 而安卓后续的 Bug 修改方式呢则是很简单 , 准备给 .dismiss() 函数增加 “ 认识能力 ” 。