Asterisk Open Source 栈缓冲区溢出漏洞(CVE-2013-2685)

Asterisk软件中的h264_format_attr_sdp_parse()函数存在一个栈溢出漏洞,攻击者可通过构造特制的SDP头导致缓冲区溢出,可能执行任意代码。问题源于处理H.264视频媒体属性时输入验证不足。修复建议是应用厂商发布的升级补丁。
摘要由CSDN通过智能技术生成

漏洞描述

Asterisk是一款开放源码的软件PBX,支持各种VoIP协议和设备。

Asterisk包含的h264_format_attr_sdp_parse()函数(res/res_format_attr_h264.c)存在一个溢出条件。问题是由于在处理H.264视频的媒体属性时没有正确校验用户提交的输入,允许攻击者提交特制的SDP标头,远程攻击者可以利用漏洞触发基于栈的缓冲区溢出,可以应用程序上下文执行任意代码。

某些告警监测设备产生原因

char sps[H264_MAX_SPS_PPS_SIZE], pps[H264_MAX_SPS_PPS_SIZE];

if (sscanf(attrib, "profile-level-id=%lx", &val2) == 1) {
    format_attr->format_attr[H264_ATTR_KEY_PROFILE_IDC] = ((val2 >> 16) & 0xFF);
    format_attr->format_attr[H264_ATTR_KEY_PROFILE_IOP] = ((val2 >> 8) & 0xFF);
    format_attr->format_attr[H264_ATTR_KEY_LEVEL] = (val2 & 0xFF);
} else if (sscanf(attrib, "sprop-parameter-sets=%[^','],%s", sps, pps) == 2) {

在上述代码中存在函数sprop-parameter-sets,正常我们在使用上述函数的时候我们需要我们需要将字符串的长度限制为堆栈缓冲区的长度 - 1。

所以在某些告警设备的留恋告警包中我们可以仔细查找一下,是否存在sprop-parameter-sets后面的参数(应该是二进制的)我们从二进制转换为十进制是不是不是-1,如果不是-1,就证明告警产生。

修复建议

 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
Index of /pub/security

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲瑿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值