7.16. 防御语义攻击

“语义攻击”是一种攻击,攻击者以某种方式使用计算基础设施/系统,使受害者误以为自己在做某事,但实际上在做其他事,而计算基础设施/系统却完全按照设计的方式运行。语义攻击通常涉及金融诈骗,攻击者试图欺骗受害者向其提供大量资金(例如,让受害者以为自己在投资)。例如,攻击者可能会试图说服用户他们正在浏览一个受信任的网站,即使他们并非如此。

语义攻击很难防御,因为它们利用的是计算机的正确操作。应对语义攻击的方法是帮助人类获得更多额外信息,以便当“奇怪”的事情发生时,人类将拥有更多信息,或者会收到警告,提示某些事情可能并非表面看起来那样。

一个例子是 URI,它们虽然是合法的,但可能会误导用户认为它们具有不同的含义。例如,看看这个 URI
  http://www.bloomberg.com@www.badguy.com
如果用户点击了该 URI,他们可能会认为自己将访问彭博社(提供金融商品新闻),但实际上他们将访问 www.badguy.com(并提供用户名 www.bloomberg.com,www.badguy.com 会方便地忽略它)。如果 badguy.com 网站随后模仿 bloomberg.com 网站,用户可能会确信他们看到的是真实网站(并根据攻击者控制的信息做出投资决策)。这取决于 URI 以不寻常的方式被使用 - 可点击的 URI 可以包含用户名,但通常不会。针对这种情况的一个解决方案是让 Web 浏览器检测到此类不寻常的 URI 并创建一个弹出确认小部件,显示“您即将以用户 www.bloomberg.com 的身份登录 www.badguy.com;您希望继续吗?” 如果该小部件允许用户更改这些条目,则它为用户提供了额外的功能,并提供了针对该攻击的保护。

另一个例子是同形异义字,特别是国际同形异义字。某些字母彼此看起来相似,这些也可能被利用。例如,由于 0(零)和 O(字母 O)看起来彼此相似,用户可能没有意识到 WWW.BLOOMBERG.COM 和 WWW.BL00MBERG.COM 是不同的网址。其他看起来相似的字母包括 1(一)和 l(小写字母 L)。如果允许使用国际字符,情况会更糟。例如,许多西里尔字母看起来与罗马字母基本相同,但计算机将以不同的方式对待它们。目前,大多数系统不允许在主机名中使用国际字符,但出于各种充分的理由,人们普遍认为未来有必要支持它们。一种提议的解决方案是使用不同的颜色显示来自不同代码区域的字母 - 这样,用户可以从视觉上获得更多信息。如果用户查看 URI,他们有望注意到奇怪的颜色。[Gabrilovich 2002] 然而,这确实显示了语义攻击的本质 - 它很难防御,正是因为计算机工作正常。