Debian DLA-3000-1:waitress - LTS 安全更新

high Nessus 插件 ID 161188

简介

远程 Debian 主机上缺少一个或多个与安全性相关的更新。

描述

远程 Debian 9 主机上安装的多个程序包受到 dla-3000 公告中提及的多个漏洞影响。

-Waitress 1.3.1 及之前版本实现了 RFC7230 的 MAY 部分,其中指出:尽管 start-line 和 header 字段的行结束符是序列 CRLF,但接收方可以将单个 LF 识别为行结束符并忽略任何前面的 CR。遗憾的是,如果前端服务器使用 LF 解析 header 字段的方式与使用 CRLF 解析 header 字段的方式不同,则可能导致前端和后端服务器以两种不同的方式解析相同的 HTTP 消息。这有可能导致 HTTP 请求走私/拆分问题,从而使 Waitress 看到两个请求,而前端服务器只能看到一则 HTTP 消息。此问题已在 Waitress 1.4.0 中解决。(CVE-2019-16785)

- Waitress 1.3.1 及之前版本将解析 Transfer-Encoding 标头,并且仅查找单个字符串值,但如果该值之前未分块,则将无法找到该值并改为使用 Content-Length 标头。
根据 HTTP 标准,Transfer-Encoding 应该是一个以逗号分隔的列表,最内层的编码在前,随后是进一步处理的传输编码,最后则是分块编码。通过“
Transfer-Encoding: gzip, chunked”方式发送的请求会被错误地忽略,并且该请求会转而使用 Content-Length 标头来确定 HTTP 消息的正文大小。若是使用 HTTP 管道,这可能会允许 Waitress 将单个请求视为多个请求。此问题已在 Waitress 1.4.0 中解决。(CVE-2019-16786)

- 在 Waitress 1.4.0 及之前版本中,如果在 Waitress 之前使用了代理服务器,则绕过前端的攻击者可以发送一个无效请求,而 Waitress 将以不同方式解析该请求,从而可能导致 HTTP 请求走私问题。Transfer-Encoding 标头中包含特殊空白字符的特别构建请求将被 waitress 解析为分块请求,但是前端服务器会使用 Content-Length,因为 Transfer-Encoding 标头因包含无效字符而被视为无效。如果前端服务器对后端 Waitress 服务器执行 HTTP 管道操作,这可能导致 HTTP 请求拆分,继而可能引起缓存中毒或非预期的信息泄露问题。此问题已在 Waitress 1.4.1 及之前版本中,通过更严格的 HTTP 字段验证进行修复。
(CVE-2019-16789)

- Waitress 1.3.1 及之前版本允许通过发送两次 Content-Length 标头造成请求走私。
Waitress 会对双重 Content-Length 标头执行标头折叠操作,并且由于无法将现在的逗号分隔值转换为整数,因此系统会将 Content-Length 在内部设置为 0。如果在单个请求中发送两个 Content-Length 标头,Waitress 会将该请求视为无正文,从而在 HTTP 管道中将此请求的正文视为新请求。此问题已在 Waitress 1.4.0 中解决。
(CVE-2019-16792)

-Waitress 是用于 Python 2 和 3 的 Web 服务器网关接口服务器。当在未正确验证传入 HTTP 请求是否符合 RFC7230 标准的代理后面使用 Waitress 2.1.0 及更低版本时,Waitress 和前端代理可能会就请求的开始位置和结束位置产生分歧。这将允许通过前端代理将请求走私给 waitress,以及执行更多恶意操作。此公告已解决两类可导致请求走私的漏洞:使用 Python 的“int()”将字符串解析为整数,导致将“+10”解析为“10”或将“0x01”解析为“1”,其中标准指定字符串应仅包含数字或十六进制数字;
Waitress 不支持区块扩展,但它在未验证区块扩展中不包含非法字符的情况下便将其丢弃。已在 Waitress 2.1.1 中修正此漏洞。现在也提供变通方案。在 waitress 前面部署代理时,开启所有功能以确保请求符合 RFC7230 标准。但某些代理服务器可能不提供此功能,因此建议用户升级到最新版 Waitress。
(CVE-2022-24761)

请注意,Nessus 尚未测试这些问题,而是只依靠应用程序自我报告的版本号来判断。

解决方案

升级 waitress 程序包。

针对 Debian 9 Stretch,这些问题已在 1.0.1-1+deb9u1 版本中解决。

另见

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008013

https://security-tracker.debian.org/tracker/source-package/waitress

https://www.debian.org/lts/security/2022/dla-3000

https://security-tracker.debian.org/tracker/CVE-2019-16785

https://security-tracker.debian.org/tracker/CVE-2019-16786

https://security-tracker.debian.org/tracker/CVE-2019-16789

https://security-tracker.debian.org/tracker/CVE-2019-16792

https://security-tracker.debian.org/tracker/CVE-2022-24761

https://packages.debian.org/source/stretch/waitress

插件详情

严重性: High

ID: 161188

文件名: debian_DLA-3000.nasl

版本: 1.3

类型: local

代理: unix

发布时间: 2022/5/13

最近更新时间: 2023/10/27

支持的传感器: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Nessus

风险信息

VPR

风险因素: Medium

分数: 4.4

CVSS v2

风险因素: Medium

基本分数: 6.4

时间分数: 5.3

矢量: CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:N

CVSS 分数来源: CVE-2019-16789

CVSS v3

风险因素: High

基本分数: 8.2

时间分数: 7.6

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N

时间矢量: CVSS:3.0/E:F/RL:O/RC:C

漏洞信息

CPE: p-cpe:/a:debian:debian_linux:python-waitress, p-cpe:/a:debian:debian_linux:python-waitress-doc, p-cpe:/a:debian:debian_linux:python3-waitress, cpe:/o:debian:debian_linux:9.0

必需的 KB 项: Host/local_checks_enabled, Host/Debian/release, Host/Debian/dpkg-l

可利用: true

易利用性: Exploits are available

补丁发布日期: 2022/5/12

漏洞发布日期: 2019/12/20

参考资料信息

CVE: CVE-2019-16785, CVE-2019-16786, CVE-2019-16789, CVE-2019-16792, CVE-2022-24761