RHSA-2026:99027CriticalCVSS 9.9

Red Hat Security Advisory: Red Hat Quay - 3.12.24

Published
November 11, 2026
Last Modified
November 13, 2026

🔗 CVE IDs covered (18)

📋 Description

CVE-2026-90711 — proxy-addr: proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet CVE-2026-93749 — source-map-js: source-map-js: Denial of Service via malformed indexed source maps CVE-2026-97687 — urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override CVE-2026-97689 — urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser CVE-2026-102267 — pyjwt: pyjwt: Verification key substitution via unvalidated JWKS redirects CVE-2026-102268 — pyjwt: PyJWT: Authentication bypass via improper public key validation CVE-2026-102272 — pyjwt: pyjwt: Token forgery via improper Unicode byte-order mark handling CVE-2026-102273 — pyjwt: pyjwt: Token forgery via acceptance of public JWK containers as HMAC secrets CVE-2026-102994 — pypdf: pypdf: Denial of Service via crafted indirect object tokens in PDF files CVE-2026-102996 — pypdf: pypdf: Denial of Service via excessive memory consumption during font parsing CVE-2026-102997 — pypdf: pypdf: Denial of Service via crafted FlateDecode stream CVE-2026-102998 — pypdf: pypdf: Denial of Service via crafted PDF form fields CVE-2026-102999 — pypdf: pypdf: Denial of Service via crafted PDF with numerous embedded files CVE-2026-103000 — pypdf: pypdf: Denial of Service via large alphabetical page labels CVE-2026-110697 — quay: quay: SQL LIKE wildcard injection in robot listing leaks cross-tenant robot tokens CVE-2026-112390 — pillow: Pillow: Denial of Service via infinite loop during crafted MIC image parsing CVE-2026-118669 — oauthlib: oauthlib: privilege escalation via client identity confusion in token grant handlers CVE-2026-123710 — quay: Red Hat Quay: unauthenticated registry signing-key takeover via service key rotation

🎯 Affected products32

  • Red Hat Quay 3.12
  • registry.redhat.io/quay/clair-rhel8@sha256:626079799f00008ead86d8302542d2a5a8db4b9bb53a63e47dadd67cdae5b702_arm64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/clair-rhel8@sha256:c5a288b3328a5f40c8d7fda854e7ed10b0cbeec4b0acc75af0978473a5d98247_ppc64le as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/clair-rhel8@sha256:e2a2521c3434dbb77c3c5391641dc1da3d8c03445a17a3dee6d3d248b4d9e51e_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/clair-rhel8@sha256:e81aa4112300a725cd2d18080dbcafccc040716b4f6a7e56ff182a3ece949308_s390x as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-bridge-operator-bundle@sha256:9cf53de51ced99122365e8e99b0a1deb05e09021da45320a56e9d05e450a0aa2_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-bridge-operator-rhel8@sha256:1036b643eee25a3ea0b7cc126364e0968ea4ee8aeb168597881bfda4a97622d2_s390x as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-bridge-operator-rhel8@sha256:2c77e9c1a7b7a4ebbbc2e9e8a43abe53188156785d9b75d76697a8b9e89526cf_arm64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-bridge-operator-rhel8@sha256:4b1f99f99897606d2d260b344503ce97157f80a37a7aad6c1659226018945960_ppc64le as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-bridge-operator-rhel8@sha256:f4b5c082fbfa6b08e7ca75cf1fb3280130ecf2e21ee1eb913316e7bb49da06a7_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-qemu-rhcos-rhel8@sha256:054909890a25a65bebd0198657abb6f9ff3442816ae006cff20eebb3a17e35ec_s390x as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-qemu-rhcos-rhel8@sha256:414e141dde4d9c879de2863cded31890484e988f6f952d145464180cd2ff9507_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-qemu-rhcos-rhel8@sha256:89b29ec1704056007cee7cd4856dd01138648ed3c9745fe9370b2564258a73e9_ppc64le as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-qemu-rhcos-rhel8@sha256:e3822b58493ad1b942b7389ecce610cfbbde21dfe5d0f9a7e069387e9a87fa64_arm64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-rhel8@sha256:031899944b117917b6556dd495c00f2144cbf5e98bef4bff4fda2292ff8ed5e8_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-rhel8@sha256:254b5108e5411817f253813a7030f1762db6cbb0f6a2055b25e369ad28270a11_arm64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-rhel8@sha256:2f8666204d46b05b671f1700065576d00ade1fde4db565851ff772e467b0323e_ppc64le as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-builder-rhel8@sha256:b67cb6798bf3f29ff80762253c3989312e36edd822f52281d3207e3228d25c5a_s390x as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-container-security-operator-bundle@sha256:46fa51f582def32d7b7d0e297153b013b7117bc2e8a05b2aa63f7b9da31b28aa_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-container-security-operator-rhel8@sha256:a097b4240189252ab695e81aea8ee461f6c25a9e13382348c79449d30c10591d_s390x as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-container-security-operator-rhel8@sha256:b9cd18549e3300ac71efaf6c3037c88ca764bdd922ff7ca2f9f6839acd5be2b7_ppc64le as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-container-security-operator-rhel8@sha256:de112db5e313e87078f7f95b4f29d05a43197f71e53c2dd699d445e5e165b25e_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-container-security-operator-rhel8@sha256:febfd41ba9a52c41cfd7ee65b84e62e2285a7e3e3e265c52c4c5d3b8f0f8c952_arm64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-operator-bundle@sha256:47bb57979a84ac45de3c63cbdb2526a7d8bf777c35d78de524d4eda16f18c2f8_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-operator-rhel8@sha256:313884ff16c888aadf3f79052f84286bbf819f161b6fb0a3700b869f40d8795a_arm64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-operator-rhel8@sha256:44ec581aa40a4f4adf73d6c783cfe0f7fb49913478f79f3855e6d0eb15c0a41b_s390x as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-operator-rhel8@sha256:8e759a776e620396b5a7ec8e1a3b7e42965726299e0956ff02e29368babdb06f_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-operator-rhel8@sha256:9ed0eb0311fd3c1a0bb35046382b91ba6720f2cdd1cf400fd71b3026dd5e11d5_ppc64le as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-rhel8@sha256:073ed54b75dfc534eef35836afd19684999beedc67477bfff29bd487e85d4baf_amd64 as a component of Red Hat Quay 3.12
  • registry.redhat.io/quay/quay-rhel8@sha256:40d4eda227d85f155794a043de660aa4811ae12c9fc90b3a36c7b84e8a4b85c8_s390x as a component of Red Hat Quay 3.12
  • +2 more not shown

