“语义攻击”是一种攻击,攻击者以某种方式使用计算基础设施/系统,使受害者误以为自己在做某事,但实际上在做其他事,而计算基础设施/系统却完全按照设计的方式运行。语义攻击通常涉及金融诈骗,攻击者试图欺骗受害者向其提供大量资金(例如,让受害者以为自己在投资)。例如,攻击者可能会试图说服用户他们正在浏览一个受信任的网站,即使他们并非如此。
语义攻击很难防御,因为它们利用的是计算机的正确操作。应对语义攻击的方法是帮助人类获得更多额外信息,以便当“奇怪”的事情发生时,人类将拥有更多信息,或者会收到警告,提示某些事情可能并非表面看起来那样。
一个例子是 URI,它们虽然是合法的,但可能会误导用户认为它们具有不同的含义。例如,看看这个 URI
http://www.bloomberg.com@www.badguy.com |
另一个例子是同形异义字,特别是国际同形异义字。某些字母彼此看起来相似,这些也可能被利用。例如,由于 0(零)和 O(字母 O)看起来彼此相似,用户可能没有意识到 WWW.BLOOMBERG.COM 和 WWW.BL00MBERG.COM 是不同的网址。其他看起来相似的字母包括 1(一)和 l(小写字母 L)。如果允许使用国际字符,情况会更糟。例如,许多西里尔字母看起来与罗马字母基本相同,但计算机将以不同的方式对待它们。目前,大多数系统不允许在主机名中使用国际字符,但出于各种充分的理由,人们普遍认为未来有必要支持它们。一种提议的解决方案是使用不同的颜色显示来自不同代码区域的字母 - 这样,用户可以从视觉上获得更多信息。如果用户查看 URI,他们有望注意到奇怪的颜色。[Gabrilovich 2002] 然而,这确实显示了语义攻击的本质 - 它很难防御,正是因为计算机工作正常。