MobyApplication · Mobyproject

CVE-2023-28842

MEDIUM · 6.8 CVSS v3.1 Published 2023-04-04
Fix available
A fix is available. Upgrade to 20.10.24 / 23.0.3 or later.
See remediation →
77/100
Remediation priority · High
Remotely reachable No privileges Zero-click

Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.

NVD · unedited
Moby) is an open source container framework developed by Docker Inc. that is distributed as Docker, Mirantis Container Runtime, and various other downstream projects/products. The Moby daemon component (`dockerd`), which is developed as moby/moby is commonly referred to as *Docker*. Swarm Mode, which is compiled in and delivered by default in `dockerd` and is thus present in most major Moby downstreams, is a simple, built-in container orchestrator that is implemented through a combination of SwarmKit and supporting network code. The `overlay` network driver is a core feature of Swarm Mode, providing isolated virtual LANs that allow communication between containers and services across the cluster. This driver is an implementation/user of VXLAN, which encapsulates link-layer (Ethernet) frames in UDP datagrams that tag the frame with the VXLAN metadata, including a VXLAN Network ID (VNI) that identifies the originating overlay network. In addition, the overlay network driver supports an optional, off-by-default encrypted mode, which is especially useful when VXLAN packets traverses an untrusted network between nodes. Encrypted overlay networks function by encapsulating the VXLAN datagrams through the use of the IPsec Encapsulating Security Payload protocol in Transport mode. By deploying IPSec encapsulation, encrypted overlay networks gain the additional properties of source authentication through cryptographic proof, data integrity through check-summing, and confidentiality through encryption. When setting an endpoint up on an encrypted overlay network, Moby installs three iptables (Linux kernel firewall) rules that enforce both incoming and outgoing IPSec. These rules rely on the `u32` iptables extension provided by the `xt_u32` kernel module to directly filter on a VXLAN packet's VNI field, so that IPSec guarantees can be enforced on encrypted overlay networks without interfering with other overlay networks or other users of VXLAN. The `overlay` driver dynamically and lazily defines the kernel configuration for the VXLAN network on each node as containers are attached and detached. Routes and encryption parameters are only defined for destination nodes that participate in the network. The iptables rules that prevent encrypted overlay networks from accepting unencrypted packets are not created until a peer is available with which to communicate. Encrypted overlay networks silently accept cleartext VXLAN datagrams that are tagged with the VNI of an encrypted overlay network. As a result, it is possible to inject arbitrary Ethernet frames into the encrypted overlay network by encapsulating them in VXLAN datagrams. The implications of this can be quite dire, and GHSA-vwm3-crmr-xfxw should be referenced for a deeper exploration. Patches are available in Moby releases 23.0.3, and 20.10.24. As Mirantis Container Runtime's 20.10 releases are numbered differently, users of that platform should update to 20.10.16. Some workarounds are available. In multi-node clusters, deploy a global ‘pause’ container for each encrypted overlay network, on every node. For a single-node cluster, do not use overlay networks of any sort. Bridge networks provide the same connectivity on a single node and have no multi-node features. The Swarm ingress feature is implemented using an overlay network, but can be disabled by publishing ports in `host` mode instead of `ingress` mode (allowing the use of an external load balancer), and removing the `ingress` network. If encrypted overlay networks are in exclusive use, block UDP port 4789 from traffic that has not been validated by IPSec.

Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.

dbcve analysis · high confidence

In Moby's overlay network driver, the iptables rules that prevent encrypted overlay networks from accepting unencrypted VXLAN traffic are only created when a peer is available to communicate with. This creates a window where encrypted overlay networks silently accept cleartext VXLAN datagrams tagged with the encrypted network's VNI, allowing injection of arbitrary Ethernet frames and bypassing the expected IPSec protections.

MitigationUpdate to Moby 23.0.3/20.10.24 or Mirantis Container Runtime 20.10.16 to patch the missing iptables rule installation. As a workaround, ensure each node has a peer by deploying a global pause container before using encrypted overlay networks.

Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.

Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.

