Skip to content

fix(security): track libnss3 CVE-2026-16389 in ingestion Docker images#30392

Draft
harshsoni2024 wants to merge 1 commit into
mainfrom
fix-cve-2026-16389-nss
Draft

fix(security): track libnss3 CVE-2026-16389 in ingestion Docker images#30392
harshsoni2024 wants to merge 1 commit into
mainfrom
fix-cve-2026-16389-nss

Conversation

@harshsoni2024

@harshsoni2024 harshsoni2024 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

What

Track CVE-2026-16389 (NSS integer overflow / incorrect boundary
conditions) in the ingestion and operator Docker images by adding
libnss3 and libnss3-tools to the existing --only-upgrade apt list.

Why

  • libnss3 is not removable. It is a transitive dependency of the Java
    runtime — on Debian bookworm, openjdk-17-jre-headless hard-depends on
    libnss3 (>= 2:3.17.1). Both images install a JRE (Spark, ANTLR, and
    other Java-backed ingestion paths need it), so NSS is always present.
  • No commit introduced this. The finding surfaced recently because
    CVE-2026-16389 was newly published (the fix shipped in Firefox /
    Thunderbird 153) and scanners matched it against the pre-existing
    package — not because of a Dockerfile change.
  • Following the established pattern (curl, libcurl*, libmariadb3, wget), we
    add the package to --only-upgrade so the Debian security patch is picked
    up automatically on the next rebuild, with no further code change needed.

Current status

Per the Debian Security Tracker,
the fix is not yet backported to bookworm:

Suite Version Status
bookworm 2:3.87.1-1+deb12u2 vulnerable
bookworm-security 2:3.87.1-1+deb12u3 vulnerable
sid 2:3.126-1 fixed

So this change is a no-op today--only-upgrade does nothing until
Debian ships +deb12u4. It is a forward-looking fix that requires no
follow-up PR once the patch lands. Scanners will continue to report the CVE
until then, since the vulnerable library genuinely remains installed.

Changes

  • ingestion/Dockerfile — add libnss3 libnss3-tools + tracking comment
  • ingestion/operators/docker/Dockerfile — same

🤖 Generated with Claude Code

Greptile Summary

Updates the ingestion container security-upgrade lists to track the pending Debian fix for CVE-2026-16389.

  • Adds libnss3 and libnss3-tools to the production ingestion image’s apt --only-upgrade invocation.
  • Applies the same NSS tracking change to the production operator image.
  • Documents that the upgrade remains a no-op until Debian backports the fix to bookworm-security.

Confidence Score: 4/5

The CI Dockerfiles must be updated before merging so image builds and vulnerability scans validate the same NSS remediation as the production Dockerfiles.

The production images will automatically consume the patched NSS package when Debian publishes it, but CI builds use separate Dockerfiles that omit the new packages and will therefore continue building and scanning the vulnerable configuration.

ingestion/Dockerfile, ingestion/operators/docker/Dockerfile, ingestion/Dockerfile.ci, ingestion/operators/docker/Dockerfile.ci

Security Review

The production Dockerfiles track the pending NSS fix, but their CI counterparts remain unchanged; consequently, CI builds and vulnerability scans will not validate the remediation once the patched Debian package becomes available.

Important Files Changed

Filename Overview
ingestion/Dockerfile Adds NSS packages to the production upgrade list, but the CI Dockerfile used by the Trivy workflow remains inconsistent.
ingestion/operators/docker/Dockerfile Adds the same NSS tracking to the production operator image, while the operator CI build retains the old upgrade list.

Reviews (1): Last reviewed commit: "fix(security): track libnss3 CVE-2026-16..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

libnss3 enters the ingestion and operator images transitively via the JRE
(openjdk-17-jre-headless hard-depends on libnss3 on bookworm), so it cannot
be removed while Java-based ingestion (Spark, ANTLR) is supported. No commit
introduced it — CVE-2026-16389 was published recently and matched the
already-present package.

Add libnss3/libnss3-tools to the existing --only-upgrade list so a rebuild
pulls the Debian fix automatically once it lands. bookworm-security is still
on the vulnerable 2:3.87.1-1+deb12u3 (fix only in sid), so this is a no-op
today, matching the wget-tracking pattern.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 23, 2026 11:49
@harshsoni2024
harshsoni2024 requested a review from a team as a code owner July 23, 2026 11:49
@github-actions

Copy link
Copy Markdown
Contributor

❌ PR checklist incomplete

