Skip to content

fix(egress): bound anonymous GitHub API authority - #500

Merged
seonghobae merged 563 commits into
mainfrom
fix/oidc-workflow-sha-canonical-config
Aug 30, 2026
Merged

fix(egress): bound anonymous GitHub API authority#500
seonghobae merged 563 commits into
mainfrom
fix/oidc-workflow-sha-canonical-config

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Current repair authority

Canonical Noema credential-egress hardening, CI/release-evidence ordering, and exact-head patch-validator image evidence lane. Protected main is GitHub-verified 9fd64b184a7df52922efe0b6c121d714f6f6217d. Current exact head is d51ef8ac0cf87fda183c7680c2f2b017e496d10b; fresh comparison is ahead with merge base equal to protected main (behind=0). The PR is open / Draft / mergeable. Predecessor evidence never transfers across head movement.

Noema-owned repairs

  • Credential-bearing GitHub egress is fail-closed on reviewed destination/path, exact method, canonical Bearer framing, raw reviewed-header authority, bounded response streaming, caller cancellation/deadline, redirect refusal, and transport failure.
  • A configured GitHub App installation id is now verified against the actual target repository before use instead of bypassing repository-installation ownership validation.
  • Exact owned-production coverage and release evidence remain hard gates; deterministic dependency-license inventory is generated before the acquisition manifest.
  • Patch-validator npm dependencies are materialized from the exact lockfile outside Docker and supplied as a local BuildKit context, removing npm-registry resolution from Docker build authority.
  • Node/OpenSSL and scanner assets are HTTPS-only, timeout/retry bounded, checksum pinned and verified locally before use.
  • The exact patch-validator runtime remains scratch-based, non-root, no-network/read-only smoke tested, with CycloneDX/Syft/Grype/Trivy evidence and exact pre/post head checks.

Exact current evidence

Only unchanged exact-head evidence for d51ef8ac0cf87fda183c7680c2f2b017e496d10b is eligible.

  • Application CI 33292648472 / job 99206868880: terminal-success, including exact checkout, live-base/lockfile control, typecheck, release tests/security/KPI, fresh dependency-license inventory, acquisition manifest/integrity and final base-drift refusal.
  • reviewer-ci 33292648501 / job 99206868824: terminal-success, including hash-pinned dependencies, exact 100% line+branch coverage, 100% docstring coverage, authenticated/scanned distroless sandbox and real no-network CodeGraph smoke.
  • required central Security Scan 33292648492: terminal-success on the exact head under current protected central scanner authority.
  • dedicated patch-validator-image 33292648524 / job 99206918709: terminal-success. Every step through exact checkout/stale-head refusal, scanner acquisition, exact dependency materialization, image build, static Node identity, metadata exclusion, real no-network/read-only/non-root smoke, CycloneDX SBOM, binary/runtime/embedded dependency vulnerability receipts, exact-source/image receipt verification, post-verification stale-head refusal and bounded artifact upload completed successfully.
  • uploaded image evidence artifact patch-validator-image-verification-d51ef8ac0cf87fda183c7680c2f2b017e496d10b is bound to this exact source revision and has archive digest sha256:b442cc9c7fcddb5723d83e746f02177a67cf248093e8afaad53f8981f654ef59.
  • image-verification.json reports status=passed, image digest sha256:8cae0ebc32de0492504a1c38fe4c50b4a895749ea508ec239a9f7a181dba13f2, CycloneDX 1.7, 69 components, 0 image vulnerabilities, 0 binary vulnerability matches and 0 blocked embedded-runtime vulnerabilities. Four embedded-runtime scanner matches are explicitly reviewed non-applicable (one nghttp2 proxy-only CVE and three legacy V8 CVEs); none is promoted as a clean result without applicability evidence.
  • smoke-result.json reports status=passed for the same source revision/image digest; image metadata fixes runtime user at 65532:65532.
  • combined commit status is success. Formal reviews are COMMENTED only; all observed inline finding threads are resolved/outdated, so zero currently observed valid unresolved findings remain.

Live governance

Repository-effective organization ruleset 18794436 is active on ~DEFAULT_BRANCH, requires central .github/workflows/security-scan.yml@refs/heads/main, has bypass_actors=[], and reports current_user_can_bypass=never. Protected central scanner authority is GitHub-verified .github/main@6c8ee24046d743b3981c566c6e29f99f09137f6a; the protected Security Scan has no PR-base filter, verifies explicit base/head authority, and treats unavailable dependency-comparison evidence as failure rather than clean.

