Chrome 和 Safari 不遵守 HPKP
Chrome and Safari not honorring HPKP
我将 HPKP header 添加到我的站点,但 Chrome 或 Safari 不支持它。我通过设置代理并转到 chrome://net-internals/#hsts
并查找我的域来手动测试它 - 但没有找到。 HPKP 似乎是正确的,我还使用 HPKP toolset 对其进行了测试,所以我知道它是有效的。
我在想我的流程可能做了一些奇怪的事情。我有一个网络应用程序,通过 myapp.example.com
提供服务。登录时,应用程序将用户重定向到 authserver.example.com/begin
以启动 OpenID Connect 授权代码流。 HPKP header 仅从 authserver.example.com/begin
返回,我认为这可能是问题所在。我在 HPKP header 中有 include-subdomain
,所以我认为这不是问题所在。
这是 HPKP header(为便于阅读而添加的换行符):
public-key-pins:max-age=864000;includeSubDomains; \
pin-sha256="bcppaSjDk7AM8C/13vyGOR+EJHDYzv9/liatMm4fLdE="; \
pin-sha256="cJjqBxF88mhfexjIArmQxvZFqWQa45p40n05C6X/rNI="; \
report-uri="https://reporturl.example"
谢谢!
I added HPKP header to my site, but it is not honored by Chrome or Safari... I tested it manually by setting a proxy...
RFC 7469, Public Key Pinning Extension for HTTP,有点偷偷地从你身边溜走。 IETF 发布了它并覆盖了它,因此攻击者可以破坏已知的良好 pinset。它曾在标准中以名称 "override" 提及,但未提供详细信息。 IETF 也未能在安全注意事项部分发布讨论。
更重要的是,您设置的代理参与了覆盖。不管它是错误的代理、由移动设备 OEM 安装的代理证书,还是由欺骗用户安装它的攻击者控制的代理。 Web 安全模型和标准允许这样做。他们接受拦截并认为这是一个有效的用例。
他们做的另一件事是将损坏的插针组报告设置为不得或不应该。这意味着用户代理也是掩盖事实的同谋。这也没有在安全注意事项部分中讨论。他们真的不想让人们知道他们所谓的安全连接被拦截了。
避免它的最佳方法是移出 Web 安全模型。当存在安全问题时,不要使用基于浏览器的应用程序。使用混合应用程序并自己执行固定。您的混合应用程序可以托管 WebView 控件或视图,但仍可以访问通道以验证参数。另见 OWASP's Certificate and Public Key Pinning.
另请参阅 IETF 邮件列表中的 Comments on draft-ietf-websec-key-pinning。评论中的建议之一是将标题更改为 "Public Key Pinning Extension for HTTP with Overrides" 以突出显示该功能。毫不奇怪,这不是他们想要的。他们试图在用户不知情的情况下偷偷进行。
这是来自 RFC 6479 的相关文本:
2.7. Interactions with Preloaded Pin Lists
UAs MAY choose to implement additional sources of pinning
information, such as through built-in lists of pinning information.
Such UAs should allow users to override such additional sources,
including disabling them from consideration.
The effective policy for a Known Pinned Host that has both built-in
Pins and Pins from previously observed PKP header response fields is
implementation-defined.
本地安装的 CA(就像您所说的用于代理的那些 运行)覆盖任何 HPKP 检查。
鉴于它们的流行,这是必要的,以免完全破坏互联网:大公司使用的防病毒软件和代理基本上是通过本地颁发的证书的 MITM https 流量,否则它们无法读取流量。
有些人认为在本地安装 CA 需要访问您的机器,到那时它就结束了,但对我来说,这仍然大大降低了 HPKP 的保护,而且使用 HPKP 的风险很高,表示我真的不喜欢它。
我将 HPKP header 添加到我的站点,但 Chrome 或 Safari 不支持它。我通过设置代理并转到 chrome://net-internals/#hsts
并查找我的域来手动测试它 - 但没有找到。 HPKP 似乎是正确的,我还使用 HPKP toolset 对其进行了测试,所以我知道它是有效的。
我在想我的流程可能做了一些奇怪的事情。我有一个网络应用程序,通过 myapp.example.com
提供服务。登录时,应用程序将用户重定向到 authserver.example.com/begin
以启动 OpenID Connect 授权代码流。 HPKP header 仅从 authserver.example.com/begin
返回,我认为这可能是问题所在。我在 HPKP header 中有 include-subdomain
,所以我认为这不是问题所在。
这是 HPKP header(为便于阅读而添加的换行符):
public-key-pins:max-age=864000;includeSubDomains; \
pin-sha256="bcppaSjDk7AM8C/13vyGOR+EJHDYzv9/liatMm4fLdE="; \
pin-sha256="cJjqBxF88mhfexjIArmQxvZFqWQa45p40n05C6X/rNI="; \
report-uri="https://reporturl.example"
谢谢!
I added HPKP header to my site, but it is not honored by Chrome or Safari... I tested it manually by setting a proxy...
RFC 7469, Public Key Pinning Extension for HTTP,有点偷偷地从你身边溜走。 IETF 发布了它并覆盖了它,因此攻击者可以破坏已知的良好 pinset。它曾在标准中以名称 "override" 提及,但未提供详细信息。 IETF 也未能在安全注意事项部分发布讨论。
更重要的是,您设置的代理参与了覆盖。不管它是错误的代理、由移动设备 OEM 安装的代理证书,还是由欺骗用户安装它的攻击者控制的代理。 Web 安全模型和标准允许这样做。他们接受拦截并认为这是一个有效的用例。
他们做的另一件事是将损坏的插针组报告设置为不得或不应该。这意味着用户代理也是掩盖事实的同谋。这也没有在安全注意事项部分中讨论。他们真的不想让人们知道他们所谓的安全连接被拦截了。
避免它的最佳方法是移出 Web 安全模型。当存在安全问题时,不要使用基于浏览器的应用程序。使用混合应用程序并自己执行固定。您的混合应用程序可以托管 WebView 控件或视图,但仍可以访问通道以验证参数。另见 OWASP's Certificate and Public Key Pinning.
另请参阅 IETF 邮件列表中的 Comments on draft-ietf-websec-key-pinning。评论中的建议之一是将标题更改为 "Public Key Pinning Extension for HTTP with Overrides" 以突出显示该功能。毫不奇怪,这不是他们想要的。他们试图在用户不知情的情况下偷偷进行。
这是来自 RFC 6479 的相关文本:
2.7. Interactions with Preloaded Pin Lists
UAs MAY choose to implement additional sources of pinning information, such as through built-in lists of pinning information. Such UAs should allow users to override such additional sources, including disabling them from consideration.
The effective policy for a Known Pinned Host that has both built-in Pins and Pins from previously observed PKP header response fields is implementation-defined.
本地安装的 CA(就像您所说的用于代理的那些 运行)覆盖任何 HPKP 检查。
鉴于它们的流行,这是必要的,以免完全破坏互联网:大公司使用的防病毒软件和代理基本上是通过本地颁发的证书的 MITM https 流量,否则它们无法读取流量。
有些人认为在本地安装 CA 需要访问您的机器,到那时它就结束了,但对我来说,这仍然大大降低了 HPKP 的保护,而且使用 HPKP 的风险很高,表示我真的不喜欢它。