Requests to non-existing pages that all include "undefined”
自2014年10月20日起,一些奇怪的请求出现在我们的日志中。它们每天增加到几十个左右,因此虽然不是大问题,但找出原因仍然很有趣。
早期版本:
1 2 3
| REQUEST[/en/undefinedsf_main.jsp?clientVersion=null&dlsource=null&CTID=null&userId=userIdFail&statsReporter=false] REFERER[http://colnect.com/en/coins]
REQUEST[/fr/undefined/GoogleExtension/deals.html?url=http://colnect.com&subid=STERKLY&appName=HypeNet&pos=2&frameId=buaovbluurbavptkwyaybzjrqweypsbavwrviv] REFERER[http://colnect.com/fr]
REQUEST[/br/stamps/undefined49507173c45043eba6dfb9da540e52de&chnl=slmbBRex&evt=DailyPing&prd=vbates&seg=1&ext=1&rnd=65983fb77b62e25cc2a8ef15af18273d] REFERER[http://colnect.com/br/stamps/countries] |
一些当前的:
1 2 3 4
| REQ[/ru/collectors/collector/undefined] REF[http://colnect.com/ru/collectors/collector/jokitsos]
REQ[/th/collectors/collector/undefined] REF[http://colnect.com/th/collectors/collector/VRABEC]
REQUEST[/en/account/undefined] REFERER[http://colnect.com/en/account/request_password]
REQUEST[/pt/stamps/undefined] REFERER[http://colnect.com/pt/stamps/years] |
某些请求是通过登录成员进行的,而有些则不是。
我猜想他们浏览器中的一些Javascript试图通过一些未初始化的变量(即"未定义")来调用url。
原因可能类似于对不存在的全部包含" 6_S3 _"(可能是恶意软件)的页面的奇怪请求,但我想知道这是否可能是不同的原因。
我确实怀疑这是我们客户端Javascript上的错误,因为每天从大约一百万的页面浏览量中,每天会产生数十个这样的请求。
有什么想法吗?值得追求吗?
- 没有相关代码,我们将无能为力。
-
您所说的相关代码是什么意思?这可能与我们这边的代码无关,而与来自客户端的请求有关。如果怀疑我们的Javascript代码,则可以在链接的REF []或REFERER []页面上找到它。
-
我认为用户不会手动输入该网址(除非有意破坏系统)。也许您使用JS生成了一些网址,并且某些变量未定义?对于仅具有.text()选项的项目,也许您指的是.val()。
-
由于我在代码中找不到能做到这一点的任何地方,我怀疑可能是第三方JS(GA / FB / ...)负责。这就是为什么我开始这个问题。
-
我认为您在某处说动态生成了url-但某些值可能未定义,因此您在请求中看到了\\'undefined \\'。并非所有客户端都必须有此问题,因为有时这取决于浏览器和版本。例如。 IE8(stackoverflow.com/questions/4715373/…)中未定义JSON。因此,也许您可??以检查是否所有这些错误请求都发生在某些特定的浏览器/客户端上。
-
使用Firebug进行用户交互调试,并查看在何处生成这种请求。这可能会有所帮助。
-
@spike用户代理来自各种浏览器(IE / FireFox / Chrome)和各种版本。 。
-
@HadiRj我熟悉调试工具,但无法重现该错误
-
@Collector,您说过您对客户端表示怀疑,因为"这将每天从大约一百万的页面浏览量中产生数十个这样的请求。"您还指出用户代理是多种多样的,因此它不是\\浏览器边缘的情况。恶意软件的可能性很小,尤其是在用户代理包括非Windows用户的情况下。如果您的应用程序为数百万人提供服务,那么就没有可能产生不良URL(或刷新页面并附加未知的标签)的极端情况,那么这听起来确实像是一些随机的不良浏览器扩展。
这是一个很大的问题,但这不是来自您。
这些是使用自签名根证书的Javascript注入攻击(客户端计算机恶意软件)。
具体来说,sf_main.html和deals.html已链接到Superfish,而Superfish最近随Lenovo一起提供。随着联想一直在推销其新的PC系列产品,最近有关攻击的报道也爆炸了。
这些中间人攻击始于劫持客户端的请求,然后注入HTML和Javascript。
undefined符号太多的原因是因为Superfish的名字真实,它正在寻找插件,扩展名和库,因此可以利用它们的预期名称,令牌和路径来利用它们。这是蛮力XSS。
哦,不,我该怎么办??
小。不多。
由于请求在客户端计算机上被劫持,并且通过http request劫持,您将不知道它们之间的区别。您可以尝试"钓鱼"某种特定的"指标",但现在您正在做反恶意软件的工作。
联想声称
SuperFish has completely disabled server side interactions (since
January) on all Lenovo products so that the software product is no
longer active, effectively disabling SuperFish for all products in the
market
虽然我相信中国的联想的诚意,而联想在西方世界具有重要的市场利益,但我却不相信中国的恶意软件公司Superfish的话。
与您的客户相比,这些攻击对您来说不是什么问题
除非您在大型银行或受欢迎的社交网站工作,否则像Superfish这样的恶意软件极不可能专门针对您。客户的银行帐户和社交网络帐户受到威胁,但不是因为您所做或可以采取的任何行动来阻止它。
一如既往,解决客户端钓鱼攻击的方法是对客户端进行良好的保护。
-
在您包含的任何链接中,我都没有发现有关"未定义"的任何信息出现在服务器日志中。您是如何得出结论的,有哪些证据可以证明这一结论?
-
@Collector,我断言1)这是JavaScript注入攻击,2)您注意到的许多引用(例如sf_main.html和deals.html)都与SuperFish相关联。您可以在我的答案superuser.com/questions/848853/中包含的此链接中找到
-
帖子中未提及undefined变量,但是您的症状是相同的。链接,链接的稀有性,以及在客户端计算机的证书上拥有中央授权机构而带来的JavaScript注入机会。
-
感谢您提供进一步的解释,但我仍然不知道这些问题是否是由恶意软件或有问题的插件/扩展程序引起的。我想最好的办法是将其记录在用户的会话中,然后在下一页上显示有关它的通知。有没有做过的网站?
-
@Collector,这是一个有趣的想法。我不能排除扩展方法。太多的恶意软件已成为特洛伊木马。您可以浏览的任何数据都会有所帮助。对于SuperFish,此站点会扫描客户端计算机上的恶意行为filippo.io/Badfish
-
恶意软件和扫描可能是罪魁祸首,但通常在某些扫描时间范围内,URL会出现多种变化。其余日志是否支持URL扫描的想法?即,被劫持的浏览器是提交给许多不同的错误URL还是仅提交给这个URL?如果访问者的访问量看起来像是一次点击,而不是一系列的钓鱼尝试……那么在客户端应用程序中生成的URL很有可能是一个问题。
-
@BenBrock,无法即使广泛研究日志,也可以使您对客户端发生的事情有丝毫的了解。是恶意软件吗?我们可以肯定。 Javascript注入只能从很多方面发生。 99%的时间是客户。请查看此Stack帖子,并密切注意url文件名,sf_main.html是一个非常不同的名称superuser.com/questions/848853/…
-
@Collector,您在诊断此问题上取得了任何进展吗?
-
我目前认为这是恶意软件或有问题的附件。无论如何,除了警告用户外,在客户端方面我无能为力。这样,我就停止了进一步分析情况。
Any ideas?
这里似乎有两个不同的选择:
您的代码中有错误,导致生成了错误的URL
有(搜索)机器人试图解析您的Javascript,但未能正确执行。
(客户端扩展正在引发麻烦)
要区分两者,您需要设置更具体的日志记录。例如,将用户代理添加到包含字符串undefined的任何日志行中将回答此问题。如果是您的代码导致问题,您还希望记录referer标头,因为它将显示在哪个页面上生成了错误的URL。
识别问题的另一种方法是,如果您的网站上运行了诸如Google Analytics(分析)之类的分析解决方案,则可以很容易地将报告限制为仅包含undefined的url \\。如果没有这样的请求,您可以得出结论认为它必须是机器人程序(因为它不会导致客户端分析代码运行),否则它将提供所有信息以标识导致此问题的原因。
最后,最好包含一个JavaScript错误记录解决方案(以最简单的形式是window.onerror处理程序,并带有对\\log.something的ajax请求。如果您的代码正在生成undefined \\,那么它\\'很可能也会触发一些错误。
Is it worth pursuing?
如果实际上向用户提供了无效页面,那么可以,这肯定是要进行调查的内容。
- 感谢您的回答和想法。是的,错误出现在Google Analytics(分析)上,但总共显示的网页少于<0.01%,这使我认为是客户端扩展/恶意软件执行了这些请求。通常,为Javascript设置适当的错误日志记录也是一个好主意。
-
尽管页面有时确实会出现在GA上,但大多数错误仅发生在服务器端,永远不会到达GA。我相信这一假设。
-
如果该网址导致来自服务器的错误页面-具体来说,是一个不产生GA跟踪代码的错误页面-那么,您仅会看到其中一部分击中了GA,这是有道理的。我敢打赌那些点击GA的用户是特定于所有URL的(某些东西会显示友好的" not found"错误消息)?