Skip to content

fix(security): patch Noema document reader transitives - #2545

Merged
seonghobae merged 5 commits into
codex/security-baseline-final-20260930from
fix/noema-document-reader-transitive-cves
Oct 1, 2026
Merged

seonghobae merged 5 commits into
codex/security-baseline-final-20260930from
fix/noema-document-reader-transitive-cves

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The shared Noema document reader lock on protected main selected vulnerable transitive releases:

This PR is the canonical owner repair. Consumer or queue PRs must integrate this owner rather than duplicate or hide the supplier defect.

Change

  • add exact npm source overrides for fast-uri 3.1.8 and the first patched ip-address 10.7.1;
  • regenerate and retain the deterministic lock while preserving direct dependency ranges;
  • enumerate every hoisted or nested lock entry so a vulnerable duplicate cannot hide below a patched top-level copy;
  • add a nested-vulnerability fixture and source-ownership regression;
  • record the security update in a changelog fragment.

Exact evidence

Base prerequisite: #2531 at 516471fbe7d4e93a50c7bbba20402447f06f8d8b

Head: 9a4af5e438283a31dc05814d6bc2818caee782a3

Tree: f8798f77715c627bfea13523164f769c8121860b

Topology:

  • parent 93433af817dd1bdd752d0491bb0246a61197e980 preserves the conflict-free prerequisite integration and all prior Noema repair intent;
  • this repair was published as an ordinary single-parent fast-forward with force=false.

RED:

  • npm audit --package-lock-only --json reported two vulnerable packages and the three advisories above.
  • The first source-contract RED failed with KeyError: 'overrides'.
  • Independent review then supplied a nested vulnerable fixture; it failed before the enumerating helper existed.

GREEN on the exact published bytes:

  • focused source, lock, nested-duplicate, PyO3, and Strix security regressions — 9 passed
  • full Python 3.12 warnings-fatal repository suite — 5,170 passed, 6 skipped
  • npm audit --package-lock-only --audit-level=moderate — 0 vulnerabilities
  • npm ci --ignore-scripts — 108 packages installed
  • npm provenance — 108 verified registry signatures and 10 verified attestations
  • repeated package-lock generation — byte-identical SHA-256 6cfad9df7873e018b03f72bd0154e5f32b25f9aa4ec8b87976af1d71cc56336a
  • git diff --check — clean

Integration

Fresh hosted Checks on exact head 9a4af5e438283a31dc05814d6bc2818caee782a3 and a qualifying independent approval are required before ordinary merge. No stale predecessor result is approval evidence. After #2531 and this owner land, affected leaves must be retargeted to this owner or integrate its exact commit lineage.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 0fa97083-0c4a-4d52-b192-eb491bd17303

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: eb8bdd90-99c8-4644-a6e6-5071d05be16f

📥 Commits

Reviewing files that changed from the base of the PR and between 37b1024 and 08d8506.

⛔ Files ignored due to path filters (1)
  • scripts/ci/noema-document-reader/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • CHANGELOG.d/20261001-noema-document-reader-transitive-cves.md
  • tests/test_noema_document_reader_dependency_security.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

변경 로그는 fast-uri와 ip-address의 잠금 버전 업데이트를 기록합니다. 테스트는 package-lock.json의 잠금 버전이 각각 지정된 최소 버전 이상인지 확인합니다.

Changes

문서 판독기 전이 의존성 보안 업데이트

Layer / File(s) Summary
잠금 버전 회귀 검증과 변경 기록
tests/test_noema_document_reader_dependency_security.py, CHANGELOG.d/20261001-noema-document-reader-transitive-cves.md
테스트는 fast-uri가 3.1.8 이상이고 ip-address가 10.7.2 이상인지 검증합니다. 변경 로그는 세 GHSA의 영향 범위, 직접 의존성 범위 유지, 회귀 검증 계약을 기록합니다.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 08d85

