点击和.deb软件包之间有哪些安全差异?

安装一个随机(恶意?)的.deb文件可能是危险的,因为它会授予所有应用程序和守护进程安装的特权,因为.deb文件中有一些配置要求在安装过程中用户验证密码后应用。
点击包不需要密码(据我测试的情况)。
点击包对系统/用户数据来说会更安全还是相同?为什么?
以下是一些很好回答的方面:
  • 点击和deb是基于同一个系统(dpkg)吗?
  • AppArmor能否提供应用程序的root访问权限,而无需密码或其他方式?
  • 当安装应用程序时,用户是否会被提示接受应用程序的访问权限(类似Android的例子:此应用程序将能够扫描您的/home目录并访问网络),或者在需要权限时(类似浏览器的例子:请求使用摄像头的权限)运行时会出现提示?
  • 与这个问题相近:.apk和click文件是否以相同的方式工作(关于策略和用户故事)?
  • 主要问题是:一个应用程序是否可以在没有明确告知我的情况下,通过click将所有私人数据发送到网络上,或者它是否至少需要经过用户验证的权限,或者它是否会被阻止在沙盒中运行?
  • 可以说click包更加强制限制(限制更多事项),但更加安全吗?

我想要添加标签“点击”,但是声望不够,所以无法这样做。最后一句话应该是斜体的。 - cm-t
标签 click-packages 已经可用。 - Pandya
注意:点击包正在开发中,我希望能够得到下一个稳定点击包的目标答案。 - cm-t
2个回答

注意:我在Ubuntu安全团队工作,并参与设计了Ubuntu的应用程序限制故事。我为了更清晰地表达,重新组织了问题。
问:“相对于系统和用户数据来说,点击包是否会更安全,还是一样安全?”
答:总体而言,相对于系统和用户数据,点击包比deb包更安全。
点击包不包括像deb包那样在安装时以root身份运行的维护脚本。点击包只是被解压,然后使用系统提供的钩子(如果由点击声明)来执行操作。例如,点击包可能声明使用桌面钩子来生成桌面文件,或者使用AppArmor钩子来生成应用程序的AppArmor配置文件。因为deb包装有维护脚本的概念,旨在允许对软件或系统进行广泛定制,所以deb包应该只从可信任的来源安装,例如来自Ubuntu等发行版的签名存档。点击包可以直接安装,您可以相当确信安装包不会破坏您的系统。然而,这只是故事的一部分--如果您从不受信任的来源安装点击包,不能保证它会在清单中声明正确的限制,因此虽然安装是可以的,但运行可能不是(即,软件可能在没有限制的情况下运行,从而能够窃取您的数据或以您的用户身份运行程序)。
点击的真正力量在于与具有严格政策的软件仓库结合使用。例如,从Ubuntu应用商店安装的点击包的安全性通常比从可信存档安装的deb包要高。这是因为在Ubuntu应用商店中,信任模型是将应用程序视为不受信任*,并采取政策和检查措施以确保商店中的点击包具有适当的安全清单,因此在非常严格的限制下运行。相比之下,在Ubuntu存档中的deb包中,信任模型是将软件和deb打包视为可信任的,并且通常情况下软件不会在限制下运行(尽管有很多例外情况,其中一个AppArmor配置文件与软件一起提供以防止安全漏洞)。
  • 可信包也可以通过Ubuntu应用商店交付。虽然不常见,但它们通常由Canonical开发,并且可能或可能不在限制下运行。

回答您的具体问题:

问:点击基于与deb相同的系统吗?

答:点击的底层包格式是deb。然而,点击打包更简单,它使用声明性清单和钩子,而不是传统的打包文件和维护者脚本。

问:AppArmor能否在没有用户交互的情况下为应用程序提供特权访问?

AppArmor是一个强大的根权限管理工具,可以根据定义的安全策略允许或拒绝对系统资源(文件、DBus、网络等)的访问。一个click包本身并不需要提供AppArmor安全清单,也不需要提供一个“安全”的AppArmor安全清单。系统的安全性取决于click和应用商店的政策的结合。通过Ubuntu应用商店交付的click包将使用非常严格的AppArmor策略,不允许在后台进行特权操作(例如,在此策略下运行的应用程序无法在系统上执行程序、访问您的Facebook帐户、窃取您的GPG或SSH密钥、操纵网络等)。
用户在安装时是否会被提示授予应用程序访问权限,类似于Android?(例如,“此应用程序能够扫描您的/home目录并访问网络”)

A: 不需要。可以使用低级工具自动安装点击包。在Ubuntu上,应该通过Ubuntu应用商店安装点击包(参见上文),由于Ubuntu应用商店的政策结合了点击功能和Ubuntu系统,所以不需要点击即可进行无上下文的安装提示。Ubuntu之所以能够做到这一点,是因为从Ubuntu应用商店安装的应用程序在受限制的封闭环境下运行(即它们不能在幕后做坏事),当应用程序需要额外访问权限时,会使用受控API进行提示。

在特权API的情况下,我们有信任助手的概念,用户可以得到上下文提示来允许或拒绝访问(带有(可选的)可撤销缓存,以便用户不需要每次都被询问)。例如,如果应用程序需要访问位置服务(一个受信任的助手),当应用程序尝试使用位置服务时,用户将被提示允许访问,这样用户就可以做出明智的决策。对于视频和音频录制也是如此。通常,我们根本不需要安全提示,可以根据用户与应用程序的交互来允许访问。例如,如果应用程序想要上传一张图片,会弹出对话框选择图片。在幕后,由于应用程序无法访问~/Pictures目录,它将使用内容中心API,该API将启动图库文件选择器,供用户选择要上传的图片。然后,内容中心会从图库中获取图片并提供给应用程序。这种方式下,没有安全对话框,只有用户的自然交互,但在幕后,有一个隐含的信任决策。
Q:关于这个问题:.apk和click在政策和用户体验方面是否有类似的语言?

