写在前:
世上没有完美无缺的东西。几年前,我开发并发布了几个适用于华为麒麟处理器的调度模块,出于顾虑,并没有将其开源,它的实现原理,是以漏洞利用的身份呈现的,我并没有给予它任何恶意行为,但也扮演着攻击者的身份。很多东西我想授之于鱼不如授之以渔,但奈何它的特殊性无法公开过多,这里不讲详细实现只能谈谈那些已经“公开”的,但也能抛砖引玉,引导一种思维。
有一些阐述可能不正确,也虚心接受指正,也请理性探讨。
【一些抛砖引玉的话】
华为的处理器调度和其他芯片厂商不同,由于麒麟处理器只供华为手机使用,所以华为将处理器调度分为 SOC层(处理器硬件上的基础硬调度) 内核层(扮演HAL角色) 系统层(iaware aps等控制驱动和应用组件),三者相辅相成,使系统调度具有非常高的优先级和控制能力。
而华为的调度可以通过修改配置文件而进行更改。很遗憾,EMUI9.1开始,华为对关键调度文件进行加密处理,EMUI11加入了校验和云控功能,如果你在之前的版本,你可以在以下系统目录查看研究配置文件
/product/etc/hwpg/
/product/etc/xml/
/vendor/etc/xml/
【从台上走到台下】
而我在开发调度时候发现仅仅修改那些配置文件,远达不到我想做的调度内容,不论从通用性还是扩展性来讲,而此,一个漏洞攻击就开始了。
而我利用的其一漏洞就是CVE202239000,通过赋予的权限和上电自启动能力,架空SuperCPU,APS系统调度,将控制权转放给调度模块,这也是为什么我的调度原生要求重启重启再重启原因。
而后又逐渐发现控制下层还有调度在影响干扰(嗯,还有高手[流汗滑稽])调度服务,导致我的调度不停获取前台Hit造成极大的内存性能开销(在22年12月版本中修复了这个问题)
CVE202248518漏洞是我修复上面所述问题的解法。通过欺骗启动信任列表和签名验证,将调度的修改直接视为HOTA修改,在上电时启动从而影响华为调度的初始化以及系统广播,实现调度的完全控制。
可能有些人拆包我的模块会发现,我是做的有音频相关的管理功能,这个功能也是利用CVE202248551的PCM驱动UAF漏洞,可以以此控制音频IC根据Decoder到DSP过程中的回报调整DSP等硬件的buffer,优先级。而此也误打误撞的绕过了安卓的SRC问题(至此dumpsys media.audio_flinger命令查出的不是硬件层真实的采样率了,此命令查出的结果也就无效了)
而调度的自适应功能是通过CVE202122466,CVE202122450漏洞实现的,利用这两个漏洞从而实现HIAI NPU分析加速,通过华为的应用预测优化能力变相的实现了调度自适应调整能力
【如今走向光明】
我将调度实现的“原理”在此阐述,也是希望这个攻击者走向阳光下。无需担心,调度并没有任何恶意行为,不会有类似于格机脚本那种恶意行为。
通过上述CVE编号可以查找对应修复时间,以上漏洞现在均修复完毕并公开于月度安全更新列表中。
而至此,会对调度产生什么影响?
会使调度那些深层的功能不启用,但仍能实现很多调度能力,如果你担忧安全性,推荐升级最新系统,如果你想体验调度,推荐不要将系统高于HarmonyOS 2.0 B268版本,EMUI更好。
希望,无限的围追堵截之下,你仍对刷机持一颗热爱的心。