The dependency updates and regression check are in place; no merge-blocking risk remains in the reviewed changes.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 1 files. (1 skipped: 1 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 Noema 문서 판독기의 전이 의존성 보안 패치라는 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae changed the base branch from main to codex/security-baseline-final-20260930 September 30, 2026 20:40

Copy link
Copy Markdown
Contributor Author

Exact-head repair finding — generated lock lacks a source owner

At exact head 08d8506468ded357b7b1a2493dfad40fedb6758c, the security delta edits only package-lock.json; scripts/ci/noema-document-reader/package.json still has permissive transitive selection and the new test reads only the generated lock. A clean lock regeneration can therefore discard the repair.

I am repairing this at the canonical owner with a RED source-contract assertion, exact npm overrides for fast-uri 3.1.8 and ip-address 10.7.2, deterministic lock regeneration, and GREEN verification. The earlier main-base failures are separately addressed by the non-destructive retarget to #2531. No leaf copy, bypass, force update, or gate weakening.

Copy link
Copy Markdown
Contributor Author

Exact ancestry repair completed without force.

  • current head: 93433af817dd1bdd752d0491bb0246a61197e980
  • tree: cb04b40908579db424a29d7bf4abd0b86db4760b
  • first parent: Noema RED→GREEN head 91f20d2b42ad97dd9c3f0c95eaa084c7faf2cbf7
  • second parent: shared-security prerequisite fix(security): refresh shared PyJWT and PyO3 locks #2531 516471fbe7d4e93a50c7bbba20402447f06f8d8b

The prior base retarget changed review comparison only; it did not make the exact PR head contain #2531. This ordinary merge fixes that topology. Local merge-tree inspection was conflict-free, added only the 11 canonical #2531 files to the first-parent tree, and passed git diff --check. Fresh hosted Checks and independent approval remain mandatory.

Copy link
Copy Markdown
Contributor Author

Exact-head independent-review repair receipt

Published exact head 9a4af5e438283a31dc05814d6bc2818caee782a3 (tree f8798f77715c627bfea13523164f769c8121860b) by ordinary fast-forward from 93433af817dd1bdd752d0491bb0246a61197e980; no force update.

The independent review found two substantive issues and both are repaired:

  1. ip-address 10.7.2 was broader than necessary. The owner now pins first-patched 10.7.1 with registry integrity sha512-4OUAqU9Z1i3vCnS05hzGiFnEMDpQ+62pAD/MVQOp83fYyNC8GleCqaS0QikQBmcWCrKFiUs/B8ztRRiYOAXuCA==.
  2. The original regression read only the hoisted lock entry. It now enumerates all matching hoisted and nested entries, with a fixture that proves a vulnerable nested duplicate is rejected.

Exact-byte local evidence:

  • 9 focused security regressions passed
  • full Python 3.12 warnings-fatal suite: 5,170 passed, 6 skipped
  • npm audit: 0 vulnerabilities
  • clean install: 108 packages
  • provenance: 108 verified registry signatures, 10 verified attestations
  • regenerated lock remained byte-identical at SHA-256 6cfad9df7873e018b03f72bd0154e5f32b25f9aa4ec8b87976af1d71cc56336a
  • git diff --check: clean

Fresh hosted checks and a qualifying exact-head approval remain required. This comment records repair evidence; it is not approval.

Copy link
Copy Markdown
Contributor Author

Exact-head hosted-check revalidation

At exact head 9a4af5e438283a31dc05814d6bc2818caee782a3 / tree f8798f77715c627bfea13523164f769c8121860b:

  • Security Scan 36775826100: SUCCESS
  • SAST Semgrep 36775826068: SUCCESS
  • CodeQL PR 36775826167: fail-closed handoff with DISPATCH_OUTCOME=success and VERDICT_STATE=pending
  • exact-head CodeQL dispatch 36775896187: queued
  • unresolved review threads: 0
  • qualifying approvals: 0

The PR remains open, Ready, and mergeable, but ordinary merge is HOLD until the authenticated exact-head CodeQL verdict and independent approval arrive. No bypass, auto-merge, force update, rebase, or close.

Copy link
Copy Markdown
Contributor Author

Exact-head readiness correction for 9a4af5e438283a31dc05814d6bc2818caee782a3: CodeQL PR run 36775826167 is terminal failure, there is no qualifying APPROVED review, and skipped/pending/predecessor evidence is not acceptance. The canonical dependency-owner delta remains intact and must stay live while its gate is repaired.

Moving this PR to Draft / Proposed preserves every commit and valid delta while the central review/queue prerequisite is repaired. No close, force update, bypass, merge, or stale approval is performed.

@seonghobae
seonghobae marked this pull request as draft September 30, 2026 22:33
@seonghobae
seonghobae marked this pull request as ready for review October 1, 2026 01:01
@seonghobae
seonghobae merged commit 9a4af5e into codex/security-baseline-final-20260930 Oct 1, 2026
69 of 79 checks passed
@seonghobae
seonghobae deleted the fix/noema-document-reader-transitive-cves branch October 1, 2026 01:20

Copy link
Copy Markdown
Contributor Author

Stack preservation update (2026-10-01): parent #2531 now points to fe879f7b7f48f729f757e03851bf61149470ccb5, whose ordinary ancestry contains this PR's exact head 9a4af5e438283a31dc05814d6bc2818caee782a3 and all preceding RED→GREEN commits. The Noema document-reader source overrides, regenerated lock, nested-copy regression, CHANGELOG, and RCA remain byte-identical in that ancestor; no valid delta was discarded or reimplemented.

This PR is intentionally left open. Its head/base topology should be reconciled only after #2531's fresh exact-head security Checks and independent review establish that the carried owner repair is admissible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant