2 月 13 日消息,本周早些时候,软件工程师保罗・巴特勒(Paul Butler)发表了一篇题为“通过表情符号走私任意数据”的博客文章。他在文章中展示了一种他自己开发的工具,该工具可以让用户自行实现这一操作,并详细解释了该工具的工作原理。
这一漏洞源于 Unicode 的一个基本缺陷 —— 通过不将某些数据包含在渲染流程中,可以在任何 Unicode 字符中隐藏数据字节。Unicode 包含一个渲染命令,允许在该命令之后捆绑其他数据,但这些数据不会被渲染。利用这一特性,用户可以在 Unicode 字符中创建隐藏信息。
那么,这种在 Unicode 字符中捆绑隐藏信息的能力是否是一个严重问题呢?大概率不是。尽管普通用户无法看到这些秘密信息,但计算机系统仍然能够正常识别它们。巴特勒指出,这一特性仍然可能被滥用,例如用于绕过人工内容过滤(尤其是隐藏链接等)或在文本中隐性添加水印,从而更方便地追踪信息泄露或识别抄袭行为。由于这一特性适用于所有 Unicode 字符,理论上用户可以在网页上的每一个字符中嵌入隐藏信息或水印。
好在是,目前无法通过这种方式嵌入可执行文件、图像文件或应用程序扩展。不过,将隐藏文本从人类视线中隐藏起来仍然可能引发其他问题,尤其是在特定的上下文中。
注意到,尽管文章标题提到的是“任意数据”,但用户目前只能在 Unicode 字符中隐藏文本内容,这与“任意代码执行”不同。后者是一种安全问题,通常通过利用合法软件(包括驱动程序)中的漏洞来执行恶意代码。
因此,大家无需过于担心,在可预见的未来,你的系统不太可能被隐藏在常见表情符号 Unicode 中的致命病毒劫持。同样,有人在发送给你的 Unicode 消息中隐藏数据的可能性也微乎其微,不过这种概率虽然极低,但永远不会是零。