一、漏洞信息
漏洞编号:CVE-2023-36632
漏洞归属组件:python3
漏洞归属的版本:3.10.0,3.10.2,3.10.9,3.11.1,3.7.9,3.8.5,3.9.9
CVSS V2.0分值:
BaseScore:0.0 Low
Vector:CVSS:2.0/
漏洞简述:
** DISPUTED ** The legacy email.utils.parseaddr function in Python through 3.11.4 allows attackers to trigger RecursionError: maximum recursion depth exceeded while calling a Python object via a crafted argument. This argument is plausibly an untrusted value from an application s input data that was supposed to contain a name and an e-mail address. NOTE: email.utils.parseaddr is categorized as a Legacy API in the documentation of the Python email package. Applications should instead use the email.parser.BytesParser or email.parser.Parser class. NOTE: the vendor s perspective is that this is neither a vulnerability nor a bug. The email package is intended to have size limits and to throw an exception when limits are exceeded; they were exceeded by the example demonstration code.
漏洞公开时间:2023-06-26 02:15:00
漏洞创建时间:2023-06-26 02:34:28
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2023-36632
漏洞分析指导链接:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
openBrain开源漏洞感知系统
漏洞补丁信息:
无
二、漏洞分析结构反馈
影响性分析说明:
这是关于Python中的一个函数漏洞的描述。具体来说,Python中的email.utils.parseaddr函数在版本3.11.4之前存在漏洞,攻击者可以通过构造的参数来触发 RecursionError: maximum recursion depth exceeded while calling a Python object 错误。这个参数很可能是来自应程序输入数据的一个不受信任的值,本应包含一个姓名和电子邮件地址。需要注意的是,email.utils.parseaddr被归类为Python邮件包文档中的传统API。应用程序应该使用email.parser.BytesParser或email.parser.Parser来代替。社区认为这既不是漏洞也不是错误。邮件包旨在具有大小限制,当超出限制时会引发异常;在示例演示代码中超出了限制。
openEuler评分:
5.3
Vector:CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(3.7.9):不受影响
2.openEuler-20.03-LTS-SP3(3.7.9):不受影响
3.openEuler-22.03-LTS(3.9.9):不受影响
4.openEuler-22.03-LTS-SP1(3.9.9):不受影响
5.openEuler-22.03-LTS-SP2(3.9.9):不受影响
修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(3.7.9):否
2.openEuler-20.03-LTS-SP3(3.7.9):否
3.openEuler-22.03-LTS(3.9.9):否
4.openEuler-22.03-LTS-SP1(3.9.9):否
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
参考网址 | 关联pr | 状态 | 补丁链接 |
---|---|---|---|
https://nvd.nist.gov/vuln/detail/CVE-2023-36632 | |||
https://ubuntu.com/security/CVE-2023-36632 | None | None | https://discourse.ubuntu.com/c/ubuntu-pro |
https://www.opencve.io/cve/CVE-2023-36632 | |||
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2023-36632 | |||
https://security-tracker.debian.org/tracker/CVE-2023-36632 | |||
http://www.cnnvd.org.cn/web/vulnerability/queryLds.tag?qcvCnnvdid=CVE-2023-36632 |
说明:补丁链接仅供初步排查参考,实际可用性请人工再次确认,补丁下载验证可使用CVE补丁工具。
若补丁不准确,烦请在此issue下评论 '/report-patch 参考网址 补丁链接1,补丁链接2' 反馈正确信息,便于我们不断优化工具,不胜感激。
如 /report-patch https://security-tracker.debian.org/tracker/CVE-2021-3997 https://github.com/systemd/systemd/commit/5b1cf7a9be37e20133c0208005274ce4a5b5c6a1
这是关于Python中的一个函数漏洞的描述。具体来说,Python中的email.utils.parseaddr
函数在版本3.11.4之前存在漏洞,攻击者可以通过构造的参数来触发"RecursionError: maximum recursion depth exceeded while calling a Python object"错误。这个参数很可能是来自应程序输入数据的一个不受信任的值,本应包含一个姓名和电子邮件地址。需要注意的是,email.utils.parseaddr
被归类为Python邮件包文档中的传统API。应用程序应该使用email.parser.BytesParser
或email.parser.Parser
来代替。
社区认为这既不是漏洞也不是错误。邮件包旨在具有大小限制,当超出限制时会引发异常;在示例演示代码中超出了限制。
具体可见:https://github.com/python/cpython/issues/103800
社区认为:递归深度达到(可修改的)递归限制时,RecursionError并不是一个错误。而且,在我们的代码中使用递归也是合理的,因为我们已经记录了我们的代码存在(未记录的)输入大小限制。所以,这并不是一个错误。
可能只是一个性能需求请求。在getaddress函数中,returnlist = returnlist + self.getaddress() 是唯一的直接递归操作。它通过':'触发。如果没有间接递归调用,getaddress函数可以被改写为尾递归形式,从而实现迭代。(但不是非常简单)。不过,考虑到在我的机器上,使用默认sys模块在IDLE环境下,对于n ≤ 1022,parseaddr(':' * n)的结果是('','')(当n=1023时会引发RecursionError),我怀疑默认的堆栈限制对Python的email模块几乎所有的使用场景都足够。如果不够,可以在代码中增加堆栈限制。
从社区的回复可以得出以下几点:
这个问题中的RecursionError并不被视为一个错误,因为当递归达到(可修改的)递归限制时,产生RecursionError是一个预期的结果。
代码中使用递归是被允许的,因为已经记录了代码中存在(未记录的)输入大小限制,说明了递归在这种情况下是合理的。
文本中提到了一个性能需求的请求,针对getaddress函数中的returnlist = returnlist + self.getaddress()这个递归操作,可以考虑将其改写为尾递归形式,从而实现迭代。不过,实现这个改写并不是非常简单。
针对Python的email模块来说,在绝大多数情况下,默认的堆栈限制是足够的,并且通过提高堆栈限制来解决潜在的问题。
社区认为RecursionError并非错误,代码中的递归使用是合理的,并不承认这是一个漏洞
影响性分析说明:这是关于Python中的一个函数漏洞的描述。具体来说,Python中的email.utils.parseaddr函数在版本3.11.4之前存在漏洞,攻击者可以通过构造的参数来触发"RecursionError: maximum recursion depth exceeded while calling a Python object"错误。这个参数很可能是来自应程序输入数据的一个不受信任的值,本应包含一个姓名和电子邮件地址。需要注意的是,email.utils.parseaddr被归类为Python邮件包文档中的传统API。应用程序应该使用email.parser.BytesParser或email.parser.Parser来代替。
社区认为这既不是漏洞也不是错误。邮件包旨在具有大小限制,当超出限制时会引发异常;在示例演示代码中超出了限制。
openEuler评分: 5.3
Vector:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(3.7.9):不受影响
2.openEuler-20.03-LTS-SP3(3.7.9):不受影响
3.openEuler-22.03-LTS(3.9.9):不受影响
4.openEuler-22.03-LTS-SP1(3.9.9):不受影响
修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(3.7.9):否
2.openEuler-20.03-LTS-SP3(3.7.9):否
3.openEuler-22.03-LTS(3.9.9):否
4.openEuler-22.03-LTS-SP1(3.9.9):否
影响性分析说明:这是关于Python中的一个函数漏洞的描述。具体来说,Python中的email.utils.parseaddr函数在版本3.11.4之前存在漏洞,攻击者可以通过构造的参数来触发"RecursionError: maximum recursion depth exceeded while calling a Python object"错误。这个参数很可能是来自应程序输入数据的一个不受信任的值,本应包含一个姓名和电子邮件地址。需要注意的是,email.utils.parseaddr被归类为Python邮件包文档中的传统API。应用程序应该使用email.parser.BytesParser或email.parser.Parser来代替。
社区认为这既不是漏洞也不是错误。邮件包旨在具有大小限制,当超出限制时会引发异常;在示例演示代码中超出了限制。
openEuler评分: 5.3
Vector:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(3.7.9):不受影响
2.openEuler-20.03-LTS-SP3(3.7.9):不受影响
3.openEuler-22.03-LTS(3.9.9):不受影响
4.openEuler-22.03-LTS-SP1(3.9.9):不受影响
5.openEuler-22.03-LTS-SP2(3.9.9):不受影响
修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(3.7.9):否
2.openEuler-20.03-LTS-SP3(3.7.9):否
3.openEuler-22.03-LTS(3.9.9):否
4.openEuler-22.03-LTS-SP1(3.9.9):否
登录 后才可以发表评论
FileDragTip