This PR cannot be merged until the following are addressed on its linked issue:

  • No GitHub issue is linked. Link an issue in the Development section of the PR (or add Fixes #12345 to the description). For a same-org cross-repo issue, add Fixes open-metadata/<repo>#123 to the description.

The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically.

Maintainers can bypass this check by adding the skip-pr-checks label.

@github-actions github-actions Bot added Ingestion safe to test Add this label to run secure Github workflows on PRs labels Jul 23, 2026
@gitar-bot

gitar-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Adds libnss3 and libnss3-tools to the apt upgrade list in ingestion Docker images to track CVE-2026-16389. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Tracks CVE-2026-16389 for Debian bookworm-based ingestion images by ensuring libnss3 (and related tooling) are included in the existing apt-get --only-upgrade security-upgrade list, so future bookworm-security backports are automatically picked up on rebuild.

Changes:

  • Add libnss3 and libnss3-tools to the --only-upgrade apt package list in the ingestion image Dockerfile.
  • Add the same packages to the operator base image Dockerfile.
  • Extend the in-file tracking comments to document the CVE status/backport expectation.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
ingestion/Dockerfile Adds libnss3/libnss3-tools to the security-only upgrade list and documents CVE tracking status.
ingestion/operators/docker/Dockerfile Mirrors the same libnss3/libnss3-tools tracking and upgrade behavior for operator images.

Comment thread ingestion/Dockerfile
Comment on lines 54 to +58
&& apt-get -qq install -y --only-upgrade \
libgnutls30 libcap2 libcap2-bin openssh-client rsync sudo \
libpam0g libpam-modules libpam-modules-bin libpam-runtime \
curl libcurl4 libcurl3-gnutls libmariadb3 wget \
libnss3 libnss3-tools \
Comment on lines 61 to +65
&& apt-get -qq install -y --only-upgrade \
libgnutls30 libcap2 libcap2-bin openssh-client rsync sudo \
libpam0g libpam-modules libpam-modules-bin libpam-runtime \
curl libcurl4 libcurl3-gnutls libmariadb3 wget \
libnss3 libnss3-tools \
Comment thread ingestion/Dockerfile
libpam0g libpam-modules libpam-modules-bin libpam-runtime \
curl libcurl4 libcurl3-gnutls libmariadb3 wget \
libnss3 libnss3-tools \
&& apt-get -qq purge -y \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 security CI images omit NSS upgrade

When Debian publishes the patched bookworm-security package, production builds upgrade NSS but the CI Dockerfiles used by the Trivy scan and operator build omit these packages, causing CI to build and scan a different, vulnerable configuration instead of validating the remediation.

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

🟡 Playwright Results — all passed (25 flaky)

✅ 4538 passed · ❌ 0 failed · 🟡 25 flaky · ⏭️ 95 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 436 0 4 16
✅ Shard 2 11 0 0 0
🟡 Shard 3 822 0 9 8
🟡 Shard 4 816 0 4 18
🟡 Shard 5 830 0 3 5
🟡 Shard 6 832 0 1 46
🟡 Shard 7 791 0 4 2
🟡 25 flaky test(s) (passed on retry)
  • Features/EntityRenameConsolidation.spec.ts › Glossary - multiple rename + update cycles should preserve terms (shard 1, 1 retry)
  • Flow/TestConnectionModal.spec.ts › modal opens with gate card and capability checks sections (shard 1, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab IS visible for supported type: chart (shard 1, 1 retry)
  • Flow/SearchRBAC.spec.ts › a fully denied user sees neither asset type when browsing (shard 1, 1 retry)
  • Features/BulkEditEntity.spec.ts › Glossary Term (Nested) (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Article listing search filters, clears, and shows empty state (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Quick link lifecycle validates, creates, edits, and deletes from card (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Article edit persistence and unsaved title behavior are correct (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Text formatting (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › description: switching articles does not bleed unsaved content into next article (shard 3, 1 retry)
  • Features/CuratedAssets.spec.ts › Complex nested groups (shard 3, 1 retry)
  • Features/DataQuality/CertificationFilter.spec.ts › Certification filter narrows both table- and testCase-index queries via the flat field path (shard 3, 1 retry)
  • Features/DomainTierCertificationVoting.spec.ts › Domain - Certification assign, update, and remove (shard 3, 1 retry)
  • Features/Glossary/GlossaryWorkflow.spec.ts › should not auto-approve term when glossary has reviewers (shard 4, 1 retry)
  • Features/MetricBulkImportExportEdit.spec.ts › MetricListPage unchecking header checkbox clears the selection bar (shard 4, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 4, 1 retry)
  • Features/Table.spec.ts › should persist page size (shard 4, 1 retry)
  • Flow/ExploreDiscovery.spec.ts › Should display domain and owner of deleted asset in suggestions when showDeleted is on (shard 5, 1 retry)
  • Pages/CustomProperties.spec.ts › Should display custom properties for metric in right panel (shard 5, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate Description Rule Is_Set (shard 5, 1 retry)
  • Pages/EntityDataConsumer.spec.ts › Tier Add, Update and Remove (shard 6, 1 retry)
  • Pages/Glossary.spec.ts › Drag and Drop Glossary Term (shard 7, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify Impact Analysis service filter selection (shard 7, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for pipelineService in platform lineage (shard 7, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for apiService in platform lineage (shard 7, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

@harshsoni2024
harshsoni2024 marked this pull request as draft July 24, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ingestion safe to test Add this label to run secure Github workflows on PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants