Cloudanix VulnDB

CVE-2024-24784

High · 7.5

CVSS

7.5

EPSS

1.1%

Published

Mar 5, 2024

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A software flaw could let an attacker disguise their email address to trick an application into granting them access as if they were a trusted user.

Chainable
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Tampering
Component
Library
Class
Authorization Bypass
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability stems from incorrect parsing of comments within the display name of an email address by the Go `net/mail` library's `ParseAddressList` function. This parser differential, where the vulnerable library interprets an address differently than standard-compliant parsers, can be exploited to bypass security controls. An attacker can craft an address that one system sees as legitimate (e.g., from a trusted domain) while another system sees the true, malicious address, leading to a bypass of integrity checks and authorization rules.

Why it matters to the business

This flaw can allow attackers to impersonate trusted users or services, bypassing security checks that rely on email address validation. This could lead to unauthorized access to sensitive applications and data, account takeover, and circumvention of business logic, potentially resulting in data breaches, financial fraud, or reputational damage.

How an attack unfolds

An attacker identifies a public-facing application, such as a login portal or an email-based service, that is built with a vulnerable version of Go. They craft a specially formatted email address string, for example, `"Trusted User" (attacker@malicious.com) <user@trusted-domain.com>`. The attacker submits this string during a process like user registration or password reset. The vulnerable Go application's `ParseAddressList` function incorrectly parses this string, potentially ignoring the comment or misinterpreting the actual address. This confusion causes the application to make a flawed security decision, such as linking the attacker's session to an account at `trusted-domain.com` or granting access based on the perceived trusted domain, effectively bypassing the intended authentication or authorization mechanism.

How to fix it

This vulnerability is patched in the Go standard library. Developers must recompile their applications using an updated Go toolchain. Upgrade to Go version 1.22.1 or later, or Go version 1.21.8 or later (for the 1.21.x series). Any application built with a vulnerable Go version remains at risk until it is rebuilt with a patched compiler.

How to confirm the fix worked

To confirm remediation, verify that all Go-based applications are compiled with Go 1.22.1+ or 1.21.8+. This can be checked by running `go version` in the build environment or inspecting the build pipeline configuration. To test for exposure, security teams can audit source code for dependencies on the `net/mail` package and create a unit test with a crafted address like `"test" (comment) <test@example.com>` to observe the parsing behavior. A vulnerable system may parse this incorrectly, while a patched system will handle it correctly according to RFC specifications.

Typical attack path

  1. The attacker identifies a target application that uses a vulnerable version of the Go `net/mail` library for parsing email addresses as part of a security control.
  2. The attacker crafts a malicious email address string containing a comment in the display name, designed to be misinterpreted by the vulnerable parser.
  3. The attacker submits this string to the target application, for example, during a login, registration, or password reset flow.
  4. The vulnerable application incorrectly parses the address, making a flawed trust decision, such as granting access based on a spoofed identity.
  5. The attacker successfully bypasses the security control and gains unauthorized access or performs a privileged action.

How to detect it

To detect potential exploitation, security teams should review application logs for services that process email addresses for authentication or authorization. Search for log entries where the email address field contains unusual structures, specifically parentheses `()` within the display name part of the address (the string before the `<email@domain.com>`). For example, an authentication log showing a username of `"User" (attacker@evil.com) <user@corp.com>` is highly suspicious. Correlate the appearance of such patterns with successful but unexpected user authentications or privileged operations.

  • " (comment) <user@example.com>
  • "DisplayName" (attacker@evil.com) <user@trusted.com>
  • "user"()@example.com

What your security team should do

  • Identify all applications built using the Go programming language and determine the compiler version used. Prioritize upgrading build environments to Go 1.22.1+ or 1.21.8+ and recompiling all affected applications.
  • Audit applications that use email addresses for security-sensitive functions (e.g., authentication, authorization, password resets) to assess the potential impact of an address parsing bypass.
  • Enhance monitoring for application logs, specifically looking for malformed email address strings containing parentheses in the display name, which could indicate attempted or successful exploitation.

The record

