Amazon Linux 2:golang (ALASGOLANG1.19-2023-002)

critical Nessus 插件 ID 182007

简介

远程 Amazon Linux 2 主机缺少安全更新。

描述

远程主机上安装的 golang 版本低于 1.19.6-1。因此,它受到 ALAS2GOLANG1.19-2023-002 公告中提及的多个漏洞影响。

- 1.16.10 之前的 Go 版本和 1.17.3 之前的 Go 1.17.x 版本的 debug/macho(适用于 Open 或 OpenFat)中的 ImportedSymbols 会访问缓冲区末尾之后的内存位置,此情况也称为“越界切片”。
(CVE-2021-41771)

- 在 UNIX 上,1.16.12 之前的 Go 版本和 1.17.5 之前的 Go 1.17.x 版本允许对非预期文件或非预期网络连接执行写入操作,原因是在文件描述符耗尽后错误关闭文件描述符 0。(CVE-2021-44717)

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

- Go 1.17.12 和 Go 1.18.4 之前版本中,go/parser 函数中不受控制的递归允许攻击者通过深度嵌套的类型或声明造成堆栈耗尽。(CVE-2022-1962)

- Go 1.16.14 之前版本以及 Go 1.17.x 至 1.17.7 版本的 math/big 的 Rat.SetString 中存在溢出漏洞,该漏洞可能导致不受控制的内存消耗问题。(CVE-2022-23772)

- Go 1.16.14 之前版本和 1.17.x 至 1.17.7 版本中的 cmd/go 可能会错误地将分支名称解读为版本标记。如果执行者能够创建分支但不能创建标签,则这可能导致错误控制访问权限。(CVE-2022-23773)

- Go 1.16.14 之前版本以及 Go 1.17.x 至 1.17.7 版本的 crypto/elliptic 中的 Curve.IsOnCurve 在 big.Int 值不是有效字段元素的情况下,可能会错误地返回 true。(CVE-2022-23806)

- 在 Go 1.17.9 之前版本以及 1.18.x 的 1.18.1 之前版本中,encoding/pem 允许通过大量 PEM 数据造成解码堆栈溢出。(CVE-2022-24675)

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

- 在 Go 1.17.9 之前版本以及 1.18.x 1.18.1 之前版本中,crypto/elliptic 的通用 P-256 特征允许通过长标量输入造成错误。(CVE-2022-28327)

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

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

- 在 Go 1.17.11 和 Go 1.18.3 之前版本中,os/exec 中的 Cmd.Start 存在代码注入漏洞,这允许通过调用 Cmd.Run、Cmd.Start、Cmd.Output 或 Cmd.CombinedOutput(未设置 Cmd.Path 时)来执行名为 ..com 或 .exe 的工作目录中的任何二进制文件。(CVE-2022-30580)

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

- 在 Windows 系统上的 Go 1.17.11 和 Go 1.18.3 之前版本中, crypto/rand 的 Read 存在无限循环,这允许攻击者通过传递大于 1 << 32 - 1 字节的缓冲区来造成无限期挂起。(CVE-2022-30634)

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

- 从不受信任的来源编译正则表达式的程序容易受到内存耗尽或拒绝服务的影响。解析后的 regexp 表示与输入的大小成线性关系,但在某些情况下,常数因子可高达 40,000,使得相对较小的 regexp 消耗大量内存。修复后,每个被解析的 regexp 被限制为 256 MB 内存占用。正则表达式的表示会使用比拒绝的表达式更多的空间。正则表达式的正常使用不受影响。 (CVE-2022-41715)

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

- Windows 上的 filepath.Clean 中存在一个路径遍历漏洞。在 Windows 上,filepath.Clean 函数可将无效路径转换为有效路径,例如将 a/../c: /b 转换为有效路径 c:\b。这种从相对(如果无效)路径到绝对路径的转换可能会发动目录遍历攻击。修复后,filepath.Clean 函数会将此路径转换为相对(但仍然无效)的路径 。\c:\b。(CVE-2022-41722)

- 恶意构建的 HTTP/2 流可造成 HPACK 解码器过度消耗 CPU,这足以通过少量小请求造成拒绝服务。(CVE-2022-41723)

- 大量握手记录可能会造成 crypto/tls 错误。客户端和服务器都可能发送大型 TLS 握手记录,从而在尝试构造响应时分别造成服务器和客户端错误。这会影响所有 TLS 1.3 版客户端、明确启用会话恢复的 TLS 1.2 版客户端(通过将 Config.ClientSessionCache 设置为非 nil 值)以及请求客户端证书的 TLS 1.3 版服务器(通过设置 Config.ClientAuth >= RequestClientCert)。(CVE-2022-41724)

- net/http 和 mime/multipart 中的过量资源消耗可能导致拒绝服务。
使用 mime/multipart.Reader.ReadForm 进行的多部分表单解析会消耗大量不受限制的内存和磁盘文件。这也会影响使用 Request 方法 FormFile、FormValue、ParseMultipartForm 和 PostFormValue 在 net/http 程序包中进行的表单解析。ReadForm 采用 maxMemory 参数,据记载其在内存中最多可存储 +10MB maxMemory 字节(为非文件部分预留)。无法存储在内存中的文件部分以临时文件的形式存储在磁盘上。为非文件部分保留的不可配置的 10MB 过大,可能会单独打开拒绝服务矢量。但是,ReadForm 没有正确考虑解析的表单消耗的所有内存,例如映射条目开销、部分名称和 MIME 标头,从而允许恶意构建的表单消耗远远超过 10MB。此外,ReadForm 对创建的磁盘文件数量没有限制,允许相对较小的请求正文创建大量磁盘临时文件。修复后,ReadForm 现在可以正确考虑各种形式的内存开销,并且现在应将开销保持在其记录的 10MB + maxMemory 字节内存消耗内。用户仍应意识到此限制较高且可能仍然存在危险。此外,ReadForm 现在至多创建一个磁盘临时文件,从而将多个表单部分合并为一个临时文件。mime/multipart.File 接口类型的文档指出,如果存储在磁盘上,File 的底层具体类型将为 *os.File.。当表单包含多个文件部分时,情况不再如此,这是因为将多个文件部分合并为一个文件所致。可通过环境变量 GODEBUG=multipartfiles=distinct 重新启用之前对每个表单部分使用不同文件的行为。用户应注意,multipart.ReadForm 和调用它的 http.Request 方法不会限制临时文件消耗的磁盘数量。调用方可使用 http.MaxBytesReader 限制表单数据的大小。(CVE-2022-41725)

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

解决方案

运行 'yum update golang' 以更新系统。

另见

https://alas.aws.amazon.com/AL2/ALASGOLANG1.19-2023-002.html

https://alas.aws.amazon.com/cve/html/CVE-2021-41771.html

https://alas.aws.amazon.com/cve/html/CVE-2021-44717.html

https://alas.aws.amazon.com/cve/html/CVE-2022-1705.html

https://alas.aws.amazon.com/cve/html/CVE-2022-1962.html

https://alas.aws.amazon.com/cve/html/CVE-2022-23772.html

https://alas.aws.amazon.com/cve/html/CVE-2022-23773.html

https://alas.aws.amazon.com/cve/html/CVE-2022-23806.html

https://alas.aws.amazon.com/cve/html/CVE-2022-24675.html

https://alas.aws.amazon.com/cve/html/CVE-2022-27664.html

https://alas.aws.amazon.com/cve/html/CVE-2022-28327.html

https://alas.aws.amazon.com/cve/html/CVE-2022-2879.html

https://alas.aws.amazon.com/cve/html/CVE-2022-2880.html

https://alas.aws.amazon.com/cve/html/CVE-2022-30580.html

https://alas.aws.amazon.com/cve/html/CVE-2022-30632.html

https://alas.aws.amazon.com/cve/html/CVE-2022-30634.html

https://alas.aws.amazon.com/cve/html/CVE-2022-30635.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41715.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41717.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41722.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41723.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41724.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41725.html

https://alas.aws.amazon.com/faqs.html

插件详情

严重性: Critical

ID: 182007

文件名: al2_ALASGOLANG1_19-2023-002.nasl

版本: 1.2

类型: local

代理: unix

发布时间: 2023/9/27

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

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

风险信息

VPR

风险因素: Medium

分数: 5.9

CVSS v2

风险因素: Medium

基本分数: 6.4

时间分数: 5

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

CVSS 分数来源: CVE-2022-23806

CVSS v3

风险因素: Critical

基本分数: 9.1

时间分数: 8.2

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

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

漏洞信息

CPE: p-cpe:/a:amazon:linux:golang, p-cpe:/a:amazon:linux:golang-bin, p-cpe:/a:amazon:linux:golang-docs, p-cpe:/a:amazon:linux:golang-misc, p-cpe:/a:amazon:linux:golang-race, p-cpe:/a:amazon:linux:golang-shared, p-cpe:/a:amazon:linux:golang-src, p-cpe:/a:amazon:linux:golang-tests, cpe:/o:amazon:linux:2

必需的 KB 项: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list

可利用: true

易利用性: Exploits are available

补丁发布日期: 2023/8/7

漏洞发布日期: 2021/11/8

参考资料信息

CVE: CVE-2021-41771, CVE-2021-44717, CVE-2022-1705, CVE-2022-1962, CVE-2022-23772, CVE-2022-23773, CVE-2022-23806, CVE-2022-24675, CVE-2022-27664, CVE-2022-28327, CVE-2022-2879, CVE-2022-2880, CVE-2022-30580, CVE-2022-30632, CVE-2022-30634, CVE-2022-30635, CVE-2022-41715, CVE-2022-41717, CVE-2022-41722, CVE-2022-41723, CVE-2022-41724, CVE-2022-41725

IAVB: 2022-B-0008-S, 2022-B-0025-S, 2022-B-0042-S, 2022-B-0059-S, 2023-B-0012-S