Python stringobject.c多个远程溢出漏洞
网络安全 2021-07-03 10:02www.168986.cn网络安全知识
受影响系统
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.)
链接http://marc.info/?l=bugtraq&m=120794763804162&w=2
http://bugs.python./issue2587
> 建议
--------------------------------------------------------------------------------
厂商补丁 Python Software Foundation
--------------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载 http://svn.python./view?rev=62271&view=rev
http://svn.python./view?rev=62272&view=rev
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.)
链接http://marc.info/?l=bugtraq&m=120794763804162&w=2
http://bugs.python./issue2587
> 建议
--------------------------------------------------------------------------------
厂商补丁 Python Software Foundation
--------------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载 http://svn.python./view?rev=62271&view=rev
http://svn.python./view?rev=62272&view=rev
网络安全培训
- 网络安全带来的危害 网络安全的弊处
- 如何加强网络安全防范
- 网络安全防护知识内容摘要
- 什么网络安全指的是什么 网络安全指的是什么意
- 网络安全十大公司排名 网络安全十大公司排名绿
- 手机网络安全警示格言 手机网络安全警示教育片
- 网络安全培训心得体会 网络安全知识培训
- 如何树立正确的网络意识 怎么样正确对待网络
- 网络安全大赛是什么意思 网络安全大赛比赛规则
- 世界网络安全公司排名 世界十大网络安全上市公
- 网络安全注意事项知识 网络安全注意事项知识短
- 网络安全常识十条口诀 小学生安全十句话
- 网络安全等级保护三级 网络安全三级等保标准
- 如何增强网络安全防范意识 如何增强网络安全防
- 网络安全注意事项有哪些 网络安全应注意事项
- 网络安全培训感悟 网络安全培训后的收获和感想