相关文章
友情链接

奇虎360王宇:深入理解Windows字体解析引擎漏洞

12月13-14日,SyScan首次登陆北京,携手奇虎360合力举办SyScan360国际前瞻信息安全会议。此次活动为期两天,将涵盖Windows、Android、iOS、浏览器、软件漏洞挖掘攻击等各个方向互联网安全话题,为国内外从事互联网安全领域的研究同行们提供良好的交流与合作的平台。同时本次大会还将汇集国际安全领域最新的研究成果,共享最新的安全技术,众多国际重量级的演讲嘉宾将汇聚一堂,分享最前端的信息安全的理念。

奇虎360安全研究人员王宇主要从事云安全解决方案的研究,Rootkit / Anti-Rootkit 相关分析、攻防,漏洞挖掘等方面的工作。王宇的演讲主要将深入探讨字体解析引擎的设计,并将讨论引擎内核化所带来的安全性影响。他首先介绍了字体引擎的背景、设计和实现。之后进行了一些与之交互的演示和细节展示,以及王宇谈到了自己对此的一些最新发现。

以下为演讲实录:

王宇带来的议题是深入理解Windows字体解析引擎漏洞并简单阐述议题的来由:

点阵位图——优势与缺陷

第二部分我想说的是点阵字体和轮廓字体。我们以一个DEMO开始,这是一个启动扇区小游戏,我会把其队码设在点阵模式,先看这个演示。很简单,BOCHS是一个虚拟机,写这个缓存的数据,然后让这个图形能在屏幕上显示出来,然后我把背景色设为蓝色,字体色设为黄色,我可以给大家看一下,里面的字是怎么样定义的。在这里有一个Chinese code的编码,其实最基本的字就应该是这样,这个是20年前,大家如果熟悉DOS编码的时候,那个时候可能没有空调研,你想在程序里面酷一点,或者是你会更炫一点,每一条都点阵的扫描线。

点阵位图 —— 优点与缺点

以汉字“蒙”为例,它就是由不同的点亮和不同的点亮组成的,但是点阵字作为一个时代发展的标准.肯定有它的缺点,也有它的优点,它的最大的优点是简单,应该主要想解决汉字显示的问题,第一个就能想到的解决方案。它的缺点也非常的明显,可以在右边就能看到,这个是不能放缩的,而且如果真正能够放缩,你可以看到这个字非常模糊,这是点阵字发展的阶段以及它的好处和缺点。

轮廓字体——优势与缺陷

在轮廓字体中不会再有点阵的打点概念,它有的新东西是把每个字做一个Ponit,然后把这个Point变化的趋势描绘出这样一个字出来,所以看到一个真正的汉字是由这么多的Point组成的。最关键的一点,就是你定义了这么多Point,它的好处是可缩放,为什么?因为这个时候字不再是点的组合了,它是变成了点和点之间的连线,为了实现这样的可缩放能力。我们可以看到其实设计自己的人,他们设计了一组指令集,以及这组指令集所对应的虚拟机,在这里这张图这就是“蒙”这个字,这个指令在没有执行的时候这个字显示是这样,当这个指令全部显示完之后,这个字变成这样,这就是一个指令修订过程,这个是变换中间状态,就是看蒙的草字头。

轮廓字体——优势与缺陷

可放缩这是它的巨大优势,在刚才的点阵字里面,如果你想设计一套字组,你需要定义大量的点阵,并且占大量的空间,字库会变得非常大。而在这个情况,字的空间会变得比较小,放缩起来也会比较方便。但是它的麻烦之处在于,定义这样一处指令,包括定义到这个虚拟机也是要做大量工作。

轮廓也吸引了一些点阵的方式,嵌入位图,提高显示的分辨率。其实这也是一个技术的发展过程,所以我觉得我们是站在巨人的肩膀之上,我们是享受到了字发展的好处,而我们其实根本当它像空气一样最基础的组建,根本感受不到它的存在,但是其实这些字的发展给我们带来了事实在在的好处。

Adobe由此迎来 首位合作伙伴苹果

王宇描述了该领域的发展脉络,在数字字体混乱时期,施乐研究院的两位前辈用页面描述语言,他们做一个东西叫Postscript,这个东西做出来以后,据说施乐研究院老板并不喜欢,也没有打算商业化,后来这两个前辈就成立了一家公司叫Adobe。

Adobe成立之初很受关注,关注的人是谁呢?是苹果公司的Steve jobs。他在斯坦福大学演讲的时候,他讲了对自己的喜欢。他去图书馆研究各种字,研究笔划,他说把当年的积累都用到这个当中去,这两个人一建立Adobe,Stevejobs就联系他们,所以他们第一个合作伙伴就是苹果。随着时间发展到1980年末,苹果打算实现自己的字体引擎,因为他们做了搜狗系统,他们自己有一个内部研发代号叫皇家版。

字体引擎接口最为重要

字体引擎最重要的是接口,通过这些接口可以让自己用起来,比如说如何打开Font,它给你留了一些空间,他预定一些空间,预定的空间加一些标志位,然后再往下是初始化,初始化某些关键的域,到最下边两个函数,前面我在解析某一个字的时候是不需要网格适配,下面我解析某一个字的时候就需要网格适配。再往下就是你要计算网格的大小,下面还有Cache,就是关闭引擎。

更多精彩内容,请点击: