搜索引擎的索引和搜索很容易受到文本编码攻击。攻击者通过使用不常见的编码形式对文本进行扰动,从而可以操纵搜索引擎的特定查询结果。这种攻击已经在商业搜索引擎(Google和Bing)和开源搜索引擎(Elasticsearch)上成功实现。只要用户复制-粘贴攻击者提供的文本并搜索,就会受到高排名搜索结果的欺骗。这种攻击同样适用于基于大型语言模型(LLM)的聊天搜索,包括Bing的GPT-4和Google的Bard聊天机器人。进一步的研究还证实,还存在针对文本摘要总结和抄袭检测的攻击变体。相关代码位于:www.github.com/nickboucher/search-engine-attacks
互联网加剧了虚假信息的威胁。全球互联网构建了一个易于扩展的平台,可被用于传播有针对性的虚假信息,即虚假信息操纵。与许多文本处理系统一样,搜索引擎也是基于二进制编码来理解文本的。每个编码文本实例都可能存在不同方式编码的相同字形的替代表示形式。当搜索引擎无法将不同表示关联到同一呈现文本时,就容易受到针对索引和搜索的对抗性操纵攻击。
利用对抗性扰动攻击,攻击者能够提交搜索词,要求不同搜索引擎返回特定的结果,同时阻止相关内容按照预期被纳入索引。攻击者可以借助这些手法误导用户,使他们相信搜索结果广泛支持虚假陈述,从而推动虚假信息的传播。此外,这些攻击还可以用于有意地限制对文本文件(如法庭披露或专利文件)的搜索能力,以达到对抗性目的。
本文对攻击者如何通过文本编码来操纵网络信息的索引和检索进行了研究。首先,分析了攻击者执行以下行为的能力,以便深入探讨他们如何操纵搜索引擎:
1)隐藏(Hiding):即在良性查询结果中隐藏对抗性内容;
2)呈现(Surfacing):即通过对经过扰动的查询进行操作,使其能够产生对抗性结果。
通过本文所提出的对抗性方法,攻击者能够发布一些被搜索引擎索引的恶意内容,但这些内容仅会出现在对抗性查询的搜索结果中。下图呈现了一个示例,其中只有当用户使用特定的恶意查询进行搜索时,恶意内容才会出现。通过实验分析了不同类型的搜索引擎,包括商业搜索引擎(如Bing和Google)以及开源搜索引擎(如Elasticsearch)在这种新型威胁下的表现。此外,还评估了不同的机器学习系统受到本研究所提出的攻击的影响,这些系统通常用于支持搜索引擎的运作。特别关注了攻击对于Bing与GPT-4、Google的Bard模型、文本摘要模型以及抄袭检测模型等集成系统的影响。
在系统中,文本需要以某种二进制方式来进行表示。为了实现这一点,软件设计者首先选择一种文本规范,例如Unicode。这个规范将字符映射为被称为点代码(code point)的数字。随后,这些点代码会根据所选的编码(比如UTF-8)被转化为二进制表示形式。
在呈现文本时,根据所选编码,点代码会被解释为对应的二进制值,然后通过文本规范来解析成字符。接着系统会解析任何控制字符,以实现特殊的行为。最后通过选定的字体,将字符呈现为可见的字形。
渲染文本与编码表示之间并不是一对一的映射关系;换句话说,相同的渲染文本可以由同一文本规范内的多个不同编码值来表示。以下类别表示了难以察觉的扰动变化,也被称为不良字符(bad character)攻击,它们可以用于使用不同的值对相同的可视文本进行编码:
1)不可见字符攻击
不可见字符(Invisible Character)是一种在没有可见字形的情况下呈现的字符。它们通常在特定上下文中用于格式化目的,而且对于这些上下文之外的文本没有影响。在Unicode中的一个例子是零宽度空格符(ZWSP,Zero-Width Space)。攻击者可以随意注入不可见字符,以干扰文本编码,而不会对视觉效果产生影响。
2)同形字攻击
同形字(Homoglyph)是指那些呈现相同或几乎相同字形的字符。在Unicode中的一个例子是拉丁文的H和西里尔文的Н。同形字符可以相互替换,从而产生难以感知的扰动。
3)重新排序攻击
重新排序(Reordering)通过改变文本的显示顺序,并同时更改文本的编码顺来抵消效果,从而利用双向文本支持(bidirectional text support)。在Unicode中的示例可以使用从右到左覆盖(RLO,Right-to-Left Override)控制字符来实现。由于编码值是在不改变渲染文本的情况下进行操作的,因此重新排序也是一种难以察觉的扰动形式。
4)删除攻击
删除攻击(Deletion)利用了控制字符,通过在任意字符后注入等效数量的删除控制字符来删除相邻文本。在Unicode中的一个示例是删除(DEL)字符。删除功能非常强大,因为它们允许将字符注入文本而不渲染它们。
本文提出了一种威胁模型,其中攻击者旨在将特定搜索引擎查询的高排名结果插入到网页中,该查询由目标用户执行。高排名在此定义为出现在默认的第一页搜索结果中。攻击者没有能力修改搜索引擎,也无法预知目标用户将使用哪个搜索引擎。攻击者可以创建公共网站,这些网站将被搜索引擎索引,但无法令这些网站在索引中超过攻击者无法控制的其他类似网站。这些攻击者希望他们的搜索结果能够优先于其他结果显示,以便能够将与虚假信息相矛盾的搜索结果挤出,并将由攻击者控制的虚假信息放在前面。
在没有防御机制的情况下,搜索引擎会根据编码值来理解索引内容和搜索查询。换句话说,即使在视觉上相同的文本,无论是否带有难以察觉的扰动,搜索引擎会将其解释为不同的值。攻击者可以利用这一点,在搜索引擎的索引中嵌入恶意内容,然后将该内容呈现给使用带有扰动字符串进行搜索的目标用户。这样的内容也不太可能出现在未经干扰的查询中。为了说明这种攻击,考虑以下示例:
1)攻击者正在进行虚假信息宣传,以欺骗目标用户相信一种未经证实的商品可以有效治疗某种疾病。攻击者创建了多个虚假网站来证明该商品的疗效;
2)接着攻击者对这些网站进行了修改,使得商品名称在每次出现时都被加入相同难以感知的扰动;
3)攻击者将这些网站提交给多个主要商业搜索引擎,让它们进行索引;
4)一旦攻击者确认这些网站已经被索引,就会在社交媒体平台上用商品名称的扰动版本进行宣传;
5)用用户看到了攻击者的社交媒体帖子,并决定使用搜索引擎来获取更多关于这种商品的信息。他将社交媒体中的商品名称复制到搜索栏中,而不是重新输入完整的商品名称;
6)不知不觉中,目标用户已经搜索了商品名称的恶意版本。搜索引擎将返回攻击者的虚假网站作为最先结果,因为它们是唯一以这种干扰的方式进行搜索的结果;
7)户现在被误导,认为大多数互联网引擎的搜索结果都支持攻击者的虚假信息。
通过大规模利用这些技术,攻击者可以显著地提升搜索引擎的恶意搜索结果,以支持更广泛的虚假信息活动。在这种情况下,并不需要欺骗所有潜在的目标用户。一些用户可能会重新输入搜索查询,以消除干扰,而其他一些用户可能会直接访问可信的信息来源,而不是通过搜索引擎。只要有一部分用户使用了复制+粘贴或点击搜索功能,并且主要查看排名靠前的结果,这种攻击就会对某些目标造成影响。
实验测试了搜索引擎在索引(即解析爬取的内容)和查询(即执行搜索)过程中是否会受到难以察觉的扰动攻击的影响。定义了三种不同的指标来评估不可察觉扰动对搜索引擎的影响:
破坏性(Disruption)指标:衡量良性查询和受干扰查询之间搜索引擎结果页面(SERP,Search Engine Results Page)的不匹配程度;
隐藏性(Hiding)指标:衡量通过良性查询是否能够发现恶意网页;
呈现性(Surfacing)指标:衡量通过扰动查询是否能够发现恶意网页。
呈现性(Surfacing)指标,衡量通过扰动查询是否能够发现恶意网页。
破坏性是一种广泛衡量搜索引擎是否受到扰动影响的指标。隐藏性是更为具体的指标,用于确定是否可以将索引内容从搜索引擎典型用户的搜索结果中隐藏。而呈现性指标则用于确定是否可以将目标内容显示在目标用户的搜索结果中。一个完全容易受到攻击的平台会同时具备这些属性。
1)破坏性:需要对搜索引擎结果页面(SERP)中的良性查询和难以察觉的受干扰查询之间的差异进行分析。
2)隐藏性:使用隐藏性指标来分析攻击者从搜索引擎索引中隐藏内容的能力。直观上,较高的隐藏分数意味着攻击者可以通过添加难以感知的扰动,阻止恶意内容出现在正常的搜索结果中。
3)呈现性:类似地,使用呈现性分数来分析攻击者在搜索引擎结果中显示特定页面,以满足他们所选择的查询。较高的呈现性分数意味着攻击者可以以高置信度呈现给定扰动查询的扰动内容。
评估针对三种常见搜索引擎的攻击:Google、Bing和Elasticsearch。其中,Google和Bing是两个最常见的商业搜索引擎,它们是黑盒系统,而Elasticsearch是一个开源的搜索引擎。
评估分析了一个扰动版本的简易维基百科(Simple Wikipedia)。简易维基百科的文章使用较短的句子、更简单的单词和语法,旨在帮助儿童和成人学习语言。在本文撰写时,它包含224,219篇文章,相比大型主要维基百科实例,更适用于实验。实验使用了八种扰动攻击,代表了四类难以察觉的扰动:不可见字符、同形字、重新排序和删除。下表描述了这些扰动。根据测试,删除攻击在大多数Web浏览器中会产生视觉假象(visual artifact)。