GateKeeper允许我安装任何东西,无需检查


9

我可以从自定义网站下载应用程序并运行它们,即使我的网闸设置位于“仅AppStore”也是如此。这是我的应用程序-甚至没有签名。

这可能是什么原因?我可以在所有3台Mac电脑上重现此行为。


2
您如何下载和扩展应用程序?
Gordon Davisson

通过smb:// server文件位置。将它们复制到我的桌面上。在其他机器上,这会正确触发安全机制。在我的机器上,即使我拥有“仅AppStore”,也可以使用相同的文件,相同的方式,而对安装和运行没有任何限制。神秘。
JasonGenX 2013年

2
如果通过http下载相同的文件会怎样?
13年

Answers:


7

这是一种设计状态功能,管理员用户始终可以覆盖Gatekeeper并通过在Finder中右键单击应用程序来打开应用程序。

管理员用户还可以更改Gatekeeper设置或完全禁用它,因此呈现一次性白名单对话框以确保管理员用户打算允许不合规(未签名)的行为(至少在我看来)没有真正的危害(至少在我看来)或非Mac App Store)应用程序运行。

Apple关于Gatekeeper的培训对话框-来自support.apple.com/kb/HT5290

现在,如果您找到了一种非管理员用户绕过Gatekeeper的方法,那么我希望向Apple提出一个安全漏洞,一旦他们修补了由于实施错误而导致政策应用无法运行的漏洞,便可以从中发现漏洞。

Apple深入记录了此功能,详细介绍了如何将应用程序明确列入白名单。

Gatekeeper不是恶意软件防护,也不是黑名单。它是一组策略,允许首先启动经过正确签名的应用程序和/或验证Mac App Store收据。如果管理员用户明确启动并批准运行不兼容的软件,则说明您存在教育或政策问题,而不是发现Gatekeeper中的某些缺陷。

详细地,我总结了Apple帮助的相关部分(大部分内容是复制的),在白名单中列出了任何应用程序,以便Gatekeeper可以不受阻碍和无提示地运行它:

如何从身份不明的开发人员打开应用程序并将其从Gatekeeper中豁免

如果您确信从Internet下载的应用程序是最新版本并且是您信任的来源,则可以按照以下步骤从身份不明的开发人员处打开应用程序。

重要提示:某些正在从开发人员处经过Apple筛选的应用程序中,正在获取开发人员ID签名的过程中,双击它们时将显示“打开”选项。

注意:在大多数情况下,您只需对Mac上的所有用户帐户执行一次以下步骤:

  • 在Finder中,按住Control键单击或右键单击该应用程序的图标。
  • 从出现的上下文菜单的顶部选择“打开”。
  • 在对话框中单击“打开”。如果出现提示,请输入管理员名称和密码。

注意:如果有一个显示多个Gatekeeper对话框的应用程序,则可以临时使用Gatekeeper的“始终”选项。确保还原以前带回的Gatekeeper功能的Gatekeeper选项。

您可以通过不向不知道此功能的用户分发管理员用户名和密码来轻松地控制哪些人可以将应用程序列入白名单,还可以通过终端机或配置文件管理器以及其他托管设置软件(如JAMF的Casper)来管理网守。您还可以审核计算机中是否有列入白名单的软件,以定期重置允许的应用程序列表,并确定谁在行使此功能,以防您希望更改策略和习惯。


是否有可以重置此一次性对话框的设置?这是每个应用程序吗?如何识别应用程序?名称?路径?如果我选择一次打开“ MyApp.app”,则无论GateKeeper设置如何,“ MyApp.app”的所有后续下载和安装都会成功吗?
JasonGenX

每个用户都有存储在/ var / db / SystemPolicy中的不同规则-因此,您将需要繁重的工作来擦除它并重新开始,但是您可以删除特定的规则,spctl以便spctl --assess -v /Applications/Whatever.app向您显示是允许还是拒绝它,并spctl --remove /Applications/Whatever.app会重置特定应用程序的“对话框”和状态。我使用工具来收集系统上的所有应用程序,以便可以在需要时使用简短的脚本来审核使用情况并更正错误。
bmike

