什么是劫持?

信息安全 Web应用程序 javascript
2021-08-18 19:01:28

我刚刚听到一个非常混乱的新闻广播,关于赛门铁克警告世界关于劫持的危险。新闻阅读器表示,无论这意味着什么,它都涉及“破解表格,而不是网站”。

我搜索了一下,发现了一篇关于它的赛门铁克博客文章,他们在其中描述了攻击如下:

  1. 攻击者将恶意JavaScript“注入”到目标网页
  2. 用户在该网页上填写表格
  3. JavaScript 将输入的数据发送到攻击者的服务器。

但是,我想说的是,如果攻击者对服务器上的代码有写访问权限,那么您最不关心的是(而不是实际的漏洞——无论给予他们访问权限的是什么)。

为什么劫持是一件大事(这是在我居住的国家新闻上),而不是大量网站(根据赛门铁克的说法,其中包括英国航空公司)有一个大得离谱的漏洞,允许攻击者访问他们的服务器?

4个回答

您所指的赛门铁克文章就是这样

看图_

形象的

第 1 点通常是安全研究人员最感兴趣的,因为这就是漏洞所在。

第 2 点和第 3 点仅显示了此类漏洞可能发生的情况。例如,JavaScript 可用于网络钓鱼攻击(显示虚假表单)或读取用户在表单中输入的任何数据。这就是赛门铁克所说的形式劫持,但它当然不是什么新鲜事。

他们的文章还有一个部分“网站是如何被入侵的?”,您可能会感兴趣。

漏洞确实包括更改服务器端代码的选项,尽管不一定是主应用程序,但尤其是在 JavaScript 依赖项中。

包含 3rd 方 JavaScript 的问题当然也不是什么新鲜事。Burp 例如将其称为Cross-domain script include,并且OWASP也会对此发出警告。包含第 3 方脚本始终需要完全信任第 3 方以及对其安全过程的信任。

为什么劫持很重要

赛门铁克的营销效果好吗?

不需要直接访问服务器

在攻击者无法访问服务器的情况下,恶意 javascript 可以通过多种方式最终出现在网页上。

  • 该网站的作者可能从不可靠的来源链接到图书馆
    • 例如,Web 开发人员 A 喜欢 my-site.com 上的图像轮播并直接链接到它 - 现在 my-site.com 的所有者可以随时修改该脚本,从而可能添加恶意代码。
  • 该网站的作者可能从不可靠的来源复制了一些 javascript
    • 例如,Web 开发人员 B 正在寻找一个库来将摄氏温度转换为华氏温度。他们在 free.javascriptlib.zz 上找到了一个可以完成这项工作的脚本,但没有注意到它包含恶意代码,因为脚本本身被混淆了。
  • 最终用户可能会通过使用不可信的浏览器扩展程序或书签来破坏自己。
    • 例如,Alice 在她的浏览器中添加了一个按钮,该按钮为她提供了一个表情符号键盘,但它也在当前页面中插入了恶意代码。
  • 最终用户可能是 DNS 欺骗的受害者。
  • ……等等等等。

这些类型的攻击的另一个问题是它们很难被检测到。Javascript 是在客户端执行的,因此这些都不会引发有关网站被入侵的标志:受影响的用户不太可能收到任何关于他们的详细信息已被盗的警告。


特别是关于英国航空公司的漏洞,BBC 在这里写了一篇推测原因的文章:https ://www.bbc.co.uk/news/technology-45446529

在其中,他们认为这很可能是一个第三方脚本,并引用了另一个关于 Ticketmaster 的例子,其中“现场客户服务聊天机器人被标记为潜在原因”。

我同意。Formjacking 不是漏洞,而是一种攻击,如果攻击者已经对受害者的 webroot 或另一个站点的 webroot 具有写访问权限,则可以执行该攻击,该站点对受害者具有完全信任。

因此,如果受害者的 webroot 是安全的,那么 Formjacking 也可能是一个问题,但它们会动态包含第三方代码或只是尝试提供广告,这也经常导致格式错误的信任关系。

Formjacking 很有趣,因为攻击的受害者是公司的客户,攻击者的目标是,像 Magecart 这样的组织已经赚了很多钱。

看来赛门铁克确实过分简化了“formjacking”的整个问题。我第一次读它时,我得到了和你一样的结论。

但这里需要关注的问题是,这些恶意有效载荷是在攻击者无需访问其目标服务器的情况下注入的。这就是为什么它们被称为供应链攻击

对 Ticketmaster、British Airways、OXO、Copay、Gate.io 的攻击都是通过相同的方法实现的 - 损害第三方将恶意代码下游注入其目标。

就像之前在这个帖子中所说的那样,使用第三方脚本是这些攻击中最常见的情况,但并不是唯一的。对 Copay的攻击是通过将恶意代码插入事件流中来实现的,事件流是 Copay 加密钱包的依赖项。

考虑到平均网络应用程序有超过 1000 个依赖项,难怪这会引起人们的注意,并且该公司发布了包含恶意代码的自己产品的版本。虽然这种攻击不符合“formjacking”MO,但它确实具有通过受感染的第三方插入恶意代码而不是直接破坏目标公司的相同原理。