一、漏洞信息
漏洞编号:CVE-2022-40897
漏洞归属组件:python-setuptools
漏洞归属的版本:65.5.1之前
CVSS V3.0分值:
BaseScore:7.5 High
Vector:CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
漏洞简述:
Python Packaging Authority (PyPA) setuptools before 65.5.1 allows remote attackers to cause a denial of service via HTML in a crafted package or custom PackageIndex page. There is a Regular Expression Denial of Service (ReDoS) in package_index.py.
漏洞公开时间:2022-12-23 08:15
漏洞创建时间:2023-01-04 11:41:12
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2022-40897
漏洞分析指导链接:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
其它
漏洞补丁信息:
影响的包 | 修复版本 | 修复补丁 | 问题引入补丁 | 来源 |
---|---|---|---|---|
https://github.com/pypa/setuptools/commit/43a9c9bfa6aa626ec2a22540bea28d2ca77964be | nvd |
二、漏洞分析结构反馈
影响性分析说明:
setuptools65.5.1之前的版本中存在着一个正则表达式拒绝服务的Dos漏洞。当攻击者以调用setuptools中的package_index模块的REL变量的时候,如果该变量调用的函数中传入的参数带有很长的空字符串,会极大的消耗系统的资源
openEuler评分:
7.5
Vector:CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(44.1.1):受影响
2.openEuler-20.03-LTS-SP3(44.1.1):受影响
3.openEuler-22.03-LTS(59.4.0):受影响
4.openEuler-22.03-LTS-SP1(59.4.0):受影响
修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(44.1.1):是
2.openEuler-20.03-LTS-SP3(44.1.1):是
3.openEuler-22.03-LTS(59.4.0):是
4.openEuler-22.03-LTS-SP1(59.4.0):是
三、漏洞修复
安全公告链接:https://www.openeuler.org/zh/security/safety-bulletin/detail/?id=openEuler-SA-2023-1004
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
在setuptools65.5.1之前的版本中存在着一个正则表达式拒绝服务的Dos漏洞。当攻击者以调用setuptools中的package_index模块的REL变量的时候,如果该变量调用的函数中传入的参数带有很长的空字符串,会极大的消耗系统的资源
在使用setuptools的package_index模块时,看看是否有调用到REL这个,如果没有,则忽略。有的话再查看REL调用的函数,比如search,match,findall,fullmatch等等函数参数中是否带有很长的空字符串,类似这样setuptools.package_index.REL.search('< rel=' + ' ' * 2**12),如果有的话,请去掉这些空字符串。
复现代码:
import setuptools.package_index as sp
sp.REL.search('< rel=' + ' ' * 2**12)
会长时间运行
其中该cve还涉及到了接口变更。
变更一,如果st中字符串(复现代码中的字符串st)包含rel = 字符,如果=(rel后面的等号)前后的空字符串超过10位(不包含10位),修复前正常返回,修复后返回None
复现代码:
import setuptools.package_index as ap
st = '< rel ='+ ' '*11 + '>'
print(ap.REL.search(st))
或者
import setuptools.package_index as ap
st = '< rel' +' '*11 + '= >'
print(ap.REL.search(st))
修复前
>>> import setuptools.package_index as ap
>>> st = '< rel ='+ ' '*11 + '>'
>>> print(ap.REL.search(st))
<re.Match object; span=(0, 19), match='< rel = >'>
修复后:
>>> import setuptools.package_index as ap
>>> st = '< rel ='+ ' '*11 + '>'
>>> print(ap.REL.search(st))
None
变更二,如果st中字符串(复现代码中的字符串st)包含<rel = >字符,如果最后一个>字符前面=字符后面没有非空字符串时,也就是说=字符后面>字符前面没有其他字符,那么修复前正常返回,修复后返回None
复现代码:
import setuptools.package_index as ap
st = '< rel = >'
print(ap.REL.search(st))
修复前:
>>> import setuptools.package_index as ap
>>> st = '< rel = >'
>>> print(ap.REL.search(st))
<re.Match object; span=(0, 9), match='< rel = >'>
修复后:
>>> import setuptools.package_index as ap
>>> st = '< rel = >'
>>> print(ap.REL.search(st))
None
当调用setuptools中的package_index模块的REL变量的时候,如果该变量调用的函数中传入的参数带有很长的空字符串,会极大的消耗系统的资源,所以上游限制了不超过10个空字符串。如果业务中有使用REL调用相关函数时,需要注意长度超过10的空字符串带来的影响。
影响性分析说明:setuptools65.5.1之前的版本中存在着一个正则表达式拒绝服务的Dos漏洞。当攻击者以调用setuptools中的package_index模块的REL变量的时候,如果该变量调用的函数中传入的参数带有很长的空字符串,会极大的消耗系统的资源
openEuler评分: (评分和向量)7.5
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(44.1.1):受影响
2.openEuler-20.03-LTS-SP3(44.1.1):受影响
3.openEuler-22.03-LTS(59.4.0):受影响
4.openEuler-22.03-LTS-SP1(59.4.0):受影响
修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(44.1.1):是
2.openEuler-20.03-LTS-SP3(44.1.1):是
3.openEuler-22.03-LTS(59.4.0):是
4.openEuler-22.03-LTS-SP1(59.4.0):是
影响性分析说明:setuptools65.5.1之前的版本中存在着一个正则表达式拒绝服务的Dos漏洞。当攻击者以调用setuptools中的package_index模块的REL变量的时候,如果该变量调用的函数中传入的参数带有很长的空字符串,会极大的消耗系统的资源
openEuler评分: (评分和向量)7.5
Vector:CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(44.1.1):受影响
2.openEuler-20.03-LTS-SP3(44.1.1):受影响
3.openEuler-22.03-LTS(59.4.0):受影响
4.openEuler-22.03-LTS-SP1(59.4.0):受影响
修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(44.1.1):是
2.openEuler-20.03-LTS-SP3(44.1.1):是
3.openEuler-22.03-LTS(59.4.0):是
4.openEuler-22.03-LTS-SP1(59.4.0):是
登录 后才可以发表评论