但是,根据戈登的回答,这也取决于设置的隔离位,因此,仅因为GateKeeper没有白名单条目(或将其删除),就需要重置隔离位或删除应用以续订“关守”对话框并打开保护。
bmike

10

通过SMB下载文件不会触发隔离,并且由于未隔离该应用,因此不会检查网守策略。我不确定为什么在其他计算机上将其标记为已隔离...

要随时检查隔离,请使用以下ls -ld@命令来查找com.apple.quarantine属性:

$ ls -ld@ /Applications/TextWrangler.app
drwxrwxr-x@ 3 gordon  staff  102 Apr 30  2012 /Applications/TextWrangler.app
    com.apple.FinderInfo     32 
    com.apple.quarantine     57 

如果该隔离属性附加到了应用程序,则将检查网守策略。如果没有,它不会。有趣的问题是,为什么隔离它在其他计算机上,并且如果在分发应用程序时使用此命令在各个点检查应用程序,则可以确定何时附加属性(以及附加属性的原因)。

编辑:苹果知识库文章HT5290的“单击此处以获取更多详细信息”部分中有与此相关的注释

重要提示:开发人员ID签名适用于从Internet下载的应用。除非这些应用程序最初是从Internet下载的,否则其他来源的应用程序(例如文件服务器,外部驱动器或光盘)将被豁免。


Gatekeeper与隔离区不同,尽管它们共同帮助防止未经签名和/或不是来自Mac App Store的新软件的意外运行。有关详细信息,请参见我的答案。
bmike

1
@bmike:实际上,网守是隔离系统的扩展;如果您下载了某个应用程序,然后运行该应用程序,xattr -d com.apple.quarantine即使它违反了网守策略,也可以将其打开。
Gordon Davisson

您已经可以打开任何违反网守策略的应用程序。您只需要(可能是一个管理对话框),然后就有机会将策略应用列入白名单。您是说非管理员用户可以发出一个命令,如果您只有Mac App Store或只有签名的应用程序会绕过检查?
bmike

1
@bmike:是的,我刚刚测试了从非管理员帐户下载,隔离和运行未签名的应用程序,尽管将Gatekeeper设置为仅Mac App Store模式,它仍然可以正常工作。但是我不会认为这是一个重大的安全漏洞,因为如果一个不正当行为可以诱使用户运行这样的命令,那么他们可以将其诱使成任何事情,并且无论如何,用户注定要失败(而且,由于他们不是管理员,他们所能损坏的只是他们自己的帐户)。
Gordon Davisson

1
这个。隔离区与Gatekeeper不同,但是Gatekeeper依赖于来自Quarantine的元数据,该元数据作为扩展属性元数据附加到下载的文件中。如果我可以授予赏金,我将在这里授予。
丹尼尔

4

如果启用了此隐藏的首选项,则还将禁用Gatekeeper:

defaults write com.apple.LaunchServices LSQuarantine -bool false

或OS X允许打开所有应用程序,而与“系统偏好设置”中的设置无关。


糟糕,我完全错过了这一点,并将同一件事作为一个单独的答案发布了。现在正在删除…
TJ Luoma

2

Gatekeeper阻止通过双击运行应用程序,但是您始终可以通过从上下文菜单中选择“ 打开”来覆盖它。

如果可以通过双击运行下载的未签名应用程序,则这是Gatekeeper的问题。文件将其隔离状态存储在名为com.apple.quarantine扩展属性中。如果出于某种原因从下载的文件中清除了此属性,则Gatekeeper将把下载的文件与计算机上的其他文件一样。因此,我建议如果安装了Xcode ,则下载程序然后在Terminal中使用将是一个很好的诊断工具。xattr -l filename

如果通过菜单中的“打开”命令运行它们,则这是设计的行为。请注意,从菜单运行程序后,无论您的Gatekeeper设置如何,都可以通过双击永久启用该程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.