CVE:CVE-2008-1289
CNNVD:CNNVD-200803-362
Asterisk是开放源码的软件PBX，支持各种VoIP协议和设备。
Asterisk在处理带有畸形数据的请求时存在漏洞，如果在INVITE消息的SDP负载中发送了无效的RTP负载类型号的话，就会导致写入无效的内存位置，允许攻击者控制某些部分的内存。
无效的内存写入发生在process_line()(channels/chan_sip.c文件5275行)所调用的ast_rtp_unset_m_type()(main/rtp.c文件1655行)。ast_rtp_unset_mt_type()没有验证pt，而在ast_rtp_set_mt_type()(1642行)进行了验证。攻击者可以控制pt向很大的内存地址范围写入0。
如果在SIP INVITE消息的SDP负载发送了多于32个RTP负载类型数属性的话，就会覆盖栈缓冲区，允许攻击者控制写入的值。
在process_sdp()(channels/chan_sip.c文件4980行)中，rtpmap codecs存储到了32 int的数组found_rtpmap_codecs，映射中的codec数存储到了last_rtpmap_codec中。未经检查数组的大小便将Codec附加到了数组(5258行)，最多为64(SIP_MAX_LINES)。攻击者可以向缓冲区后的内存位置写入0到256(MAX_RTP_PT)的值。
solution:Upgrade asterisk asterisk_appliance_developer_kit to a higher version than 1.4,and avoid the version 1.4; Upgrade asterisk asterisk_business_edition to a higher version than c.1.0-beta8,c.1.0beta7,and avoid the version (,c.1.0-beta8],(,c.1.0beta7]; Upgrade asterisk asterisknow to a higher version than 1.0.1,and avoid the version (,1.0.1]; Upgrade asterisk open_source to a higher version than 1.4.18,*:rc-2,1.6.0_beta5,and avoid the version (,1.4.18],*:rc-2,(,1.6.0_beta5]; Upgrade asterisk s800i to a higher version than 1.1.0.1,and avoid the version (,1.1.0.1]