NVD · CPE data
MobyApplication
Affected:>= 1.12.0, < 20.10.24>= 23.0.0, < 23.0.3

CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.

From the vector
Attack vector
Network
Complexity
High
Privileges
None
User interaction
None
Scope
Changed
Confidentiality
None
Integrity
High
Availability
None

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N

Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.

dbcve checks

Work through these to decide whether this CVE applies to you.

  1. Check the installed Moby or Docker Engine version
    Run `docker version --format '{{.Server.Version}}'` or check the package manager for moby/docker version
    Affected if The version is >= 1.12.0 and < 20.10.24, OR >= 23.0.0 and < 23.0.3
  2. Identify encrypted overlay networks
    Run `docker network ls --filter type=overlay` and for each overlay network, inspect it with `docker network inspect <network-name>` to check if `encrypted` is true in the options
    Affected if There exists an overlay network with the `encrypted` option set to true
  3. Verify peer nodes exist on the encrypted overlay network
    Run `docker network inspect <encrypted-network>` and check the `Peers` array in the endpoint information; or run `docker node ls` to confirm multi-node swarm setup
    Affected if The encrypted overlay network has no peer nodes (empty Peers array) or the environment is a single-node setup without swarm peers
  4. Inspect iptables rules for the encrypted network VNI
    Run `sudo iptables -L -n -v | grep -i vxlan` or specifically `sudo iptables -L DOCKER -n --line-numbers` to look for rules matching the encrypted network's VNI; the rule should DROP VXLAN traffic with that VNI from non-encrypted sources
    Affected if No DROP rule exists for the encrypted overlay network's VNI, or rules are missing entirely for that network

You are affected if you run a vulnerable Moby/Docker version (pre-20.10.24 or pre-23.0.3) AND have encrypted overlay networks with no peer nodes, where the protective iptables DROP rules for VXLAN traffic are missing.

Generated from the published advisory. Verify against your own configuration.

Check your environment

Paste your version and any relevant configuration and it will be compared against the affected criteria above. Do not include secrets or credentials.

AI-assisted, checked against the advisory. Informational, not a guarantee.

Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.

dbcve · scoped
Upgrade available Upgrade to 20.10.24 / 23.0.3 or later
Fixed in 20.10.2423.0.3
Interim mitigation

Update to Moby 23.0.3/20.10.24 or Mirantis Container Runtime 20.10.16 to patch the missing iptables rule installation. As a workaround, ensure each node has a peer by deploying a global pause container before using encrypted overlay networks.

Recommended fix High confidence

Moby 23.0.3 or later / Moby 20.10.24 or later / Mirantis Container Runtime 20.10.16

  1. Upgrade Moby to version 23.0.3 or later if using the 23.x release line
  2. OR upgrade Moby to version 20.10.24 or later if using the 20.10.x release line
  3. For Mirantis Container Runtime users, upgrade to version 20.10.16
  4. After upgrading, restart the dockerd daemon to apply the changes
  5. Verify that encrypted overlay networks are functioning correctly post-upgrade

Generated from the published advisory — verify against the referenced sources before acting.

Fix this in Moby Scoped from the published advisory
  • Consultation2.0 h
  • Implementation4.0 h
  • Testing3.0 h
  • Review / QA1.0 h
10.0 hours of engineering $1,750
Get the upgrade done

An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $2,800.

Scan for this in your stack

Free · runs locally
dbcve dependency scanner

Check whether your project pulls in CVE-2023-28842 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.

References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.

Primary sources

Practitioner notes

Contributed

Peer-ranked notes from engineers who’ve handled CVE-2023-28842 in production — separate from our analysis above.

No notes yet

Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.

What this is

A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.

What belongs here
  • Verified mitigations, workarounds, and config changes
  • Version or environment caveats, and links to real fixes
  • No weaponised exploit code, or anything meant to cause harm
  • No spam, self-promotion, credentials, or personal data