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

情报来源:CNNVD

发布时间:2008-04-11

基本信息
  • 漏洞ID:1186996
  • 漏洞类型:缓冲区溢出
  • 发布日期:2008-04-11
  • 更新时间:2015-03-19
  • CVE编号: CVE-2008-1887
  • CNNVD-ID:CNNVD-200804-302
  • 漏洞平台: N/A
  • CVSS评分:9.3
漏洞来源

<a href="https://www.securityfocus.com/bid/28749" target="_blank">https://www.securityfocus.com/bid/28749</a><br/> <a href="https://cxsecurity.com/issue/WLB-2008040028" target="_blank">https://cxsecurity.com/issue/WLB-2008040028</a><br/> <a href="http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200804-302" target="_blank">http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200804-302</a><br/>

漏洞详情

Python是一种开放源代码的脚本编程语言。Python的核心API提供了多个用于分配字符串对象的函数,其中一个API调用允许分配或重新分配PyStringObject,这个函数为PyString_FromStringAndSize(),该函数获取了两个参数,分别为一个指针和一个有符整数。如果指针非空的话,就会将指向该指针的内存重新分配为第二个参数所指定的大小;如果指针为空,就会分配整数所指定的字节数并返回。在这个操作期间,没有验证第二个参数是否为负数,而该值与PyStringObject的大小相加并用作了分配函数的长度,可能导致错误的内存分配。PyBytes_FromStringAndSize()和PyUnicode_FromStringAndSize()函数中也可能存在类似的错误。以下是Python-2.5.2/Objects/stringobject.c文件中的漏洞代码:52PyObject*53PyString_FromStringAndSize(constchar*str,Py_ssize_tsize)54{55registerPyStringObject*op;56assert(size>=0);57if(size==0&&(op=nullstring)!=NULL){[...]63}64if(size==1&&str!=NULL&&65(op=characters[*str&UCHAR_MAX])!=NULL)66{[...]72}7374/*InlinePyObject_NewVar*/75op=(PyStringObject*)PyObject_MALLOC(sizeof(PyStringObject)+size);typePy_ssize_t被定义为有符型,在56行的assert()试图确认是否过滤了第二个参数,但在非调试版本中遗漏了assert(),然后在75行将字符串对象的大小参数和字符串对象的大小相加并作为参数传送给了PyObject_MALLOC()。

参考资料


来源:BID
名称:28749
链接:http://www.securityfocus.com/bid/28749
来源:DEBIAN
名称:DSA-1620
链接:http://www.debian.org/security/2008/dsa-1620
来源:DEBIAN
名称:DSA-1551
链接:http://www.debian.org/security/2008/dsa-1551
来源:XF
名称:python-pystringfromstringandsize-bo(41944)
链接:http://xforce.iss.net/xforce/xfdb/41944
来源:UBUNTU
名称:USN-632-1
链接:http://www.ubuntu.com/usn/usn-632-1
来源:BUGTRAQ
名称:20090824rPSA-2009-0122-1idlepython
链接:http://www.securityfocus.com/archive/1/archive/1/506056/100/0/threaded
来源:BUGTRAQ
名称:20080411IOActiveSecurityAdvisory:IncorrectinputvalidationinPyString_FromStringAndSize()leadstomultiplebufferoverflows
链接:http://www.securityfocus.com/archive/1/490776
来源:www.novell.com
名称:http://www.novell.com/support/search.do?cmd=displayKC&doc
链接:http://www.novell.com/support/search.do?cmd=displayKC&doc
来源:wiki.rpath.com
链接:http://wiki.rpath.com/wiki/Advisories:rPSA-2009-0122
来源:support.apple.com
链接:http://support.apple.com/kb/HT3438
来源:GENTOO
名称:GLSA-200807-01
链接:http://security.gentoo.org/glsa/glsa