CVE-2024-41110: Github.com/docker/docker Authz Zero Length Regression Vulnerability

CRITICAL
Advisory Identifier: GHSA-v23v-6jw2-98fq
CVSS 9.9
CWE-187
Published
Advisory Summary

CVE-2024-41110 is a CRITICAL (CVSS 9.9) authz zero length regression vulnerability (CWE-187: Partial String Comparison) affecting Github.com/docker/docker libraries in the Go ecosystem. The issue involves authz zero length regression. Remediation is available by upgrading affected packages to version 23.0.15, 26.1.5, 27.1.1, 25.0.6.

CVE-2024-41110 at a Glance

CVE Identifier CVE-2024-41110
GHSA Identifier GHSA-v23v-6jw2-98fq
Severity CRITICAL
CVSS v3.1 Base Score 9.9
CWE Classification CWE-187: Partial String Comparison
Affected Product Github.com/docker/docker
Package Ecosystem Go
Published Date
Last Updated

Security Impact

CVSS: 9.9

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required Low (PR:L)
User Interaction None (UI:N)
Scope Changed (S:C)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2024-41110

To remediate this vulnerability, upgrade all affected Github.com/docker/docker dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

github.com/docker/docker fixed: 23.0.15
Upgrade github.com/docker/docker to 23.0.15
github.com/docker/docker fixed: 26.1.5
Upgrade github.com/docker/docker to 26.1.5
github.com/docker/docker fixed: 27.1.1
Upgrade github.com/docker/docker to 27.1.1
github.com/docker/docker fixed: 25.0.6
Upgrade github.com/docker/docker to 25.0.6
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for github.com/docker/docker

How to Check if You Are Affected

To determine whether your application is affected by CVE-2024-41110, inspect your project dependencies for Github.com/docker/docker:

inspect dependencies for github.com/docker/docker

Analyze the terminal output to locate any version of Github.com/docker/docker in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 23.0.15), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-187: Partial String Comparison, where the product performs a comparison that only examines a portion of a factor before determining whether there is a match, such as a substring, leading to resultant weaknesses. In Github.com/docker/docker, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

