手机
当前位置:查字典教程网 >网络安全 >漏洞分析 >Python stringobject.c多个远程溢出漏洞
Python stringobject.c多个远程溢出漏洞
摘要:受影响系统:PythonSoftwareFoundationPython=0);57if(size==0&&(op=nullstring)!...

受影响系统:

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

【Python stringobject.c多个远程溢出漏洞】相关文章:

OpenBSD处理畸形的IPv6数据多个远程拒绝服务漏洞

InterBase和Firebird远程栈缓冲区溢出漏洞

IBM AIX 的 uspchrp 命令触发本地缓冲区溢出漏洞

Microsoft SharePoint 服务器源码 HTML 注入漏洞

X.Org 存在X字体服务器多个内存破坏漏洞

SwiftView ActiveX控件和浏览器插件含栈溢出漏洞

Adobe Acrobat Reader acroread创建临时文件漏洞

Linux Kiss Server多个格式串处理漏洞

Z-blog跨站脚本攻击漏洞

FreeBSD openpty() pty处理多个本地信息泄露漏洞

精品推荐
分类导航