✅ Remediation

Before you apply this update, make sure all previously released errata that are relevant to your system are applied. For details on how to apply this update, refer to: https://access.redhat.com/articles/11258 Workaround: To mitigate this flaw through configuration: 1. Configure trusted proxy definitions using standard IPv4 notation (such as `10.0.0.0/8`) rather than IPv4-mapped IPv6 notation. 2. If IPv4-mapped IPv6 notation is required, set the subnet prefix length to at least 97 to cover the mapped boundary (for example, specify `::ffff:10.0.0.0/104` instead of `::ffff:10.0.0.0/8`). 3. Alternatively, sanitize or strip incoming `X-Forwarded-For` headers at edge load balancers or boundary reverse proxies before passing traffic to backend applications. Warning: Modifying application configuration files requires restarting the Node.js application service, which will temporarily interrupt service availability and active connections. Workaround: Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability. Workaround: Update to the fixed Red Hat Quay release for your version: 3.9.28, 3.10.28, 3.12.24, 3.14.10, 3.15.9, 3.16.7, 3.17.7, or 3.18.3. Red Hat has already fixed Quay.io. There is no other complete workaround. If you cannot update immediately, restrict who can create organizations or namespaces containing an underscore, rotate robot tokens for any namespace that collides with an underscore-containing one, and monitor registry activity for pulls or pushes that don't match expected robot usage. These steps reduce exposure but do not fix the underlying flaw. Workaround: --- CME Mitigation Guidance (2026-10-20) --- Disclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure. The highest-value action is to prevent Pillow from enumerating or extracting frames from untrusted Microsoft Image Composer (MIC) files when olefile is installed: upgrade to Pillow 13.0.0 (or the fixed Python Pillow/Python3.11 Pillow/Rhoai/Odh Openvino Model Server Rhel/Rhelai3/Bootc Cuda Rhel/Rhelai3/Bootc Gaudi Rhel/Rhelai3/Bootc Rocm Rhel/Rhelai3/Disk Image Cuda Rhel/Python3X Pillow/Rhaiis/Vllm Spyre Rhel/Rhoai/Odh Kserve Storage Initializer Rhel/Rhoai/Odh Kserve Agent Rhel/Rhoai/Odh Kserve Controller Rhel/Rhoai/Odh Kserve Router Rhel/Rhoai/Odh Feature Server Rhel/Rhoai/Odh Trustyai Nemo Guardrails Server Rhel/Rhaiis/Vllm Tpu Rhel/Rhoai/Odh Training Cuda128 Torch29 Py312 Rhel/Rhoai/Odh Training Rocm64 Torch29 Py312 Rhel/Rhaiis/Vllm Cpu Rhel/Rhaiis/Vllm Neuron Rhel/Ansible Automation Platform 25/Lightspeed Chatbot Rhel/Openshift Lightspeed/Lightspeed Ocp Rag Rhel/Rhoai/Odh Th06 Cpu Torch291 Py312 Rhel/Rhoai/Odh Th06 Cuda130 Torch291 Py312 Rhel/Rhoai/Odh Vllm Gaudi Rhel/Python3.12 Pillow/Rhaii/Vllm Gaudi Rhel/Rhaii/Vllm Neuron Rhel/Rhaii/Vllm Tpu Rhel/Lightspeed Core/Lightspeed Stack Rhel/Rhoai/Odh Kserve Autogluon Server Rhel/Rhai Early Access/Docling Sdk Cuda Rhel/Rhai Early Access/Docling Serve Cuda Rhel/Rhoai/Odh Llm D Kv Cache Rhel/Rhoai/Odh Th06 Cpu Torch210 Py312 Rhel/Rhoai/Odh Th06 Cuda130 Torch210 Py312 Rhel/Rhoai/Odh Th06 Rocm64 Torch291 Py312 Rhel/Rhoai/Odh Workbench Jupyter Pytorch Llmcompressor Cuda Py312 Rhel/Ask Sre/Rhel Cla/Rlsapi Rhel/Rhaiis/Model Opt Cuda Rhel/Rhaiis/Vllm Cuda Rhel/Rhaiis/Vllm Rocm Rhel/Rhaii/Model Opt Cuda Rhel/Rhaii/Vllm Cpu Rhel/Rhaii/Vllm Cuda Rhel/Rhaii/Vllm Rocm Rhel/Rhaii/Vllm Spyre Rhel/Ansible Automation Platform/Automation Dashboard Rhel/Ansible Automation Platform 26/Hub Rhel/Ansible Automation Platform 26/Lightspeed Chatbot Rhel/Ansible Automation Platform 27/Hub Rhel/Ansible Automation Platform 27/Lightspeed Chatbot Rhel/Galaxy Ng/Automation Hub Container/Aap Rag Content/Ansible Chatbot Stack/Koku Report Emailer/Exploit Intelligence/Vulnerability Analysis Rhel/Insights Host Inventory/Google Lightspeed Agent/Lscore Deploy/Lightspeed Core/Rag Tool Cpu Rhel/Lightspeed Core/Rag Tool Cuda 12.9 Rhel/Lightspeed Services Ocp/Ocp Rules Rhel/Openshift Lightspeed Tech Preview/Lightspeed Rag Tool Rhel/Openshift Lightspeed/Lightspeed Service Api Rhel/Rhoai/Odh Caikit Tgis Serving Rhel/Rhoai/Odh Llama Stack Core Rhel/Rhoai/Odh Pipeline Runtime Pytorch Llmcompressor Cuda Py312 Rhel/Rhoai/Odh Automl Rhel/Rhoai/Odh Autorag Rhel/Rhoai/Odh Mlflow Rhel/Rhoai/Odh Pipeline Runtime Datascience Cpu Py312 Rhel/Rhoai/Odh Pipeline Runtime Pytorch Cuda Py312 Rhel/Rhoai/Odh Pipeline Runtime Pytorch Rocm Py312 Rhel/Rhoai/Odh Pipeline Runtime Tensorflow Cuda Py312 Rhel/Rhoai/Odh Pipeline Runtime Tensorflow Rocm Py312 Rhel/Rhoai/Odh Trustyai Garak Lls Provider Dsp Rhel/Rhoai/Odh Workbench Codeserver Datascience Cpu Py312 Rhel/Rhoai/Odh Workbench Jupyter Datascience Cpu Py312 Rhel/Rhoai/Odh Workbench Jupyter Pytorch Cuda Py312 Rhel/Rhoai/Odh Workbench Jupyter Pytorch Rocm Py312 Rhel/Rhoai/Odh Workbench Jupyter Tensorflow Cuda Py312 Rhel/Rhoai/Odh Workbench Jupyter Tensorflow Rocm Py312 Rhel/Rhoai/Odh Workbench Jupyter Trustyai Cpu Py312 Rhel/Rhai/Guidellm Rhel/Rhoai/Odh Ogx Core Rhel/Rhoai/Odh Th Torch Cpu Py312 Rhel/Rhoai/Odh Th Torch Cuda Py312 Rhel/Rhoai/Odh Th Torch Rocm Py312 Rhel/Quay/Quay Service Tool/Quay/Quay Rhel/Rhelai3/Bootc Aws Cuda Rhel/Rhelai3/Bootc Azure Cuda Rhel/Rhelai3/Bootc Azure Rocm Rhel/Rhelai3/Bootc Gcp Cuda Rhel builds), which initialize _n_frames in __init__ instead of resetting it in _open(), and avoid re-setting _n_frames and is_animated in _seek() if already set, closing crafted Microsoft Image Composer (MIC) file with an embedded TIFF containing three or more IFDs. Until patched, this is a concern on Applications running Pillow 7.2.0 through 12.3.0 with olefile installed that query n_frames or extract frames from untrusted input, so Reject or sanitize untrusted MIC file uploads at ingestion and avoid calling n_frames or save_all on unverified images in environments where olefile is loaded. As a compensating measure, Impose CPU time limits using ulimit or prlimit to terminate worker processes caught in the non-advancing MIC image parsing loop before system CPU is exhausted and Configure service watchdogs with automatic restart under systemd to detect stalled processes via keep-alives and restore availability. These controls limit blast radius and contain exploitation, but they do not fix the underlying non-advancing frame traversal defect — apply the upstream patch to fully remediate. Highest-impact CME: CME-114 Process Resource Limits (ulimit/prlimit) (medium) Workaround: Restrict access to the /keys endpoint at the proxy or load balancer so only trusted internal components can reach it. Review audit logs for service_key_rotate and service_key_delete events with a null expiration_date, and remove any unrecognised approved service keys. Deleting a rogue key is not durable until a fixed build is deployed, because the anonymous request can install a new key.

🔗 References (21)