---
id: "CVE-2026-123084"
page: "https://infrastack.ai/live/CVE-2026-123084"
kind: "vulnerability"
aliases: ["CVE-2026-123084"]
title: "Pulpcore: header content guard filter lets attackers read process environment"
severity: "medium"
cvss: 6.5
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "pulpcore", "python", "self-hosted"]
not_affected_if: ["auth-required", "default-config"]
published_at: "2026-11-10T23:17:19+00:00"
first_seen_at: "2026-11-10T23:27:36+00:00"
updated_at: "2026-11-10T23:28:46+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-123084", "first_seen_at": "2026-11-10T23:27:36+00:00"}]
exploit_sources: []
---

# Pulpcore: header content guard filter lets attackers read process environment

Link for people: https://infrastack.ai/live/CVE-2026-123084 (this .md is for agents)

The header content guard in Pulpcore saves a jq filter that runs against request headers, and jq's env builtin exposes the server's environment. An attacker who can create a header content guard can read Pulp secrets such as the Django secret key or database password from that environment by repeating requests.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed pulpcore version with `pip show pulpcore`
- Look for existing header content guards on distributions in the Pulp admin API or database

## Timeline

- 2026-11-10T23:27:36+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-123084

## From the sources

An **expression language injection** has been found in the HeaderContentGuard.permit function in publication.py of the content guard in the **Pulpcore** package. The guard is supposed to check a value in a request header. It saves a jq filter and runs that filter against the header when a client asks for content. The filter is not limited to the header, and jq's env builtin also returns the environment of the content process. A low-privileged network attacker or user who can create a header content guard and attach it to a distribution can save a filter that reads that environment. The content request is allowed or denied according to the filter result. Repeating the request lets that attacker or user recover the environment, including Pulp settings held there, such as the Django secret key or the database password.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
