获得对用于签署SkyAndroid应用程序包的RSA私钥的访问权限

2020-09-07 09:48:16 来源: INeng财经

在我们较早的文章 警告用户从其设备上卸载Sky应用程序之后,是时候看看这种攻击的技术重要性了。首先,攻击者在这里已经做了两件事,对于Play商店更新系统​​来说,每件事都很难做到:大概是通过获得对关联的Google帐户的访问权限来访问Sky的Play商店开发者控制台

获得对用于签署Sky Android应用程序包的RSA私钥的访问权限,或设法以其他方式生成或重现这些私钥

前者对安全性显然很重要,因为如果不能访问开发者控制台,就不可能将更新推送到现有应用程序。显然,恶意用户可以发布自己的应用程序,但他无法将更新推送到已经通过Play商店安装的现有应用程序中,除非他可以使用最初发布该应用程序的开发人员的帐户进行更新。

后者同样(如果不是更多的话)也很重要,是一项安全措施:即使攻击者获得了对您的开发者控制台的访问权限,但如果未使用与以前相同的密钥对现有应用程序进行签名,他们就无法将其推送到现有应用程序。此检查也会在每台Android设备上强制执行,这意味着即使Play Store实施中存在此安全漏洞,您自己的设备也会拒绝此更新!但是,如果私有签名密钥被泄露或访问,则所有赌注都关闭。

在目前的天空攻击的情况下,它很可能是 双方的开发者账户和私人签名密钥被泄露。在这一点上,如果有任何迹象表明实际的软件包本身已被盗用,则Google最安全的选择可能是对这些软件包使用其远程卸载触发器。Sky无疑会抵制这种情况,因为他们不想看到自己的应用程序从用户设备中消失。对于他们来说不幸的是,那已经很久了。这些用户 需要立即卸载该应用程序,因为Sky无法再继续使用这些密钥。

这是Android安全链(甚至在大多数基于证书的安全系统中)的最终问题。没有有效,广泛的密钥撤销系统。如果您的Android签名密钥遭到破坏,则信任链结束。您无法撤销已泄露的密钥,因此客户端将不再信任使用它签名的应用程序更新。另外(从安全性角度考虑不那么重要,从开发人员的角度来看更重要),也没有办法用新的密钥安全地替换这些密钥(同时确保攻击者无法用自己的密钥替换这些密钥)。

这对开发人员意味着什么?

采取所有合理的步骤来保护您的Google Play商店开发者帐户:

在帐户上使用两因素身份验证。

在包含身份验证器应用程序的手机上启用密码或PIN锁。如果输入备用电话号码,请考虑攻击者的安全风险,即通过社交工程破坏您的电话提供商,或破坏您的登录名以在您的帐户上发行新的SIM卡(以使他们获得一次性登录令牌)。

为您的开发人员帐户使用非常非常非常安全的密码,请勿在其他任何地方使用此密码。不要使用此帐户谷歌的 任何东西。仅从您自己的计算机登录,只能通过您控制的WPA-2(或更高级)加密的WiFi登录。如果您可以在一分钟内输入此密码,则表示密码不够安全。它也应该是随机的。随机姓名不是您伴侣的姓氏,后跟他们的出生年份。除非他们的名字是“ r $ kGmn9d4​​Fl9&* sEm.Xs2Fl0_3fGjdk”,并且他们的出生年份是“ hJfMn?32VwmndkD2lsk34Rojks83”

还要特别注意您的私人代码签名密钥:

由于某种原因,它被称为私有。安装您的应用程序的用户信任您,以确保此密钥安全。做到这一点,并毕生追求。您应该计划要死很多年,然后任何人都可以使用它。许多年可能比宇宙的寿命还要大。或至少证书上的有效期。

千万 不能 决定“只备份关键的Dropbox保管”(或任何其他云端或远程存储系统)。

不要让其他人访问密钥。如果您在团队中工作,您是否可以操作系统仅由一个人签署最终更新的系统?如果确实有必要,请共享密钥,并确保其他人采取同等级别的预防措施。

攻击者会一直攻击你的系统中最薄弱的环节,而将密码重置你的Dropbox帐户,如果它得到他们访问共享文件夹您保存您的私钥(和密码解密在相应的自述文件中的键,你就知道永远不会做,但无论如何都不会做),或者如果您附上了钥匙,也可能会窥探您的电子邮件。

保护具有非常强的随机密码密钥(还记得什么随机方式前讲座?) -你 不能在其他地方使用该密码。不要将此密码存储在攻击者可以访问的位置。请勿将其存放在钥匙旁边或附近。

将私钥存储在加密的USB闪存驱动器上,并在不使用时将其与计算机断开连接。然后在不使用该驱动器时将其放在安全的地方。将密钥的第二个副本存储在银行的保险箱中。显然,这将使用长而安全的随机密钥进行高度加密。

最后,尽管如此,我们都应该学习什么课程(也许Google开始思考)?

当前无法撤消已泄露的应用程序签名密钥。虽然可以说这是因为任何人都可以使用自己的密钥对应用程序进行签名,然后将其安装在Android上(因此,撤消密钥用途有限),但事实并非如此,因为Google一直在努力尝试在应用程序上强制进行 自动更新毫无戒心的用户。除非有可供开发人员使用的快速有效的密钥吊销系统,否则自动更新将带来巨大的安全风险。

开发人员无法从受损的签名密钥中恢复。也许Google应该审查签名系统,以便开发人员创建一个CA密钥,然后使用该CA密钥对其他密钥(例如其私有签名密钥)进行交叉签名,以便如果应用程序密钥遭到破坏,他们可以生成新的一个,然后使用其CA密钥对其进行签名。(这取决于开发人员理解这一点,并意识到他必须保护自己和家人的生活中的CA密钥,并“简单”地保护自己的生活中的应用程序签名密钥)

有问题的Sky应用程序对安装它们的设备具有相当宽泛的权限访问。也许开发人员应该停止使他们的应用成为有吸引力的目标,并停止在我们的设备上授予自己如此广泛的权限。大多数应用程序没有任何理由使用任何权限(也许除了能够访问SD卡之外,我认为应该将权限沙箱化为应用程序特定区域)

希望Google能够利用其远程卸载功能从用户设备中删除该应用程序,并以某种方式(通过电子邮件发送至其Gmail帐户)让他们知道发生了什么,并且Sky未能正确照管其密钥。这是Sky的主要尴尬,他们应该羞于垂头丧气,因为他们没有采取足够的预防措施来确保每个能够使用其签名密钥的人都有能力防止它落入错误的手中。

归根结底,最终用户的安全性会受到开发人员的失败的影响。由于这个原因,这样的安全漏洞是无法原谅的。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。