Ubuntu 16.04 ESM / 18.04 ESM / 20.04 LTS / 22.04 LTS : Go 漏洞 (USN-6038-2)

critical Nessus 插件 ID 187743

简介

远程 Ubuntu 主机缺少一个或多个安全更新。

描述

远程 Ubuntu 16.04 ESM/18.04 ESM/20.04 LTS/22.04 LTS 主机上安装的多个程序包受到 USN-6038-2 公告中提及的多个漏洞影响。

- 在 Go 1.17.12 和 Go 1.18.4 之前的 net/http 客户端中接受某些无效的 Transfer-Encoding 标头后,如果与同样未能将标头正确拒绝为无效的中间服务器结合,则允许 HTTP 请求走私。(CVE-2022-1705)

- 在 Go 1.18.6 之前版本以及 1.19.1 1.19.x 之前版本中,如果关闭操作被致命错误抢占,则 HTTP/2 连接可在关闭期间挂起,攻击者可借此通过 net/http 造成拒绝服务。(CVE-2022-27664)

- Go 1.17.12 和 Go 1.18.4 之前的版本中,encoding/xml 中的 Decoder.Skip 中不受控制的递归允许攻击者通过深度嵌套的 XML 文档引起堆栈耗尽,从而造成错误。(CVE-2022-28131)

- Reader.Read 未对文件标头的最大大小设置限制。恶意构建的存档可导致 Read 分配不受限制的内存量,从而可能导致资源耗尽或错误。
修复后,Reader.Read 将标头块的最大大小限制为 1 MiB。(CVE-2022-2879)

- ReverseProxy 转发的请求包括入站请求的原始查询参数,包括 net/http 拒绝的无法解析的参数。当 Go 代理转发具有不可解析值的参数时,这可能允许查询参数走私。修复后,在 ReverseProxy 之后设置出站请求的表单字段时,ReverseProxy 会审查转发的查询中的查询参数。Director 函数返回即表示代理已解析查询参数。不解析查询参数的代理继续转发不变的原始查询参数。(CVE-2022-2880)

- Go 在 1.17.10 之前的版本和在 1.18.2 之前的 1.18.x 版本中权限分配不正确。当使用非零标记参数调用时,Faccessat 函数可能错误地报告文件可访问。
(CVE-2022-29526)

- Go 1.17.11 和 Go 1.18.3 之前的版本中,crypto/tls 中会话票证中 ticket_age_add 的非随机值会让攻击者能够观察 TLS 握手,以在会话恢复期间通过比较票证使用时间来关联连续的连接。(CVE-2022-30629)

- Go 1.17.12 和 Go 1.18.4 之前的 Glob 中不受控制的递归允许攻击者通过包含大量路径分隔符的路径,由于堆栈耗尽而造成错误。
(CVE-2022-30630)

- Go 1.17.12 和 Go 1.18.4 之前版本中,compress/gzip 中的 Reader.Read 中不受控制的递归允许攻击者通过包含大量连接的 0 长度压缩文件的存档,由于堆栈耗尽而造成错误。(CVE-2022-30631)

- Go 1.17.12 和 Go 1.18.4 之前版本中,path/filepath 中的 Glob 中不受控制的递归允许攻击者通过包含大量路径分隔符的路径,由于堆栈耗尽而造成错误。
(CVE-2022-30632)

- Go 1.17.12和 Go 1.18.4 之前的版本中,encoding/xml 中的 Unmarshal 中不受控制的递归允许攻击者通过将 XML 文档解组到具有使用“any”字段标记的嵌套字段的 Go 结构中来造成错误。(CVE-2022-30633)

- Go 1.17.12 和 Go 1.18.4 之前的版本中,encoding/gob 中的 Decoder.Decode 中不受控制的递归允许攻击者通过包含深度嵌套结构的消息,由于堆栈耗尽而造成错误。
(CVE-2022-30635)

- Go 1.17.12 和 Go 1.18.4 之前的版本中,net/http 中不当暴露客户端 IP 地址可通过使用包含 X-Forwarded-For 标头的 nil 值的 Request.Header 映射调用 httputil.ReverseProxy.ServeHTTP 来触发,这会造成 ReverseProxy 将客户端 IP 设置为 X-Forwarded-For 标头的值。(CVE-2022-32148)

