不得了了!Python 又爆出重大 Bug!
阅读本文大概需要 4 分钟。
对此,在 Python 3.8.8 和或 3.9.2 RC 版本刚刚发布三天之后,在部分用户对安全漏洞担忧的压力下,新版 Python 加快了发布的进程。同时,PSF 敦促 Python 用户尽快将系统升级到 Python 3.8.8 或 3.9.2,特别是需要解决被跟踪为 CVE-2021-3177 的远程代码执行(RCE)漏洞。
Python 发布团队表示:"自从宣布 Python 3.8.8 和 3.9.2 RC 版本发布以来,我们收到了来自终端用户的一些关于 CVE-2021-3177 安全方面的询问,并敦促我们加快最终版本的发布。”
具体的漏洞在于,Python 3.x 到 3.9.1 的 ctypes/callproc.c 中 PyCArg_repr 具有缓冲溢出,这可能导致远程代码执行。
它也会影响到 "接受浮点数作为不信任的输入的 Python 应用程序,如 c_double. param 的 1e300 参数所示。
所以说,只要你用的是 Python3,并且是 Python 3.8.8 之前的 Python 版本,都会面临这个漏洞,比如 Python 3.6、Python 3.7 等。
该 Bug 的发生是因为不安全地使用了"sprintf"。影响之所以广泛,因为 Python 已预装安装到了多个 Linux 发行版和 Windows 10 系统中。
当前,各种 Linux 发行版(如 Debian)已经向后移植了安全补丁,以确保屏蔽内置版本的 Python。
RedHat 也发布公告表示,该漏洞是常见的内存缺陷。“在 Python 内提供的 ctypes 模块中发现了基于堆栈的缓冲区溢出。使用 ctypes 而不仔细验证传递给它的输入的应用程序可能容易受到此漏洞的攻击,这将允许攻击者通过缓冲区溢出并使应用程序奔溃。”
同时红帽也针对自家的版本进行了安全版本说明:
不过,为了避免一些不必要的麻烦,还是呼吁大家尽快升级。
Python 新版下载地址:
https://www.python.org/downloads/
或者通过其他方式升级,比如 pyenv、conda 等,升级到 Python 3.8.8 或者 Python 3.9.2 即可。
具体操作文档可见:
https://github.com/pyenv/pyenv
https://conda.io/projects/conda/en/latest/user-guide/concepts/environments.html
推荐阅读 误执行了rm -fr /*之后,除了跑路还能怎么办?! 程序员必备58个网站汇总 大幅提高生产力:你需要了解的十大Jupyter Lab插件