Code-owner approval is intentionally disabled for this single-maintainer repository; current live governance does not require an independent approval for this PR.

Read-only consumer lane

Central .github#834 remains the separate owner of the central review workflow's stable data.token consumer validation. It is currently exact head b3a78a914675892002054eca625000977c012e1a, diverged from protected central main and non-mergeable. Noema does not mutate that repository's source/refs/workflows/PR source state or weaken its producer contract as a workaround.

That consumer repair is not a causal prerequisite for merging this Noema-local egress/image hardening: this PR does not change the stable {ok,data,trace_id} success-envelope schema consumed by #834. Owner-dependency latency therefore remains isolated to the real central consumer/canary lane. After central integration, the separate acceptance criterion remains one real OIDC exchange proving repository/workflow/expiry/trace binding, visible-ASCII credential handling, mask-before-output export and no credential disclosure.

Merge boundary

Noema-local merge evidence is terminal-clean on one unchanged exact head and unchanged protected base, with zero valid unresolved findings and exact 100% owned-production coverage. The remaining repository-state transition is to leave Draft and merge the unchanged exact head through normal GitHub governance; do not force-push, bypass the ruleset, self-approve, or transfer evidence after any head/base movement.

@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 42 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b824b3f5-1955-4939-9c21-2038635d3847

📥 Commits

Reviewing files that changed from the base of the PR and between 9fd64b1 and d51ef8a.

📒 Files selected for processing (35)
  • .github/workflows/ci.yml
  • .github/workflows/patch-validator-image.yml
  • AGENTS.md
  • Dockerfile.patch-validator
  • src/index.ts
  • src/outbound-fetch-policy.ts
  • test/acquisition-data-room-integrity.test.ts
  • test/ci-release-evidence-order.test.ts
  • test/github-api-content-type-authority.test.ts
  • test/github-api-malformed-json.test.ts
  • test/github-app-explicit-installation-id-validation.test.ts
  • test/github-app-runtime-coverage.test.ts
  • test/github-installation-expiry-defensive-coverage.test.ts
  • test/github-installation-token-expiry-calendar-integrity.test.ts
  • test/installation-token-scope-policy.test.ts
  • test/main-governance-audit.test.ts
  • test/outbound-fetch-anonymous-authority.test.ts
  • test/outbound-fetch-app-installations-authority.test.ts
  • test/outbound-fetch-authorization-canonicality.test.ts
  • test/outbound-fetch-header-authority.test.ts
  • test/outbound-fetch-installation-id-range.test.ts
  • test/outbound-fetch-method-canonicality.test.ts
  • test/outbound-fetch-policy.test.ts
  • test/outbound-fetch-preaborted-signal.test.ts
  • test/outbound-fetch-stream-timeout.test.ts
  • test/outbound-fetch-token-media-type.test.ts
  • test/outbound-fetch-transport-abort.test.ts
  • test/outbound-fetch-url-canonicality.test.ts
  • test/outbound-request-compartment.test.ts
  • test/patch-validator-image-build-cache.test.ts
  • test/patch-validator-image-build-regression.test.ts
  • test/patch-validator-image-contract.test.ts
  • test/patch-validator-openssl-security-floor.test.ts
  • test/patch-validator-static-runtime.test.ts
  • test/workflow-concurrency-policy.test.ts

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.

github-code-quality[bot]

This comment was marked as resolved.

github-advanced-security[bot]

This comment was marked as resolved.

github-advanced-security[bot]

This comment was marked as resolved.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Devin Review found 0 potential issues.

Devin Review

@seonghobae
seonghobae merged commit d53897f into main Aug 30, 2026
18 checks passed
@seonghobae
seonghobae deleted the fix/oidc-workflow-sha-canonical-config branch August 30, 2026 10:01
seonghobae added a commit that referenced this pull request Aug 30, 2026
seonghobae pushed a commit that referenced this pull request Aug 30, 2026
…-registry-stream-bounds

Co-Authored-By: Claude <noreply@anthropic.com>
seonghobae pushed a commit that referenced this pull request Aug 30, 2026
…-registry-capability-path-authority

Co-Authored-By: Claude <noreply@anthropic.com>
seonghobae pushed a commit that referenced this pull request Aug 30, 2026
…ion-data-room-canonical-authority

Co-Authored-By: Claude <noreply@anthropic.com>
seonghobae pushed a commit that referenced this pull request Aug 30, 2026
…on-evidence-public-endpoint

Co-Authored-By: Claude <noreply@anthropic.com>

# Conflicts:
#	test/acquisition-data-room-integrity.test.ts
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.

2 participants