- 在 1.17.13 和 1.18.5 版之前的 Go 的 math/big 中,编码过短的消息可能导致 Float.GobDecode 和 Rat GobDecode 发生错误,从而可能造成拒绝服务。(CVE-2022-32189)

- 攻击者可造成接受 HTTP/2 请求的 Go 服务器内存过度增长。HTTP/2 服务器连接包含客户端发送的 HTTP 标头密钥的缓存。尽管此缓存中的条目总数已上限,但攻击者可发送非常大的密钥,从而导致服务器为每个打开的连接分配大约 64 MiB。(CVE-2022-41717)

- 即使在解析小型输入时,HTTP 和 MIME 标头解析也可能会分配大量内存,从而可能导致拒绝服务。输入数据的某些异常模式可导致用于解析 HTTP 和 MIME 标头的通用函数分配远超所需的内容来保存已解析的标头。攻击者可能会利用此行为,导致 HTTP 服务器通过小型请求分配大量内存,从而可能导致内存耗尽和拒绝服务。
经修复后,标头解析现在可以正确分配所需内存来保存已解析的标头。
(CVE-2023-24534)

- 在包含具有极大行号的 //line 指令的 Go 源代码中,调用任何 Parse 函数都有可能因整数溢出而造成无限循环。(CVE-2023-24537)

- 模板未正确将反引号 (`) 视为 Javascript 字符串分隔符,也未按预期对其进行转义。自 ES6 起,反引号可用于 JS 模板文本。如果模板的 Javascript 模板文本中包含 Go 模板操作,则此操作的内容可用于停用文本,进而将任意 Javascript 代码注入 Go 模板。ES6 模板文字相当复杂,且其本身可以执行字符串插入操作,因此决定简单地禁止在此类文字中使用 Go 模板操作(例如 var a = {{.}}),因为没有显然安全的方式支持此行为。此方法与 github.com/google/safehtml 相同。经修复后,Template.Parse 在遇到此类模板时会返回一个 ErrorCode 值为 12 的错误。此 ErrorCode 当前并未导出,但将在 Go 1.21 版本中导出。依赖之前行为的用户可以使用 GODEBUG 标记 jstmpllitinterp=1 重新启用它,但需要注意的是现在将对反引号进行转义。应谨慎使用此做法。(CVE-2023-24538)

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

解决方案

更新受影响的程序包。

另见

https://ubuntu.com/security/notices/USN-6038-2

插件详情

严重性: Critical

ID: 187743

文件名: ubuntu_USN-6038-2.nasl

版本: 1.1

类型: local

代理: unix

发布时间: 2024/1/9

最近更新时间: 2024/1/9

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

风险信息

VPR

风险因素: Medium

分数: 6.7

CVSS v2

风险因素: Medium

基本分数: 5

时间分数: 3.9

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

CVSS 分数来源: CVE-2022-29526

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 8.8

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

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

CVSS 分数来源: CVE-2023-24538

漏洞信息

CPE: cpe:/o:canonical:ubuntu_linux:20.04:-:lts, cpe:/o:canonical:ubuntu_linux:22.04:-:lts, cpe:/o:canonical:ubuntu_linux:16.04:-:esm, cpe:/o:canonical:ubuntu_linux:18.04:-:esm, p-cpe:/a:canonical:ubuntu_linux:golang-1.13, p-cpe:/a:canonical:ubuntu_linux:golang-1.13-go, p-cpe:/a:canonical:ubuntu_linux:golang-1.13-src, p-cpe:/a:canonical:ubuntu_linux:golang-1.16, p-cpe:/a:canonical:ubuntu_linux:golang-1.16-go, p-cpe:/a:canonical:ubuntu_linux:golang-1.16-src

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

可利用: true

易利用性: Exploits are available

补丁发布日期: 2024/1/9

漏洞发布日期: 2022/5/15

参考资料信息

CVE: CVE-2022-1705, CVE-2022-27664, CVE-2022-28131, CVE-2022-2879, CVE-2022-2880, CVE-2022-29526, CVE-2022-30629, CVE-2022-30630, CVE-2022-30631, CVE-2022-30632, CVE-2022-30633, CVE-2022-30635, CVE-2022-32148, CVE-2022-32189, CVE-2022-41717, CVE-2023-24534, CVE-2023-24537, CVE-2023-24538

USN: 6038-2