ASN.1编译器致网络漏洞
Posted E安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASN.1编译器致网络漏洞相关的知识,希望对你有一定的参考价值。
抽象语法标记1(Abstract Syntax Notation One,ASN.1)是现代通信一种几乎不可见的基础技术。除了特定技术领域,该方法还未达到备受关注的程度。由于ASN.1编译器可能会导致网络漏洞,ASN.1可能会成为热议话题。
ASN.1简介
为了切实了解问题所在,我们必须从头开始。ASN.1是定义抽象数据类型规范的一种形式,具有150年历史的电信公司国家电信联盟(International Telegraph Union,ITU)将其作为项目广泛使用。
ITU指出,ASN.1在任何需要数字通信的地方以任何形式(音频、视频、数据等)发送信息,因为它只涵盖信息的结构方面。ASN.1不作为编程语言,相反,它是储存数据(无论信息的形式如何)的容器。
ASN.1已通过多种标准的编码规则证明其有用性,例如基本编码规则(BER)和压缩编码规则(PER)。PER对于具有带宽限制的应用程序十分有用。BER和PER描述了ASN.1编码传输的方式,即如何将BER和PER通过有线通信翻译为字节,反之亦然,其不用考虑机器类型或基础编程语言。
ASN实验室表示,“ASN.1的定义很容易映射到(借助预运行(pre-runtime)处理器)C、C++或Java数据结构中,这些数据结构能为应用代码所用。另外,以XML或TLV格式(或十分紧凑的压缩编码格式)提供编码和解码表现法的运行时库也支持这类数据结构。
当然,以十分易于出错的编程消除代码问题,如果有效,不失为一种巧妙的方式。
黄金标准?
ASN.1是国际标准化组织(ISO)、国际电工委员会(IEC)和国际电信联盟电信标准化部(ITU-T)的一种联合标准。
作为一款历时久经考验的标准,ASN.1广泛用于电信行业。这样的黄金标准到底何错之有?
ASN1C漏洞导致网络漏洞
Objective Systems公司推出ASN1C编辑器,其能与大量编程语言兼容。2013年,该公司发布版本6.6和运行时库供Objective客户使用,其客户涵盖主要政府机构和顶尖企业集团。发送更新之前,ASN1C编译器广泛用于各个领域长达三年。
阿根廷Fundación Sadosky的Programa STIC公司的研究人员发现了漏洞。GitHub表示,这些研究人员发现ASN1C存在的问题—导致生成的代码遭受堆溢出攻击。这个严重的漏洞能允许攻击者远程执行(在C和C++语言内使用编译ASN1C代码的设备固件内执行)未知和未授权的代码。
思科第一个承担责任,成为ASN.1问题的受害者。思科不得不承认虽然将来也许会发布补丁,但它未准备好处理如此棘手的问题。然而,思科指出,产品安全事件响应小组(Product Security Incident Response Team,PSIRT)未发现任何公告或恶意使用该漏洞的事件。
利用该漏洞实施攻击难度较大,因为它要求了解有关目标设备具体、复杂的知识,并具备自由将通信插入信道的能力。这类攻击将需要以ASN.1专门设计的避开方式解决单个设备。ASN.1网络中的数据在没有硬件影响的情况下通过硬件流转。攻击者需要了解所有经过的设备。至于对硬件的依赖性,这类攻击在概念上与ASN.1相反。
“躲过一劫”
看来,高通的移动产品通过建立边界检查躲过这颗“子弹”。PC World报道称,“高通的移动堆栈存在ASN1C漏洞代码,但由于独立的ASN.1的数据编码规则未被利用。”
高通代表向PC World透露,要利用该漏洞,攻击者必须以特制的网络信号语言发送一个较大的值,但3G/4G标准和高通产品中规定的编码规则不允许通过如此大的值。
Objective Systems还借助C/C++编译器和运行时ASN1C的固定过度版本(v7.01)解决了该问题。应要求,客户可以使用版本v7.01,该修复将包含在下一个C/C++ ASN1C版本v7.0.2中。
善后工作
虽然Objective Systems夜以继日解决该问题,但散播该固定代码的常见问题仍然存在。用户必须积极主动。
IT专业人员可能会询问所有厂商软件是否受影响。像思科这类的企业会如实相告,但其它公司也许会考虑次要相关性,例如,他们也许会以其提供解决方案的任何方式使用从其它来源购置的漏洞软件。
即便使用最新的编译器,但大量漏洞代码已经存在的事实无法改变。毫无疑问,清理任务相当艰巨。ASN.1的使用如此广泛,以至于不太可能就此终结。接下来可能会出现新型攻击,但就目前而言,边界限制似乎已经化解了该威胁。
以上是关于ASN.1编译器致网络漏洞的主要内容,如果未能解决你的问题,请参考以下文章
超EASY 五步实现Eclipse ASN.1 SDK和插件安装
开源框架 Apache Struts 2漏洞的 PoC 已公开