Huawei MT2 thermal problem

公开发布: http://www.wooyun.org/bugs/wooyun-2014-074213

Huawei MT2 手机使用[Generic Thermal sysfs driver]对设备进行温度监控,该驱动提对设备温度实时监控的功能,当指定监控设备达到温度设定值时底层进程会通过执行相应配置参数来降低设备温度,通常的方式为限制CPU或GPU频率等等,从而可以防止手机过热而损害某些部件的风险。

Huawei MT2 手机底层守护进程为: /system/bin/thermalm

MT2厂商配置文件:

sampling 5000
[systemh]
sampling 1000
thresholds 43 46 50 64
thresholds_clr 41 44 47 58
actions app+ucurrent+bcurrent+cpu+gpu ucurrent+bcurrent+cpu+gpu cpu+gpu shutdown
action_info 1+900+512+0+0 900+256+1196000+355000 798000+266000 30000

以上配置文件表示当温度达到43℃时,系统守护进程会执行app+ucurrent+bcurrent+cpu+gpu action,action 参数: 1+900+512+0+0。 其中第一个参数: app action 会执行 ACTION: APP – Setting APP mitigation to 1。

Android中提供了Intent机制来协助应用间或者应用程序内部的交互与通讯,例如:当我们从桌面启动应用的时候,桌面管理器既是通过Intent调用的方式启动第三方程序。(详细描述:http://developer.android.com/reference/android/content/Intent.html)

桌面管理器通过类似代码调用第三方应用:


Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"));
intent.setFlags(0x10200000);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(intent);

而常见的APP也用同样的方式调用其它第三方应用,因为Intent有不同的构造调用方式调用代码不尽相同。在华为MT2手机上任何APP应用如果以Intent的方式调用其它第三方应用,如不是以系统调用的Flags(0×10200000)就会导致当温度到达43℃时系统会执行ACTION: APP – Setting APP mitigation to 1,由于Huawei温控守护进程设计缺陷会导致被调用APP程序立即崩溃退出。例如:启动微信向好友发送图片,选择相机拍摄图片(此方式即使用Intent调用方式)。正常手机在工作一段时间以后温度会达到34℃-37℃,相机程序启动后会因为图像运算而提高手机温度,只要手机温度满足43℃随即会导致系统相机崩溃,其它类似场景:当在微信中查看新闻时选择用浏览器的方式打开同样也是使用Intent方式调用也会导致浏览器崩溃。Huawei MT2手机上任意APP程序只要使用Intent方式交互(非0×10200000 Flags)都会同样的问题导致应用崩溃,理论上华为任意型号手机使用thermalm守护进程且配置文件为app+1均有导致任意应用崩溃问题。

测试代码:
测试手机: Huawei MT2
ROM版本: MT2-L05V100R001C17B111


Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
startActivity(intent);

使用以上代码将调用系统的自带相机功能,系统自带相机启动后大约在10-15秒(视环境温度而定)左右时间即会因为图像处理运算将手机温度逐渐提高至43℃,随后系统温度守护进程会因执行设计缺陷的mitigation功能导致系统相机崩溃。

[备注:未测试其它华为手机,如果使用同样配置文件可能有相同的问题]