Python空指针引用漏洞怎么解决
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容介绍了" Python空指针引用漏洞怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!漏
千家信息网最后更新 2025年02月01日Python空指针引用漏洞怎么解决
本篇内容介绍了" Python空指针引用漏洞怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
漏洞简介:
Python最新版Python 3.8.5的空指针引用漏洞发生在Python对.pyc文件进行处理时。
下面是崩溃信息:
$ Python-3.8.5/python 00-SEGV-on-unknown-address-Python-3.8.5.pyc Could not find platform dependent librariesConsider setting $PYTHONHOME to [: ] AddressSanitizer:DEADLYSIGNAL ================================================================= ==8079==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000018 (pc 0x0000008aa86b bp 0x000000000000 sp 0x7ffe2a3f5bf0 T0) ==8079==The signal is caused by a READ memory access. ==8079==Hint: address points to the zero page. #0 0x8aa86a in _PyEval_EvalCodeWithName /home/test/Python-3.8.5/Python/ceval.c:4266:23 #1 0x866d0f in PyEval_EvalCodeEx /home/test/Python-3.8.5/Python/ceval.c:4327:12 #2 0x866d0f in PyEval_EvalCode /home/test/Python-3.8.5/Python/ceval.c:718:12 #3 0x9f7355 in run_eval_code_obj /home/test/Python-3.8.5/Python/pythonrun.c:1125:9 #4 0x9e682d in run_pyc_file /home/test/Python-3.8.5/Python/pythonrun.c:1184:9 #5 0x9e682d in PyRun_SimpleFileExFlags /home/test/Python-3.8.5/Python/pythonrun.c:419:13 #6 0x9e4ca5 in PyRun_AnyFileExFlags /home/test/Python-3.8.5/Python/pythonrun.c:86:16 #7 0x5108db in pymain_run_file /home/test/Python-3.8.5/Modules/main.c:381:15 #8 0x5108db in pymain_run_python /home/test/Python-3.8.5/Modules/main.c:606:21 #9 0x5108db in Py_RunMain /home/test/Python-3.8.5/Modules/main.c:685:5 #10 0x5129d6 in pymain_main /home/test/Python-3.8.5/Modules/main.c:715:12 #11 0x512dd7 in Py_BytesMain /home/test/Python-3.8.5/Modules/main.c:739:12 #12 0x7f8316d4b82f in __libc_start_main /build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:291 #13 0x438888 in _start (/home/test/Python-3.8.5-Fuzz/python+0x438888) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /home/test/Python-3.8.5/Python/ceval.c:4266:23 in _PyEval_EvalCodeWithName ==8079==ABORTING
漏洞分析:
在函数PyEval_EvalCode(Python-3.8.5/Python/ceval.c)中调用PyEval_EvalCodeEx函数。
PyObject * PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals){ return PyEval_EvalCodeEx(co, globals, locals, (PyObject **)NULL, 0, (PyObject **)NULL, 0, (PyObject **)NULL, 0, NULL, NULL); }
传递给PyEval_EvalCodeEx函数的参数中closure设置为NULL。
PyObject * PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals, PyObject *const *args, int argcount, PyObject *const *kws, int kwcount, PyObject *const *defs, int defcount, PyObject *kwdefs, PyObject *closure){ return _PyEval_EvalCodeWithName(_co, globals, locals, args, argcount, kws, kws != NULL ? kws + 1 : NULL, kwcount, 2, defs, defcount, kwdefs, closure, NULL, NULL); }
PyEval_EvalCodeEx函数继续调用_PyEval_EvalCodeWithName函数,closure值不变依旧为NULL。
PyObject * _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals, PyObject *const *args, Py_ssize_t argcount, PyObject *const *kwnames, PyObject *const *kwargs, Py_ssize_t kwcount, int kwstep, PyObject *const *defs, Py_ssize_t defcount, PyObject *kwdefs, PyObject *closure, PyObject *name, PyObject *qualname) { ****** /* Copy closure variables to free variables */ for (i = 0; i < PyTuple_GET_SIZE(co->co_freevars); ++i) { PyObject *o = PyTuple_GET_ITEM(closure, i); <----------------------------- crash Py_INCREF(o); freevars[PyTuple_GET_SIZE(co->co_cellvars) + i] = o; } ****** }
修复建议:
在 _PyEval_EvalCodeWithName函数中引用closure前,对closure的值进行判断。
" Python空指针引用漏洞怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
函数
漏洞
指针
内容
更多
知识
实用
学有所成
接下来
信息
参数
困境
实际
建议
情况
文件
文章
最新版
案例
漏洞分析
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
卫宁互联网科技有限公司
案例网络安全与军事
江苏好的软件开发
幼儿园国家网络安全教育视频
人工神经翻译网络技术
确保网络安全防线
龙哥视频软件开发
虹口区辅助网络技术管理方法
上海电话软件开发代理品牌
智能互联网络技术应用薪资
股票模拟交易软件开发多少钱
测试服务器是什么工作
净化网络安全环境
agv上位机软件开发
如何查询外部dns服务器
数据库原理怎么修改数据类型
团中央网络技术部邵德海级别
电子科技大学互联网
电子信息网络技术是干什么的
数据库相互间的联系
数据库网关加密实例
汝州汇鑫科技软件开发商
ping服务器连接不上网
网络安全宣传日活动ppt
大数据库安全吗
csgo查服务器地区
pptp免费服务器
软件开发工程量计算
agv上位机软件开发
服务器禁用常用端口