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
网络安全培训
- 网络安全常见漏洞类型 网络安全常见漏洞类型包
- 绿色上网顺口溜七言 绿色上网的宣传标语
- 网络安全等级保护测评 网络安全等级保护条例
- 如何加强网络安全 网络安全隐患有哪些
- 网络安全防护措施有哪些 网络安全等级保护等级
- 如何保障网络安全 如何做好网络安全保障工作
- 维护网络安全的措施有哪些 维护网络安全的主要
- 网络安全工程师好学吗 2024年网络安全工程师好学
- 网络安全注意事项简短 网络安全注意事项100字
- 网络安全面临的挑战 当前网络安全面临的新问题
- 网络安全培训哪个靠谱 网络安全培训找哪个
- 普及网络安全知识内容 普及网络安全教育
- 网络安全防范知识宣传内容 网络安全防范知识宣
- 如何做好网络安全工作 如何做好网络安全工作
- 网络安全常识的丰富内容 网络安全的相关知识
- 青少年网络安全教育片 青少年网络安全知识讲座