Cloudanix VulnDB

CVE-2023-2253

Medium · 6.5

CVSS

6.5

EPSS

0.9%

Published

Jun 6, 2023

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

An attacker who can reach the container registry can send one specially crafted request that uses up all the server's memory and makes the registry stop working.

Exploitation
Remote Authenticated
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
Application
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw allows an authenticated user to supply an arbitrarily large integer for the 'n' query parameter on the /v2/_catalog endpoint, triggering allocation of a correspondingly large in-memory string slice that exhausts available heap memory and terminates the registry process.

Why it matters to the business

Service disruption for container image registries, potentially halting CI/CD pipelines, deployments, and runtime operations that depend on the registry in OpenShift environments. With no public fixes listed, organizations must apply vendor patches or implement workarounds promptly to avoid prolonged outages.

How an attack unfolds

An attacker with valid credentials to the registry sends a single GET request to /v2/_catalog?n=<very large number>, causing the server to attempt to allocate an enormous array and crash due to memory exhaustion.

How to fix it

Upgrade affected Red Hat OpenShift components to patched versions once released. In the interim, restrict access to the registry API or implement rate limiting and input validation on the n parameter at a reverse proxy or WAF.

How to confirm the fix worked

Monitor registry logs for requests containing unusually large n values; test by sending controlled large-n requests in a staging environment and confirm memory usage remains bounded after remediation.

Typical attack path

  1. Obtain valid registry credentials
  2. Craft HTTP GET request to /v2/_catalog with oversized n parameter
  3. Observe service crash or high memory consumption leading to DoS

How to detect it

Review web server or registry access logs for GET requests to /v2/_catalog containing the n parameter with values exceeding expected bounds (e.g., >10000); correlate with sudden memory exhaustion or OOMKilled events in container orchestration logs.

  • /v2/_catalog?n=999999999
  • large n parameter in registry API requests
  • OOMKilled events on distribution registry containers

What your security team should do

  • Prioritize patching OpenShift registry components as soon as fixes become available
  • Implement network-level controls to limit unauthenticated or excessive API calls to the catalog endpoint
  • Add monitoring for memory spikes on registry pods

The record

A flaw was found in the `/v2/_catalog` endpoint in distribution/distribution, which accepts a parameter to control the maximum number of records returned (query string: `n`). This vulnerability allows a malicious user to submit an unreasonably large value for `n,` causing the allocation of a massive string array, possibly causing a denial of service through excessive use of memory.

Affected packages

Ecosystem Package Introduced Fixed
Go github.com/distribution/distribution 0 2.8.2-beta.1+incompatible
Go github.com/docker/distribution 0 2.8.2-beta.1
Chainguard aactl 0 0.4.12-r7
Chainguard argocd-image-updater 0 0.17.0-r1
Chainguard argocd-image-updater-compat 0 0.17.0-r1
Chainguard argocd-image-updater-fips 0 0.17.0-r2
Chainguard bom 0 0.6.0-r0
Chainguard flux-0 0 0
Chainguard flux-compat 0 0
Chainguard flux-helm-controller-0.37 0 0.27.0-r7
Chainguard flux-image-reflector-controller-0 0 0.26.1-r3
Chainguard goreleaser-1.18 0 1.18.2-r12
Chainguard kpt 0 1.0.0_beta31-r5
Chainguard kube-apiserver-fips-1.27 0 1.27.12-r1
Chainguard kube-apiserver-fips-1.27-default 0 1.27.12-r1
Chainguard kube-controller-manager-fips-1.27 0 1.27.12-r1
Chainguard kube-controller-manager-fips-1.27-default 0 1.27.12-r1
Chainguard kube-proxy-fips-1.27 0 1.27.12-r1
Chainguard kube-proxy-fips-1.27-default 0 1.27.12-r1
Chainguard kube-scheduler-fips-1.27 0 1.27.12-r1
Chainguard kube-scheduler-fips-1.27-default 0 1.27.12-r1
Chainguard kubeadm-fips-1.27 0 1.27.12-r1
Chainguard kubeadm-fips-1.27-default 0 1.27.12-r1
Chainguard kubectl-bash-completion-fips-1.27 0 1.27.12-r1
Chainguard kubectl-fips-1.27 0 1.27.12-r1
Chainguard kubectl-fips-1.27-default 0 1.27.12-r1
Chainguard kubelet-fips-1.27 0 1.27.12-r1
Chainguard kubelet-fips-1.27-default 0 1.27.12-r1
Chainguard kubernetes-dashboard 0 2.7.0-r2
Chainguard kubernetes-fips-1.27 0 1.27.12-r1
Chainguard kubernetes-fips-1.27-default 0 1.27.12-r1
Chainguard prometheus-2.38 0 2.38.0-r7
Chainguard prometheus-2.38-bitnami-compat 0 2.38.0-r7
Chainguard prometheus-fips-2.38 0 0
Chainguard traefik 0 2.10.1-r2
Debian:10 docker-registry 0 2.6.2~ds1-2+deb10u1
Debian:11 docker-registry 0 2.7.1+ds2-7+deb11u1
Debian:12 docker-registry 0 2.8.2+ds1-1
Debian:13 docker-registry 0 2.8.2+ds1-1
Mageia:8 docker-registry 0 2.8.2-1.mga8
SUSE:Linux Enterprise Module for Containers 12 docker-distribution 0 2.6.2-13.9.1
SUSE:Linux Enterprise Module for Containers 15 SP4 distribution 0 2.8.1-150400.9.18.1
SUSE:Linux Enterprise Module for Containers 15 SP4 distribution 0 2.8.2-150400.9.21.1
Ubuntu:20.04:LTS docker-registry 0 2.7.1+ds2-7ubuntu0.3
Ubuntu:22.04:LTS docker-registry 0 No fix
Ubuntu:Pro:16.04:LTS docker-registry 0 2.3.0~ds1-1ubuntu0.1~esm1
Ubuntu:Pro:18.04:LTS docker-registry 0 2.6.2~ds1-1ubuntu0.1~esm1
Ubuntu:Pro:22.04:LTS docker-registry 0 2.8.0+ds1-4ubuntu0.1~esm2
Wolfi aactl 0 0.4.12-r7
Wolfi argocd-image-updater 0 0.17.0-r1
Wolfi argocd-image-updater-compat 0 0.17.0-r1
Wolfi bom 0 0.6.0-r0
Wolfi flux-compat 0 0
Wolfi goreleaser-1.18 0 1.18.2-r12
Wolfi kpt 0 1.0.0_beta31-r5
Wolfi kubernetes-dashboard 0 2.7.0-r2
Wolfi traefik 0 2.10.1-r2
openSUSE:Leap 15.4 distribution 0 2.8.1-150400.9.18.1
openSUSE:Leap 15.4 distribution 0 2.8.2-150400.9.21.1
openSUSE:Tumbleweed distribution-registry 0 2.8.2-1.1

Related vulnerabilities