The ParseAddressList function incorrectly handles comments (text within parentheses) within display names. Since this is a misalignment with conforming address parsers, it can result in different trust decisions being made by programs using different parsers.

Affected packages

Ecosystem Package Introduced Fixed
Go stdlib 0 1.21.8
AlmaLinux:8 aardvark-dns 0 2:1.10.0-1.module_el8.10.0+3792+03eaed9c
AlmaLinux:8 aardvark-dns 0 2:1.10.0-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 aardvark-dns 0 2:1.10.0-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 buildah 0 2:1.33.8-4.module_el8.10.0+3876+e55593a8
AlmaLinux:8 buildah-tests 0 2:1.33.8-4.module_el8.10.0+3876+e55593a8
AlmaLinux:8 cockpit-podman 0 84.1-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 cockpit-podman 0 84.1-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3845+87b84552
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 container-selinux 0 2:2.229.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 containernetworking-plugins 0 1:1.4.0-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 containers-common 0 2:1-82.module_el8.10.0+3876+e55593a8
AlmaLinux:8 crit 0 3.18-5.module_el8.10.0+3845+87b84552
AlmaLinux:8 crit 0 3.18-5.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 crit 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 criu 0 3.18-5.module_el8.10.0+3845+87b84552
AlmaLinux:8 criu 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 criu-devel 0 3.18-5.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 criu-devel 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 criu-libs 0 3.18-5.module_el8.10.0+3845+87b84552
AlmaLinux:8 criu-libs 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 crun 0 1.14.3-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 crun 0 1.14.3-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 delve 0 1.21.2-3.module_el8.10.0+3760+4dd778f9
AlmaLinux:8 fuse-overlayfs 0 1.13-1.module_el8.10.0+3792+03eaed9c
AlmaLinux:8 fuse-overlayfs 0 1.13-1.module_el8.10.0+3859+6ae70a0e
AlmaLinux:8 go-toolset 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 golang 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 golang-bin 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 golang-docs 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 golang-misc 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 golang-src 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 golang-tests 0 1.21.9-1.module_el8.10.0+3840+edaca3c3
AlmaLinux:8 libslirp 0 4.4.0-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 libslirp 0 4.4.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 libslirp 0 4.4.0-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 netavark 0 2:1.10.3-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 netavark 0 2:1.10.3-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 netavark 0 2:1.10.3-1.module_el8.10.0+3845+87b84552
AlmaLinux:8 oci-seccomp-bpf-hook 0 1.2.10-1.module_el8.10.0+3792+03eaed9c
AlmaLinux:8 oci-seccomp-bpf-hook 0 1.2.10-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-catatonit 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman-catatonit 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-docker 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman-docker 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-gvproxy 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman-gvproxy 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-plugins 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman-plugins 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-remote 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman-remote 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-tests 0 4:4.9.4-12.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman-tests 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 python3-criu 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 python3-criu 0 3.18-5.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 python3-podman 0 4.9.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 runc 0 1:1.1.12-4.module_el8.10.0+3876+e55593a8
AlmaLinux:8 skopeo 0 2:1.14.5-3.module_el8.10.0+3876+e55593a8
AlmaLinux:8 skopeo-tests 0 2:1.14.5-3.module_el8.10.0+3876+e55593a8
AlmaLinux:8 slirp4netns 0 1.2.3-1.module_el8.10.0+3845+87b84552
AlmaLinux:8 slirp4netns 0 1.2.3-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 slirp4netns 0 1.2.3-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 toolbox-tests 0 0.0.99.5-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 toolbox-tests 0 0.0.99.5-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 udica 0 0.2.6-21.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 udica 0 0.2.6-21.module_el8.10.0+3876+e55593a8
AlmaLinux:9 go-toolset 0 1.21.9-2.el9_4
AlmaLinux:9 golang 0 1.21.9-2.el9_4
AlmaLinux:9 golang-bin 0 1.21.9-2.el9_4
AlmaLinux:9 golang-docs 0 1.21.9-2.el9_4
AlmaLinux:9 golang-misc 0 1.21.9-2.el9_4
AlmaLinux:9 golang-src 0 1.21.9-2.el9_4
AlmaLinux:9 golang-tests 0 1.21.9-2.el9_4
Bitnami golang 0 1.21.8
Chainguard actions-runner-controller 0 0.8.3-r1
Chainguard actions-runner-controller-compat 0 0.8.3-r1
Chainguard amass 0 4.2.0-r4
Chainguard argo-cd-2.7 0 2.7.17-r1
Chainguard argo-cd-2.7-compat 0 2.7.17-r1
Chainguard argo-cd-2.7-repo-server 0 2.7.17-r1
Chainguard argo-cd-fips-2.10 0 2.10.2-r1
Chainguard argo-cd-fips-2.10-compat 0 2.10.2-r1
Chainguard argo-cd-fips-2.10-repo-server 0 2.10.2-r1
Chainguard argo-cd-fips-2.9 0 2.9.6-r1
Chainguard argo-cd-fips-2.9-compat 0 2.9.6-r1
Chainguard argo-cd-fips-2.9-repo-server 0 2.9.6-r1
Chainguard argo-workflow-cli 0 3.6.5-r2
Chainguard argo-workflow-cli-fips 0 3.5.5-r1
Chainguard argo-workflow-controller 0 3.6.5-r2
Chainguard argo-workflow-controller-compat 0 3.6.5-r2
Chainguard argo-workflow-controller-compat-fips 0 3.5.5-r1
Chainguard argo-workflow-controller-fips 0 3.5.5-r1
Chainguard argo-workflow-executor 0 3.6.5-r2
Chainguard argo-workflow-executor-compat 0 3.6.5-r2
Chainguard argo-workflow-executor-compat-fips 0 3.5.5-r1
Chainguard argo-workflow-executor-fips 0 3.5.5-r1
Chainguard argo-workflows 0 3.6.5-r2
Chainguard argo-workflows-fips 0 3.5.5-r1
Chainguard argo-workflows-known-hosts 0 3.6.5-r2
Chainguard argo-workflows-known-hosts-fips 0 3.5.5-r1
Chainguard argo-workflows-ui 0 3.6.5-r2
Chainguard atlantis-fips 0 0.33.0-r6
Chainguard aws-ebs-csi-driver 0 1.28.0-r1
Chainguard aws-ebs-csi-driver-1.18 0 1.18.0-r11
Chainguard aws-ebs-csi-driver-1.19 0 1.19.0-r11
Chainguard aws-ebs-csi-driver-fips 0 1.28.0-r1
Chainguard aws-efs-csi-driver 0 1.7.6-r1
Chainguard aws-efs-csi-driver-fips 0 1.7.0-r4
Chainguard aws-efs-csi-driver-fips-1.6 0 1.6.0-r4
Chainguard aws-flb-cloudwatch 0 1.9.4-r7
Chainguard aws-flb-cloudwatch-compat 0 1.9.4-r7
Chainguard aws-flb-firehose 0 1.7.2-r7
Chainguard aws-flb-firehose-compat 0 1.7.2-r7
Chainguard aws-flb-kinesis 0 1.10.2-r7
Chainguard aws-flb-kinesis-compat 0 1.10.2-r7
Chainguard aws-load-balancer-controller 0 2.7.1-r1
Chainguard aws-load-balancer-controller-2.4.5 0 2.4.5-r9
Chainguard aws-load-balancer-controller-2.5 0 2.5.4-r2
Chainguard aws-load-balancer-controller-compat 0 2.7.1-r1
Chainguard aws-load-balancer-controller-compat-2.4.5 0 2.5.4-r2
Chainguard aws-load-balancer-controller-fips 0 2.7.1-r1
Chainguard azure-aad-pod-identity-mic 0 1.8.17-r5
Chainguard azure-aad-pod-identity-nmi 0 1.8.17-r5
Chainguard bank-vaults-fips 0 1.20.4-r5
Chainguard bank-vaults-template-fips 0 1.20.4-r5
Chainguard bazelisk 0 1.19.0-r1
Chainguard bazelisk-default 0 1.19.0-r1
Chainguard bom 0 0.6.0-r1
Chainguard boring-registry-fips 0 0.13.2-r1
Chainguard buildctl 0 0.13.1-r2
Chainguard buildkitd 0 0.13.1-r2
Chainguard caddy 0 2.7.6-r3
Chainguard caddy-man 0 2.7.6-r3
Chainguard caddy-src 0 2.7.6-r3
Chainguard cadvisor 0 0.49.1-r3
Chainguard cadvisor-compat 0 0.49.1-r3
Chainguard calico 0 3.27.2-r2
Chainguard calico-apiserver 0 3.27.2-r2
Chainguard calico-app-policy 0 3.27.2-r2
Chainguard calico-cni 0 3.27.2-r2
Chainguard calico-cni-compat 0 3.27.2-r2
Chainguard calico-cni-fips-compat 0 3.27.2-r1
Chainguard calico-felix 0 3.27.2-r2
Chainguard calico-fips 0 3.27.2-r1
Chainguard calico-fips-apiserver 0 3.27.2-r1
Chainguard calico-fips-app-policy 0 3.27.2-r1
Chainguard calico-fips-cni 0 3.27.2-r1
Chainguard calico-fips-felix 0 3.27.2-r1
Chainguard calico-fips-key-cert-provisioner 0 3.27.2-r1
Chainguard calico-fips-kube-controllers 0 3.27.2-r1
Chainguard calico-fips-node 0 3.27.2-r1
Chainguard calico-fips-pod2daemon 0 3.27.2-r1
Chainguard calico-fips-typha-client 0 3.27.2-r1
Chainguard calico-fips-typhad 0 3.27.2-r1
Chainguard calico-key-cert-provisioner 0 3.27.2-r2
Chainguard calico-kube-controllers 0 3.27.2-r2
Chainguard calico-node 0 3.27.2-r2
Chainguard calico-pod2daemon 0 3.27.2-r2
Chainguard calico-pod2daemon-flexvol-compat 0 3.27.2-r2
Chainguard calico-typha-client 0 3.27.2-r2
Chainguard calico-typhad 0 3.27.2-r2
Chainguard calicoctl 0 3.27.2-r2
Chainguard calicoctl-fips 0 3.27.2-r1
Chainguard capslock 0 0.2.1-r1
Chainguard cass-operator 0 1.18.2-r4
Chainguard cass-operator-compat 0 1.18.2-r4
Chainguard cass-operator-compat-fips 0 1.18.2-r3
Chainguard cass-operator-config 0 1.18.2-r4
Chainguard cass-operator-fips 0 1.18.2-r3
Chainguard cass-operator-fips-no-pvc-delete 0 1.18.2-r4
Chainguard cass-operator-fips-no-pvc-delete-compat 0 1.18.2-r4
Chainguard cert-exporter 0 2.12.0-r1
Chainguard cert-exporter-fips 0 2.12.0-r1
Chainguard cert-manager-fips-1.13 0 1.13.4-r1
Chainguard cert-manager-fips-1.13-acmesolver 0 1.13.4-r1
Chainguard cert-manager-fips-1.13-cainjector 0 1.13.4-r1
Chainguard cert-manager-fips-1.13-cmctl 0 1.13.4-r1
Chainguard cert-manager-fips-1.13-controller 0 1.13.4-r1
Chainguard cert-manager-fips-1.13-webhook 0 1.13.4-r1
Chainguard cert-manager-fips-1.14 0 1.14.3-r1
Chainguard cert-manager-fips-1.14-acmesolver 0 1.14.3-r1
Chainguard cert-manager-fips-1.14-cainjector 0 1.14.3-r1
Chainguard cert-manager-fips-1.14-cmctl 0 1.14.3-r1
Chainguard cert-manager-fips-1.14-controller 0 1.14.3-r1
Chainguard cert-manager-fips-1.14-startupapicheck 0 1.14.3-r1
Chainguard cert-manager-fips-1.14-webhook 0 1.14.3-r1
Chainguard cfssl 0 1.6.5-r0
Chainguard cfssl-bundle 0 1.6.5-r0
Chainguard cfssl-certinfo 0 1.6.5-r0
Chainguard cfssl-cfssl-bundle 0 1.6.5-r0

Related vulnerabilities