A: 不,由于上述原因,没有安装提示。Android权限和Ubuntu定义的click软件包的安全权限有一些相似之处,但是它们是不同的,并且实现方式也不同。

Q: 具体来说,使用click,一个应用程序能否在我不知情的情况下将我的所有私人数据发送到网络上,或者它会以某种方式受限制以防止这种情况发生?

A: 如果您从不受信任的来源安装了一个click软件包,那么是的,它可以做任何事情。如果您从Ubuntu应用商店安装了一个click软件包,那么不,一个应用程序不能将您的所有数据发送到网络上,因为它无法访问这些数据。当然,一个应用程序可以表现出一种行为,实际上却做另一种事情,所以如果用户授予位置服务的访问权限或者给予应用程序对图片的访问权限,那么该应用程序可能会滥用这些数据,但这就是评级/评论和应用商店安全政策发挥作用的地方。如果有人举报此类应用程序,将会进行调查。如果合适,该应用程序将被从商店中移除,并且将从已安装该应用程序的任何设备中移除,并且开发者的应用商店访问权限将被撤销。

Q: 可以说click软件包比deb软件包更安全,但由于受到更多限制,所以功能更弱?

A: 从上面可以看出,答案并不简单。单击本身可能会传送可以执行任何操作的软件。点击打包格式是故意通用的,可以以任何方式使用,并不仅限于Ubuntu。对于Ubuntu来说,click、Ubuntu API、AppArmor和应用商店策略的组合为开发人员提供了一个非常强大的环境,使他们能够以安全且易于使用的方式向用户提供应用程序。应用程序本身的效用取决于底层系统向应用程序提供的API。在Ubuntu的首批手机上提供的初始API集将允许开发人员使用丰富的API和SDK创建各种有趣和实用的应用程序。随着我们向前推进,这些API将在广度和效用上扩展,以更好地支持开发人员和用户。


1这句话确实让人担忧。它的意思是,如果应用程序已安装在某些设备上,Canonical将有能力远程卸载这些应用程序,而无需用户的许可。 - user180409
Ubuntu应用商店将具备这种能力。只有在涉及到恶意代码时,才会使用这种能力。我不想在这里制定政策,因为还有许多要考虑的因素,但底线是,没有非常充分的理由,这不应该发生。 - jdstrand
2我知道这是为了用户的安全(其他应用商店也这样做),但有些用户不喜欢这种“杀死开关”,因为这意味着公司可以远程卸载应用程序(或更多),即使出于安全原因。我认为开发人员应该仔细考虑如何实现这一点,以避免争议。也许禁用应用程序而不是删除它,允许用户自行卸载或重新启用它,并显示非常突出的警告...作为建议。 - user180409
如果Click打包了自己的依赖项,那么依赖项的安全更新怎么办呢?如果bash deb被更新,所有使用bash的其他软件包自然会使用新版本。然而,如果一个Click应用程序打包了bash,除非应用程序开发者注意包含更新的bash,否则bug仍然存在,这还假设应用程序开发者经常更新软件包。请注意,在这种情况下,假设bash不是一个基本软件包。 - Hendy Irawan
这听起来太酷了!甚至比安卓系统还要好!安卓权限现在变得有点像最终用户许可协议,只需点击“是”而不阅读... - Merlijn Sebrechts
我完全同意Bruno Nova的评论。无论如何,我都不希望第三方有能力删除我决定安装的应用程序。这个“功能”肯定应该有一个简单的方法来禁用它。例如,如果美国司法部告诉Canonical某个加密库应该被禁用,甚至更糟的是篡改了呢?Canonical甚至都不能警告我。为了真正保护用户,这种事情应该在技术上是不可能做到的。 除此之外,回答非常出色,应该成为一篇博客文章的一部分。 - opensas

我将尽力回答关于安全性和点击包的一些最重要的问题。
  • 一个应用程序能否在不明确告知我的情况下,通过一次点击将我所有的私人数据发送到网络上?

    • 点击应用程序将在限制环境下运行。这意味着该应用程序被阻止进行恶意操作:它只能访问自己的私有目录。
  • 应用程序是否可以安装后拥有root权限?而无需密码或特定提示?

    • ...
  • 用户是否会被提示接受应用程序的权限?何时会提示?

    • 点击应用程序将访问用户允许应用程序使用的功能(注意:当前/每日Ubuntu Touch版本尚未提供提示)
  • 点击包和deb包是否基于相同的系统?

    • Debian(.deb)打包完全不同。然而,如果您的应用程序是使用Ubuntu SDK创建的,则无需使用Debian打包,而可以使用更易于使用且对最终用户更安全的Click打包。
  • 类似于上面的问题,来进行比较:.apk(Android)和click包是否以相同的方式工作?

    • Android包和Ubuntu Click包的工作方式类似,每个应用程序都有自己的存储数据的空间,并且(理想情况下)被禁止直接访问其他应用程序的数据。目前,Android包还可以从SD卡或内部存储读取数据,这里没有访问限制。Ubuntu Click包也必须为特定功能请求权限。
  • 可以说点击包功能更弱(限制更多),但更安全吗?

    • ...
出于这些原因,Click packages非常安全,并且发布它们的审核流程要简单得多。 来源:

请根据您认为最好的方式完成这个回答。 - cm-t