【发布时间】:2015-04-07 19:50:04
【问题描述】:
我正在使用 Chrome Native Messaging 开发一个应用程序,该应用程序通过 Chrome 扩展程序启动。
我的问题是:如何确保宿主应用程序与我提供的完全相同?
我需要确保扩展调用的应用程序的真实性。如果我无权读取注册表或检查是否有更改,我该如何获取它?
【问题讨论】:
标签: google-chrome-extension chrome-native-messaging
我正在使用 Chrome Native Messaging 开发一个应用程序,该应用程序通过 Chrome 扩展程序启动。
我的问题是:如何确保宿主应用程序与我提供的完全相同?
我需要确保扩展调用的应用程序的真实性。如果我无权读取注册表或检查是否有更改,我该如何获取它?
【问题讨论】:
标签: google-chrome-extension chrome-native-messaging
这是一个很好的问题,我猜答案是“很遗憾,你不能”。
实现某种加密散列(例如 Chrome 用来验证扩展文件的散列)会很有趣,但这不是一个非常强大的保证。
考虑(所有这些假设):
保护 Chrome 扩展程序/应用程序很容易,因为您依赖的唯一“库”/运行时是 Chrome 本身(并且您信任它)。一个原生应用可以依赖系统上的很多很多东西(比如已经提到的库),你如何跟踪?
无论如何,集思广益似乎是一件有趣的事情。看看 Chrome bug tracker 是否已经有类似的东西,如果没有 - 尝试提出功能请求。也许可以尝试一些与 Chromium 相关的邮件列表来询问开发人员。
【讨论】:
我知道这是一篇较旧的帖子,但我认为值得分享 Chromium 团队对我提交的错误的官方回复:https://bugs.chromium.org/p/chromium/issues/detail?id=514936
可以修改用户计算机上的注册表或 FS 的攻击者也可以修改 chrome 二进制文件,因此此类攻击者可以通过修改 chrome 代码来禁用在 chrome 中实现的任何类型的验证。因此,chrome 必须信任 FS(以及来自本地机器的任何东西)。
【讨论】:
如果我正确理解了这个问题,解决方案可能是
重要的是,您的注册表号应该是安全的,并且客户端计算机无法从可执行文件中获取它(使用正确的签名可以实现)
由于 chrome 停止了对 Applet 的支持,我在 chrome 中为智能卡读卡器实现了相同的功能
唯一的漏洞是,客户端机器可以在一些工具的帮助下跟踪每个请求的发送
如果您能够使用一些 httpOnly Cookie(客户端机器无法读取)或密码机制使您与服务器的可执行通信安全,那么您很可能是一个可以实现的安全解决方案
【讨论】: