A fundamental premise of SMS One-Time Password (OTP) is that the used pseudo-random numbers (PRNs) are uniquely unpredictable for each login session. Hence, the process of generating PRNs is the most critical step in the OTP authentication. An improper implementation of the pseudo-random number generator (PRNG) will result in predictable or even static OTP values, making them vulnerable to potential attacks. In this paper, we present a vulnerability study against PRNGs implemented for Android apps. A key challenge is that PRNGs are typically implemented on the server-side, and thus the source code is not accessible. To resolve this issue, we build an analysis tool, \sysname, to assess implementations of the PRNGs in an automated manner without the source code requirement. Through reverse engineering, \sysname identifies the apps using SMS OTP and triggers each app's login functionality to retrieve OTP values. It further assesses the randomness of the OTP values to identify vulnerable PRNGs. By analyzing 6,431 commercially used Android apps downloaded from \tool{Google Play} and \tool{Tencent Myapp}, \sysname identified 399 vulnerable apps that generate predictable OTP values. Even worse, 194 vulnerable apps use the OTP authentication alone without any additional security mechanisms, leading to insecure authentication against guessing attacks and replay attacks.
翻译:SMS 单时密码( OTP) 的基本前提是, 使用过的假随机数字( PRN) 对每次登录会具有独特的不可预测性。 因此, 生成 PPRN 的过程是 OTP 认证中最重要的一步 。 假随机数字生成器( PRNG) 的不适当实施将产生可预见甚至静态的 OTP 值, 使其容易受到潜在袭击。 本文中, 我们针对为 Android 应用程序实施的 PROD 软件进行一项脆弱性研究。 一个关键的挑战就是 PRON 通常在服务器上实施, 因此源代码无法获取 。 为了解决这个问题, 我们建立一个分析工具,\sysname, 以自动方式评估 PPRNNP 执行情况, 而无需源代码要求 。 通过反向工程,\sysname 识别假的应用程序, 并触发每个应用程序的日志功能来检索 OTP 值 。 它进一步评估了 OTP 值的随机性, 以识别脆弱的 PRNGs 。 通过分析 6, 431 商业上使用的以及从工具下载的机器人应用程序 {Google Play} (Gogle Play) 3\ ad ad adstalstal adstal adstal adstal adstage) ad apps, laveilviews