【发布时间】:2016-10-17 10:42:13
【问题描述】:
对于Android签名验证及其漏洞,我有很多疑问需要解决。
为应用程序生成 apk 后,我们可以解压缩 apk 并使用 apktool 编辑资源文件。当我们重新打包已编辑的 apk 时,它会丢失其签名。我可以使用 jarsigner 和我在生成 apk 时使用的我自己的私钥对未签名的 apk 进行签名。我在 playstore 中找到了一个名为 zipsigner 的应用程序,它可以用来签署这种未签名的 apk。
那么当这个 zipsigner 对未签名的 apk 签名时,这个 apk 是用我的同一个私钥还是用不同的密钥签名的?因为我的 META-INF 文件夹仍然包含 XXX.SF 和 XXX.RSA 文件,其中包含我的私钥信息。如果它使用相同的私钥,那么新的 apk 将是我的应用程序的升级,或者如果它是不同的密钥,我将拥有两个具有相同名称的不同应用程序。
从上述情况来看,在重新打包时,恶意软件可能会包含在我的 apk 中。 Android 的签名验证机制似乎存在漏洞,其中 META-INF 文件夹内文件的消息摘要不包含在 MANIFEST.MF 和 XXX.SF 文件中。这为任何人提供了在这些文件夹中包含恶意软件代码、重新打包 apk 并使用 zipsigner 应用程序对其进行签名的可能性。
我正在寻找一种解决方案,可以防止将文件添加到 META-INF 文件夹中,我从下面的博客中找到了一个。但我无法理解解决方案的重点。这看起来更像是一个研究主题,因此互联网上没有太多可用的信息。有人可以尝试找出博客中指定的解决方案。博客链接在问题下方指定。
http://blog.trustlook.com/2015/09/09/android-signature-verification-vulnerability-and-exploitation/
【问题讨论】: