当前位置: 代码网 > 服务器>网络安全>漏洞分析 > Python stringobject.c多个远程溢出漏洞

Python stringobject.c多个远程溢出漏洞

2008年10月08日 漏洞分析 我要评论
Python stringobject.c多个远程溢出漏洞 受影响系统:Python Software Foundation Python <= 2.5.2描述:--------------------------------------------------------------------------------BUGTRAQ ID... 08-10-08
受影响系统:
python software foundation python <= 2.5.2
描述:
--------------------------------------------------------------------------------
bugtraq id: 28749 python是一种开放源代码的脚本编程语言。 python的核心api提供了多个用于分配字符串对象的函数,其中一个api调用允许分配或重新分配pystringobject,这个函数为pystring_fromstringandsize(),该函数获取了两个参数,分别为一个指针和一个有符整数。如果指针非空的话,就会将指向该指针的内存重新分配为第二个参数所指定的大小;如果指针为空,就会分配整数所指定的字节数并返回。 在这个操作期间,没有验证第二个参数是否为负数,而该值与pystringobject的大小相加并用作了分配函数的长度,可能导致错误的内存分配。 pybytes_fromstringandsize()和pyunicode_fromstringandsize()函数中也可能存在类似的错误。 以下是python-2.5.2/objects/stringobject.c文件中的漏洞代码: 52 pyobject *
53 pystring_fromstringandsize(const char *str, py_ssize_t size)
54 {
55 register pystringobject *op;
56 assert(size >= 0);
57 if (size == 0 && (op = nullstring) != null) {
[...]
63 }
64 if (size == 1 && str != null &&
65 (op = characters[*str & uchar_max]) != null)
66 {
[...]
72 }
73
74 /* inline pyobject_newvar */
75 op = (pystringobject *)pyobject_malloc(sizeof(pystringobject)
size); type py_ssize_t被定义为有符型,在56行的assert()试图确认是否过滤了第二个参数,但在非调试版本中遗漏了assert(),然后在75行将字符串对象的大小参数和字符串对象的大小相加并作为参数传送给了pyobject_malloc()。 <*来源:justin ferguson (jferguson@ioactive.com)

链接:http://marc.info/?l=bugtraq&m=120794763804162&w=2
http://bugs.python.org/issue2587
*> 建议:
--------------------------------------------------------------------------------
厂商补丁: python software foundation
--------------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: http://svn.python.org/view?rev=62271&view=rev
http://svn.python.org/view?rev=62272&view=rev

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com