AD

Samsung_KNOX_OTP_可信域栈溢出

KNOX,是三星的一款基于开源Android平台的安全解决方案,可以认为是一个安全桌面应用,用户通过打开应用,输入口令即可访问安全桌面内的应用。安全桌面内只能安装经过三星安全认证后的应用。

三星手机上的KNOX有一个扩展功能,提供了一个可信域/trustzone,允许生成OPT令牌,令牌本身在可信域中的应用生成,结合TEEUIDfffffffff0000000000000000000001e)。可以利用OTP访问进行通信。
trustlet支持的许多命令必须解包或者打包一个令牌,通过调用函数“otp_unwrap”和“otp_wrap”来实现。这两个函数在尝试打包或者解包一个令牌时,会将内部OTP令牌数据复制到基于本地堆栈的缓冲区。但是,使用了用户缓冲区中提供的缓冲区大小数据来执行,该缓冲区大小/长度的指定根据调用代码的路径而改变。并且缓冲区的大小不会进行验证。攻击者可以利用该BUG,提交比堆栈缓冲区更大/更长的字节,导致用户控制的OTP令牌数据溢出。在三星SM-G925V设备上的MobiCore trustlet中没有堆栈cookie,任何用户都可以访问到OTP服务,包括在系统中的“untrusted_app”。利用这两点,用户可以将权限提升至TrustZone TEE
研究人员已经开发了一个小脚本,可以利用OTP_GENERATE_OTP命令生成超过缓冲区大小的数据,从而导致OTP trustlet崩溃。

POC
https://github.com/i1ikey0u/pub1ic_POC/blob/master/Samsung_KNOX_OTP_POC.txt

附录:
Trusted Execution Environment (TEE) 的解决方案,命名为“ARM TrustZone
ARM定制了可以远程轻松管控TEE一个重量级的名叫"Mobicore"sandboxed,通过"Mobicore"可以轻松的选择生产iOS 或者 Android设备。


参考:https://packetstormsecurity.com/files/140146/Samsung-Devices-KNOX-Extensions-OTP-TrustZone-Trustlet-Stack-Buffer-Overflow.html

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

多种方法绕过POWERSHELL的执行策略