sadpandajoe commented on code in PR #45186: URL: https://github.com/apache/superset/pull/45186#discussion_r4242437623
########## docs/admin_docs/security/dependency-vulnerability-remediation.mdx: ########## @@ -0,0 +1,86 @@ +--- +title: Dependency Vulnerability Remediation & Scanner Guidance +sidebar_position: 3 +--- + +# Dependency Vulnerability Remediation & Container Scanner Guidance + +This guide addresses third-party dependency vulnerabilities reported by container security scanners (such as Trivy, Grype, and Snyk) in Apache Superset environments, specifically regarding dependency constraint handling for cryptography, msgpack, and pyarrow (referencing issue #45087). + +## 1. Vulnerability Applicability & Risk Assessment + +When security scanners evaluate Apache Superset container images, findings frequently arise in transitive or pinned direct dependencies. The table below details the applicability and actual exploitability surface of recently reported findings: + +| Package | Finding ID | Severity | Remediation Floor | Superset Code Path & Exploitability Analysis | +| :--- | :--- | :--- | :--- | :--- | +| **cryptography** | CVE-2026-69247 | HIGH | `>=50.0.0` | PKCS#7 EnvelopedData decryption denial of service. Superset does not consume, parse, or decrypt PKCS#7 or S/MIME enveloped data. | +| **cryptography** | CVE-2026-69249 | MEDIUM | `>=50.0.0` | X.509 path-building algorithm denial of service with duplicate intermediate certificates. Superset parses leaf database SSL certificates using `load_pem_x509_certificate` and does not build untrusted X.509 certification paths during web request processing. | +| **cryptography** | CVE-2026-69248 | MEDIUM | `>=50.0.0` | NULL cipher null pointer dereference in PKCS#12 parsing (`PKCS12.load_key_and_certificates`). Superset parses PEM X.509 certificates and does not ingest or parse user-supplied PKCS#12 bundles. | +| **cryptography** | GHSA-537c-gmf6-5ccf | HIGH | `>=50.0.2` | Vulnerabilities in OpenSSL bundled in binary wheels. In production container deployments following Option A, the runtime libraries are updated; raw cryptographic primitives are not exposed to untrusted external callers. | +| **msgpack** | GHSA-6v7p-g79w-8964, GHSA-j586-36cw-2gc2 | HIGH | `>=1.2.3` | Utilized internally for SQL Lab asynchronous query result serialization (`RESULTS_BACKEND_USE_MSGPACK`). Raw msgpack byte streams are generated and consumed only within the trusted backend cache boundary. Exploitability requires full cache store compromise. | +| **pyarrow** | CVE-2026-25087 | HIGH | `>=25.0.1` | Used for columnar tabular transformations and CSV/Parquet ingestion by authenticated users. Ingestion pathways are governed by role-based permissions and file size limits. Exploitability is bounded to authorized data uploads. | + +## 2. Dependency Constraint Architecture + +Apache Superset manages dependencies across two layers: + +1. **Package Declarations (`pyproject.toml` and `superset-core/pyproject.toml`)**: + Specifies flexible semantic version ranges to avoid dependency resolver conflicts in downstream custom deployments. + - `cryptography`: `>=50.0.2, <51.0.0` (enforces remediated releases covering PKCS#7, path-building, PKCS#12, and wheel OpenSSL advisories). + - `msgpack`: `>=1.2.3, <1.3` (enforces remediated releases while barring vulnerable 1.0.x through 1.2.2 releases). + - `pyarrow`: `>=25.0.1, <26` (enforces modern non-vulnerable engines in both core and main packages). + +2. **Locked Requirements (`requirements/base.in` and `requirements/base.txt`)**: + Pins exact validated versions for official Docker images and deterministic continuous integration builds. + +## 3. Operator Mitigations & Container Workarounds + +If you are running an existing container image where dependency constraints prevent direct pip upgrades, the following approaches allow immediate remediation without breaking Superset: + +### Option A: Extend Official Docker Image with Patched Dependencies + +The official Docker image executes Superset inside a Python virtual environment located at `/app/.venv`. To ensure upgraded dependencies are installed directly into Superset runtime rather than the root container system packages, use `uv pip install --python /app/.venv/bin/python`: + +```dockerfile +FROM apache/superset:latest + +USER root +RUN uv pip install --no-cache-dir --python /app/.venv/bin/python \ Review Comment: This upgrades only cryptography/msgpack/pyarrow in an image that still carries its older pinned pyOpenSSL (the 6.1.0 image ships pyopenssl 25.3.0). pyOpenSSL 25.3.0 reads `_lib.GEN_EMAIL` when `OpenSSL.crypto` is imported, and cryptography 50.x no longer exposes it, so an operator who copies this Dockerfile can end up with `import OpenSSL` failing (and anything that imports it, such as Snowflake or google-auth mutual TLS). Should the snippet also upgrade pyOpenSSL to the release pinned in `requirements/base.in` (`pyopenssl>=26.0.0`)? ########## docs/admin_docs/security/dependency-vulnerability-remediation.mdx: ########## @@ -0,0 +1,77 @@ +--- +title: Dependency Vulnerability Remediation & Scanner Guidance +sidebar_position: 3 +--- + +# Dependency Vulnerability Remediation & Container Scanner Guidance + +This guide addresses third-party dependency vulnerabilities reported by container security scanners (such as Trivy, Grype, and Snyk) in Apache Superset environments, specifically regarding dependency constraint handling for cryptography, msgpack, and pyarrow (referencing issue #45087). + +## 1. Vulnerability Applicability & Risk Assessment + +When security scanners evaluate Apache Superset container images, findings frequently arise in transitive or pinned direct dependencies. The table below details the applicability and actual exploitability surface of recently reported findings: + +| Package | Finding ID | Severity | Remediation Floor | Superset Code Path & Exploitability Analysis | +| :--- | :--- | :--- | :--- | :--- | +| **cryptography** | CVE-2026-69247, CVE-2026-69249, GHSA-537c-gmf6-5ccf, CVE-2026-69248 | HIGH / MEDIUM | `>=50.0.2` | Used primarily for encrypting database connection passwords at rest and parsing operator-supplied SSL certificates. Unauthenticated external input does not traverse PKCS12 parsing routines. Exploitability in standard deployments is considered low. | +| **msgpack** | GHSA-6v7p-g79w-8964, GHSA-j586-36cw-2gc2 | HIGH | `>=1.2.3` | Utilized internally for SQL Lab asynchronous query result serialization (`RESULTS_BACKEND_USE_MSGPACK`). Raw msgpack byte streams are generated and consumed only within the trusted backend cache boundary. Exploitability requires full cache store compromise. | +| **pyarrow** | CVE-2026-25087 | HIGH | `>=25.0.1` | Used for columnar tabular transformations and CSV/Parquet ingestion by authenticated users. Ingestion pathways are governed by role-based permissions and file size limits. Exploitability is bounded to authorized data uploads. | + +## 2. Dependency Constraint Architecture + +Apache Superset manages dependencies across two layers: + +1. **Package Declarations (`pyproject.toml` and `superset-core/pyproject.toml`)**: + Specifies flexible semantic version ranges to avoid dependency resolver conflicts in downstream custom deployments. + - `cryptography`: `>=50.0.2, <51.0.0` (enforces remediated releases while preventing regressions on PKCS12 and certificate validation flaws). + - `msgpack`: `>=1.2.3, <1.3` (enforces remediated releases while barring vulnerable 1.0.x through 1.2.2 releases). + - `pyarrow`: `>=25.0.1, <26` (enforces modern non-vulnerable engines in both core and main packages). + +2. **Locked Requirements (`requirements/base.in` and `requirements/base.txt`)**: + Pins exact validated versions for official Docker images and deterministic continuous integration builds. + +## 3. Operator Mitigations & Container Workarounds + +If you are running an existing container image where dependency constraints prevent direct pip upgrades, the following approaches allow immediate remediation without breaking Superset: + +### Option A: Extend Official Docker Image with Patched Dependencies + +The official Docker image executes Superset inside a Python virtual environment located at `/app/.venv`. To ensure upgraded dependencies are installed directly into Superset runtime rather than the root container system packages, use `uv pip install --python /app/.venv/bin/python`: + +```dockerfile +FROM apache/superset:latest + +USER root +RUN uv pip install --no-cache-dir --python /app/.venv/bin/python \ + "cryptography>=50.0.2" \ + "msgpack>=1.2.3" \ + "pyarrow>=25.0.1" + +USER superset +``` + +### Option B: Scanner Triage and Ignore Rules (`.trivyignore`) + +For organizations maintaining automated compliance gates, findings where the vulnerable code path is unreachably encapsulated behind authentication can be documented and suppressed in `.trivyignore`: + +```text +# Cryptography PKCS12 parsing not exposed to unauthenticated input (issue #45087) Review Comment: The split into per-advisory rows helps, but CVE-2026-69248 is still mis-described. That advisory is the wildcard-DNS name-constraint bypass in the cryptography verifier (fixed in 49.0.0), not PKCS#12 parsing, so the table row at line 18 and the `.trivyignore` rationale at line 67 would justify suppressing a certificate-validation finding by pointing at an unrelated parser. Can the row and the ignore comment be rewritten around the verifier APIs Superset does or does not call, or can that ID be dropped from the ignore list? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
