CSP:如何调试违规:eval:"script-sample: var KERNEL = ..."
CSP: How to debug violation: eval: "script-sample: var KERNEL = ..."
我们有一个 Web 服务,它具有非常严格的 CSP header,可以阻止 eval
等等。我们收到许多 CSP 违规报告,其中包括以下信息:
{
"csp-report": {
"blocked-uri": "eval",
"column-number": 61,
"document-uri": "https://example.com/path/to/something",
"line-number": 56,
"original-policy": "default-src 'self'; connect-src 'self' https://www.google-analytics.com; script-src 'self' 'report-sample' https://www.google-analytics.com; sandbox allow-downloads allow-popups allow-scripts allow-same-origin allow-top-navigation allow-forms allow-modals allow-popups-to-escape-sandbox allow-presentation; img-src * data:; style-src * 'unsafe-inline'; font-src * data: about:; media-src *; frame-src * data:; report-uri https://example.com/:reportcspviolation",
"referrer": "",
"script-sample": "var KERNEL = C6A44CB_AD42_4731_A544_3F…",
"source-file": "blob:https://example.com/b402b32e-ebf5-4103-b8e8-4cd3c1f56e2a",
"violated-directive": "script-src"
}
}
并且 document-uri
处的文档没有任何内联 JavaScript。并且整个服务源代码不包含大写字母KERNEL
,因此我们的服务无法发出。 document-uri
处的文档也没有使用任何 <iframe>
元素,因此错误也不能由任何嵌套文档引起。
所有报告似乎都包含完全相同的字母 var KERNEL = C6A44CB_AD42_4731_A544_3F
(Firefox 添加省略号并且 Chrome 结束示例 as-is)。
我从以下 UA 字符串中看到了类似的 CSP 报告(按照这种情况发生的频率排序):
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
很明显这与浏览器兼容性无关。我无法通过使用任何浏览器并加载 document-uri
.
指向的地址来重现错误
至少 95% 的 var KERNEL =
报告错误是由 Firefox 85.0 发出的。
为什么source-file
在blob:
方案中?这是一些 well-known 通过某些浏览器扩展程序破解 运行 JavaScript 代码吗?
我最好的猜测是这是由一些制作不当的浏览器扩展引起的,但有什么办法可以找出真正的原因吗?
All reports seem to include exactly same letters var KERNEL = C6A44CB_AD42_4731_A544_3F
此类签名属于 malicious browser plugin 及其附属病毒。
Why is the source-file in blob: scheme? Is this some well-known hack to run JavaScript code by some browser extension?
我不知道这是不是一个众所周知的黑客攻击,但在浏览器行为中观察到一些奇怪的事情。
您的 CSP 不允许 blob:
,因此必须阻止 blob:https://example.com/b402b32e-ebf5-4103-b8e8-4cd3c1f56e2a
,我们应该观察 "blocked-uri": "blob"
。但是我们看到"blocked-uri": "eval"
,这意味着blob:https://example.com/b402b32e-ebf5-4103-b8e8-4cd3c1f56e2a
被执行了,它的第56行的eval被阻塞了。
注:代码中uses eval()
func calls and it uses blob:-URL
上面浏览器插件的脚本
是的,这些应该被您的 CSP 阻止,但是在 blob
中阻止 eval
对于像 script-src 'self' 'report-sample' https://www.google-analytics.com
.
这样的 CSP 来说是无稽之谈
我们有一个 Web 服务,它具有非常严格的 CSP header,可以阻止 eval
等等。我们收到许多 CSP 违规报告,其中包括以下信息:
{
"csp-report": {
"blocked-uri": "eval",
"column-number": 61,
"document-uri": "https://example.com/path/to/something",
"line-number": 56,
"original-policy": "default-src 'self'; connect-src 'self' https://www.google-analytics.com; script-src 'self' 'report-sample' https://www.google-analytics.com; sandbox allow-downloads allow-popups allow-scripts allow-same-origin allow-top-navigation allow-forms allow-modals allow-popups-to-escape-sandbox allow-presentation; img-src * data:; style-src * 'unsafe-inline'; font-src * data: about:; media-src *; frame-src * data:; report-uri https://example.com/:reportcspviolation",
"referrer": "",
"script-sample": "var KERNEL = C6A44CB_AD42_4731_A544_3F…",
"source-file": "blob:https://example.com/b402b32e-ebf5-4103-b8e8-4cd3c1f56e2a",
"violated-directive": "script-src"
}
}
并且 document-uri
处的文档没有任何内联 JavaScript。并且整个服务源代码不包含大写字母KERNEL
,因此我们的服务无法发出。 document-uri
处的文档也没有使用任何 <iframe>
元素,因此错误也不能由任何嵌套文档引起。
所有报告似乎都包含完全相同的字母 var KERNEL = C6A44CB_AD42_4731_A544_3F
(Firefox 添加省略号并且 Chrome 结束示例 as-is)。
我从以下 UA 字符串中看到了类似的 CSP 报告(按照这种情况发生的频率排序):
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
很明显这与浏览器兼容性无关。我无法通过使用任何浏览器并加载 document-uri
.
至少 95% 的 var KERNEL =
报告错误是由 Firefox 85.0 发出的。
为什么source-file
在blob:
方案中?这是一些 well-known 通过某些浏览器扩展程序破解 运行 JavaScript 代码吗?
我最好的猜测是这是由一些制作不当的浏览器扩展引起的,但有什么办法可以找出真正的原因吗?
All reports seem to include exactly same letters var KERNEL = C6A44CB_AD42_4731_A544_3F
此类签名属于 malicious browser plugin 及其附属病毒。
Why is the source-file in blob: scheme? Is this some well-known hack to run JavaScript code by some browser extension?
我不知道这是不是一个众所周知的黑客攻击,但在浏览器行为中观察到一些奇怪的事情。
您的 CSP 不允许 blob:
,因此必须阻止 blob:https://example.com/b402b32e-ebf5-4103-b8e8-4cd3c1f56e2a
,我们应该观察 "blocked-uri": "blob"
。但是我们看到"blocked-uri": "eval"
,这意味着blob:https://example.com/b402b32e-ebf5-4103-b8e8-4cd3c1f56e2a
被执行了,它的第56行的eval被阻塞了。
注:代码中uses eval()
func calls and it uses blob:-URL
上面浏览器插件的脚本
是的,这些应该被您的 CSP 阻止,但是在 blob
中阻止 eval
对于像 script-src 'self' 'report-sample' https://www.google-analytics.com
.