A security vulnerability has been detected in certain versions of Docker Engine, which could allow an attacker to bypass [authorization plugins (AuthZ)](https://docs.docker.com/engine/extend/plugins_authorization/) under specific circumstances. The base likelihood of this being exploited is low. This advisory outlines the issue, identifies the affected versions, and provides remediation steps for impacted users. ### Impact Using a specially-crafted API request, an Engine API client could make the daemon forward the request or response to an [authorization plugin](https://docs.docker.com/engine/extend/plugins_authorization/) without the body. In certain circumstances, the authorization plugin may allow a request which it would have otherwise denied if the body had been forwarded to it. A security issue was discovered In 2018, where an attacker could bypass AuthZ plugins using a specially crafted API request. This could lead to unauthorized actions, including privilege escalation. Although this issue was fixed in Docker Engine [v18.09.1](https://docs.docker.com/engine/release-notes/18.09/#security-fixes-1) in January 2019, the fix was not carried forward to later major versions, resulting in a regression. Anyone who depends on authorization plugins that introspect the request and/or response body to make access control decisions is potentially impacted. Docker EE v19.03.x and all versions of Mirantis Container Runtime **are not vulnerable.** ### Vulnerability details - **AuthZ bypass and privilege escalation:** An attacker could exploit a bypass using an API request with Content-Length set to 0, causing the Docker daemon to forward the request without the body to the AuthZ plugin, which might approve the request incorrectly. - **Initial fix:** The issue was fixed in Docker Engine [v18.09.1](https://docs.docker.com/engine/release-notes/18.09/#security-fixes-1) January 2019.. - **Regression:** The fix was not included in Docker Engine v19.03 or newer versions. This was identified in April 2024 and patches were released for the affected versions on July 23, 2024. The issue was assigned [CVE-2024-41110](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-41110). ### Patches - docker-ce v27.1.1 containes patches to fix the vulnerability. - Patches have also been merged into the master, 19.0, 20.0, 23.0, 24.0, 25.0, 26.0, and 26.1 release branches. ### Remediation steps - If you are running an affected version, update to the most recent patched version. - Mitigation if unable to update immediately: - Avoid using AuthZ plugins. - Restrict access to the Docker API to trusted parties, following the principle of least privilege. ### References - https://github.com/moby/moby/commit/fc274cd2ff4cf3b48c91697fb327dd1fb95588fb - https://github.com/moby/moby/commit/a79fabbfe84117696a19671f4aa88b82d0f64fc1 - https://www.docker.com/blog/docker-security-advisory-docker-engine-authz-plugin/

CVE-2024-41110 Affected Github.com/docker/docker Versions

4 component(s)
Fixed Versions:
23.0.1526.1.527.1.125.0.6
Product / Package Ecosystem Affected Versions Fixed Version
github.com/docker/docker
Go
≥ 19.03.0
< 23.0.15
23.0.15
github.com/docker/docker
Go
≥ 26.0.0
< 26.1.5
26.1.5
github.com/docker/docker
Go
≥ 27.0.0
< 27.1.1
27.1.1
github.com/docker/docker
Go
≥ 24.0.0
< 25.0.6
25.0.6

References

Frequently Asked Questions

What is CVE-2024-41110?
CVE-2024-41110 is a security vulnerability in Github.com/docker/docker involving Authz zero length regression under CWE-187: Partial String Comparison.
Which Github.com/docker/docker versions are affected?
Affected versions include releases prior to 23.0.15, 26.1.5, 27.1.1, 25.0.6 across affected packages: github.com/docker/docker.
What version fixes CVE-2024-41110?
Upgrading to 23.0.15, 26.1.5, 27.1.1, 25.0.6 (or the latest patched release for your respective branch) resolves the vulnerability.
Is github.com/docker/docker affected?
Yes, github.com/docker/docker is affected in releases prior to 23.0.15, 26.1.5, 27.1.1, 25.0.6. Upgrade your dependency to 23.0.15, 26.1.5, 27.1.1, 25.0.6 or later.
What is the CVSS score of CVE-2024-41110?
CVE-2024-41110 has a CVSS v3.1 base score of 9.9 (CRITICAL) with vector string CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H.
What CWE is associated with CVE-2024-41110?
CVE-2024-41110 is classified under CWE-187: Partial String Comparison (The product performs a comparison that only examines a portion of a factor before determining whether there is a match, such as a substring, leading to resultant weaknesses.).
How can I check Go dependencies for CVE-2024-41110?
Run the dependency tree command: 'inspect dependencies for github.com/docker/docker'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-v23v-6jw2-98fq",
  "modified" : "2024-08-09T19:07:47Z",
  "published" : "2024-07-30T10:18:57Z",
  "aliases" : [ "CVE-2024-41110" ],
  "summary" : "Authz zero length regression",
  "details" : "A security vulnerability has been detected in certain versions of Docker Engine, which could allow an attacker to bypass [authorization plugins (AuthZ)](https://docs.docker.com/engine/extend/plugins_authorization/) under specific circumstances. The base likelihood of this being exploited is low. This advisory outlines the issue, identifies the affected versions, and provides remediation steps for impacted users.\n\n### Impact\n\nUsing a specially-crafted API request, an Engine API client could make the daemon forward the request or response to an [authorization plugin](https://docs.docker.com/engine/extend/plugins_authorization/) without the body. In certain circumstances, the authorization plugin may allow a request which it would have otherwise denied if the body had been forwarded to it.\n\n\nA security issue was discovered In 2018,  where an attacker could bypass AuthZ plugins using a specially crafted API request. This could lead to unauthorized actions, including privilege escalation. Although this issue was fixed in Docker Engine [v18.09.1](https://docs.docker.com/engine/release-notes/18.09/#security-fixes-1) in January 2019, the fix was not carried forward to later major versions, resulting in a regression. Anyone who depends on authorization plugins that introspect the request and/or response body to make access control decisions is potentially impacted.\n\nDocker EE v19.03.x and all versions of Mirantis Container Runtime **are not vulnerable.**\n\n### Vulnerability details\n\n- **AuthZ bypass and privilege escalation:** An attacker could exploit a bypass using an API request with Content-Length set to 0, causing the Docker daemon to forward the request without the body to the AuthZ plugin, which might approve the request incorrectly.\n- **Initial fix:** The issue was fixed in Docker Engine [v18.09.1](https://docs.docker.com/engine/release-notes/18.09/#security-fixes-1) January 2019..\n- **Regression:** The fix was not included in Docker Engine v19.03 or newer versions. This was identified in April 2024 and patches were released for the affected versions on July 23, 2024. The issue was assigned [CVE-2024-41110](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-41110).\n\n### Patches\n\n- docker-ce v27.1.1 containes patches to fix the vulnerability.\n- Patches have also been merged into the master, 19.0, 20.0, 23.0, 24.0, 25.0, 26.0, and 26.1 release branches.\n\n### Remediation steps\n\n- If you are running an affected version, update to the most recent patched version.\n- Mitigation if unable to update immediately:\n    - Avoid using AuthZ plugins.\n    - Restrict access to the Docker API to trusted parties, following the principle of least privilege.\n\n\n### References\n\n- https://github.com/moby/moby/commit/fc274cd2ff4cf3b48c91697fb327dd1fb95588fb\n- https://github.com/moby/moby/commit/a79fabbfe84117696a19671f4aa88b82d0f64fc1\n- https://www.docker.com/blog/docker-security-advisory-docker-engine-authz-plugin/",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
  }, {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/docker/docker"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "19.03.0"
      }, {
        "fixed" : "23.0.15"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/docker/docker"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "26.0.0"
      }, {
        "fixed" : "26.1.5"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/docker/docker"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "27.0.0"
      }, {
        "fixed" : "27.1.1"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/docker/docker"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "24.0.0"
      }, {
        "fixed" : "25.0.6"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/security/advisories/GHSA-v23v-6jw2-98fq"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2024-41110"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/411e817ddf710ff8e08fa193da80cb78af708191"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/42f40b1d6dd7562342f832b9cd2adf9e668eeb76"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/65cc597cea28cdc25bea3b8a86384b4251872919"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/852759a7df454cbf88db4e954c919becd48faa9b"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/a31260625655cff9ae226b51757915e275e304b0"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/a79fabbfe84117696a19671f4aa88b82d0f64fc1"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/ae160b4edddb72ef4bd71f66b975a1a1cc434f00"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/ae2b3666c517c96cbc2adf1af5591a6b00d4ec0f"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/cc13f952511154a2866bddbb7dddebfe9e83b801"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/moby/moby/commit/fc274cd2ff4cf3b48c91697fb327dd1fb95588fb"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/moby/moby"
  }, {
    "type" : "WEB",
    "url" : "https://www.docker.com/blog/docker-security-advisory-docker-engine-authz-plugin"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-187" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2024-07-30T10:18:57Z",
    "nvd_published_at" : "2024-07-24T17:15:11Z"
  }
}