首页 网络安全 正文
  • 本文约1100字,阅读需6分钟
  • 194
  • 0

Waitress HTTP 流水线请求处理竞争条件漏洞CVE-2024-49768

摘要

栋科技漏洞库关注到 Waitress 组件发布v3.0.1 版本更新,修复一个HTTP 流水线请求处理竞争条件漏洞,漏洞被追踪为CVE-2024-49768。

Python有很多web框架,如jango、Flask、Tornado 、sanic等,如Odoo、Superset都基于Flask框架进行开发的开源平台,具有强大功能。

在Linux下,默认使用的WSGI Server一般为Gunicorn,常规Django和Flas 应用部署中都有大量站点使用 Gunicorn,但它不支持Windows。

Waitress 这个简单高效的 WSGI(Web Server Gateway Interface)服务器能可以解决上述问题,它专注于提供可靠的、高性能Web服务。

Web服务网关接口(Web Server Gateway Interface,简称“WSGI”)是一种在Web服务器 和Python Web应用程序或框架之间的标准接口。

一、基本情况

Waitress由Zope Corporation开发并维护,旨在提供可靠的、高性能的 Web 服务,可以在Windows、Linux、Unix等可以在多平台下运行。

Waitress的设计理念是简单、易用、可靠,其专注于处理 WSGI 请求,是具备生产级品质并有高性能的纯python编写独立的WSGI服务器。

Waitress 核心亮点在于其多线程模型和智能调度策略,支持异步I/O,通过工作线程池来处理请求,从而可以避免单个请求阻塞其他请求。

Waitress HTTP 流水线请求处理竞争条件漏洞CVE-2024-49768

栋科技漏洞库关注到 Waitress 组件发布v3.0.1 版本更新,修复一个HTTP 流水线请求处理竞争条件漏洞,漏洞被追踪为CVE-2024-49768。

二、漏洞分析

CVE-2024-49768漏洞是Python的Waitress WSGI服务器中发现的竞态条件漏洞,其CVSS3.1评分为9.8,Waitress 3.0.1版本已修复该漏洞。

Waitress 是一个用于Python 2和 3 的Web服务器网关接口服务器,远程客户端可能发送一个长度恰好为 recv_bytes(默认8192)的请求。

然后,再通过使用 HTTP 管道发送第二个辅助请求。而当请求前瞻被禁用(这是默认设置)的时候,Waitress将不会再读取其他任何请求。

如果第一个请求由于解析错误而失败时,Waitress会简单地关闭连接。

然而,当启用请求前瞻时,Waitress可以处理和接收第一个请求,在读取下一个请求并将其排队的同时,开始将错误消息发送回客户端。

这将允许工作线程为次要请求提供服务,同时应关闭连接,因此就导致竞态条件问题,新发布的Waitress 3.0.1 版本已修复竞态条件问题。

作为一种解决方法,官方建议禁用 channel_request_lookahead(默认设置为 0,禁用此功能)。

三、影响范围

2.0.0 < = Waitress 组件 < 3.0.1

四、修复建议

Waitress 组件 >= 3.0.1 

五、参考链接

https://access.redhat.com/security/cve/CVE-2024-49768

https://github.com/Pylons/waitress/security/advisories/GHSA-9298-4cf8-g4wj



扫描二维码,在手机上阅读
评论
更换验证码
友情链接