安全研究
安全漏洞
xine-lib STTS QuickTime原子整数溢出漏洞
发布日期:2009-04-04
更新日期:2009-04-07
受影响系统:
xine xine-lib <= 1.1.16.2不受影响系统:
xine xine-lib 1.1.16.3描述:
BUGTRAQ ID: 34384
CVE(CAN) ID: CVE-2009-1274
xine是一款免费的媒体播放器,支持多种格式。
Xine-lib在解析Quicktime电影文件的畸形STTS原子时存在整数溢出漏洞,本地或远程攻击者可以利用这个漏洞以使用xine库应用程序的权限执行任意代码。以下是/src/demuxers/demux_qt.c中的有漏洞代码段:
[...]
840 static qt_error parse_trak_atom (qt_trak *trak,
841 unsigned char *trak_atom) {
...
1535 } else if (current_atom == STTS_ATOM) {
1536
1537 /* there should only be one of these atoms */
1538 if (trak->time_to_sample_table) {
1539 last_error = QT_HEADER_TROUBLE;
1540 goto free_trak;
1541 }
1542
1543 [1] trak->time_to_sample_count = _X_BE_32(&trak_atom[i + 8]);
1544
1545 debug_atom_load(" qt stts atom (time-to-sample atom): %d
entries\n",
1546 trak->time_to_sample_count);
1547
1548 [2] trak->time_to_sample_table = (time_to_sample_table_t *)calloc(
1549 trak->time_to_sample_count+1, sizeof(time_to_sample_table_t));
1550 if (!trak->time_to_sample_table) {
1551 last_error = QT_NO_MEMORY;
1552 goto free_trak;
1553 }
1554
1555 /* load the time to sample table */
1556 [3] for (j = 0; j < trak->time_to_sample_count; j++) {
1557 [4] trak->time_to_sample_table[j].count =
1558 _X_BE_32(&trak_atom[i + 12 + j * 8 + 0]);
1559 [5] trak->time_to_sample_table[j].duration =
1560 _X_BE_32(&trak_atom[i + 12 + j * 8 + 4]);
1561 debug_atom_load(" %d: count = %d, duration = %d\n",
1562 j, trak->time_to_sample_table[j].count,
1563 trak->time_to_sample_table[j].duration);
1564 }
1565 trak->time_to_sample_table[j].count = 0; /* terminate with zero*/
1566 }
1567 }
[...]
[1] 使用媒体文件中的用户提供数据填充无符型int变量trak->time_to_sample_count。
[2] 在1548行和1549行,由于通过trak->time_to_sample_count+1计算出calloc()的第一个参数,因此可能出现整数溢出。用户提供的trak->time_to_sample_count值UINT_MAX(0xffffffff)会触发整数溢出,因此仅分配0字节缓冲区。
[3] 将trak->time_to_sample_count值用作了这个for()循环的计数器。
[4] 将quicktime电影文件中的用户控制数据拷贝到了之前分配的堆缓冲区(见[2])。由于将j用作了数组索引,for()循环会一直执行到 j < trak->time_to_sample_count,因此可以用用户控制数据覆盖堆缓冲区。
[5] 同[4]
<*来源:Tobias Klein
链接:http://secunia.com/advisories/34593/
http://marc.info/?l=bugtraq&m=123903480918906&w=2
http://www.gentoo.org/security/en/glsa/glsa-201006-04.xml
*>
建议:
厂商补丁:
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA 201006-04)以及相应补丁:
GLSA 201006-04:xine-lib: User-assisted execution of arbitrary code
链接:http://www.gentoo.org/security/en/glsa/glsa-201006-04.xml
xine
----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://bugs.xine-project.org/show_bug.cgi?format=multiple&id=224
浏览次数:2352
严重程度:0(网友投票)
绿盟科技给您安全的保障
