fix(job-analysis): bound pre-authentication request metadata - #88
fix(job-analysis): bound pre-authentication request metadata#88seonghobae wants to merge 7 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@opencode-agent Please review the current unchanged head against protected |
|
Lifecycle correction: this branch is still based on |
Adopt current protected develop without force-pushing or changing the validated request-budget delta. Preserve the protected #161 workflow consolidation and retain the bounded pre-authentication metadata contracts. Signed-off-by: Seongho Bae <me@seonghobae.me>
Current authority — 2026-09-06
This PR bounds attacker-controlled Job Analysis request metadata before bearer authentication: route paths are capped at 256 characters, ASGI header frames at 64, and aggregate header-name/value bytes at 16 KiB. Oversized metadata fails closed before UUID parsing, identity lookup, authorization, body reads, or persistence.
The exact head is
866bf868c227f88d93a4fb611fb48f27e079d373on protecteddevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f. The successor is an ordinary two-parent, non-force adoption of the validated0dc4f09...delta and protected #161. The protected-parent tree was inspected before the write:.github/workflowscontains only canonicalfoundation-ci.ymland path-scopedrecovery-rehearsal-quality.yml; no retired Job Analysis/package-local workflow was resurrected.Retained security contract
The successor preserves the reviewed source delta only:
services/job-analysis-api/src/orgmetra_job_analysis_api/http.py, its request-budget regression, and the service README contract. The resolved Devin finding about_typed_headersrunning twice remains accepted as bounded redundancy because authorization failure ordering and full request-metadata budgeting are separate fail-closed obligations. No review thread is currently unresolved.Exact-head acceptance
Fresh exact-head repository/security gates on
866bf868...are now terminal:34034845036— SUCCESS.34034845082— SUCCESS.34034845007— SUCCESS.34034845035— FAILURE at the central verdict handoff, not a demonstrated Job Analysis source/SARIF defect. Language detection succeeds. Both compatibility jobs successfully executeRequest current-head CodeQL scan dispatch; Actions job101496809698and Python job101496809727then fail only atRelease runner or enforce current-head CodeQL verdict.Historical GREEN from
0dc4f09...remains predecessor evidence only. No leaf fallback, synthetic CodeQL verdict, gate weakening, or no-op retrigger is introduced.Formal submitted reviews remain COMMENTED-only; there is no qualifying independent
APPROVEDreview. Keep Draft until an authoritative current-head CodeQL verdict exists and the live approval requirement is satisfied.Live protection
Inherited ruleset
18156473remains the merge authority: one approval, stale-review dismissal after pushes, review-thread resolution, extra approval for unattributed changes, merge/squash only, the seven central required workflows, and deletion/non-fast-forward protection.OrganizationAdmin/alwaysbypass is not an ordinary acceptance path and is not used here.If another RED appears, repair its causal owner and reacquire evidence on the resulting exact head. Do not transfer predecessor checks, self-approve, synthesize reviewer identity or verdicts, weaken a required workflow, use routine administrator bypass, force-push/destructively rebase, or Close the valid request-budget delta.