Skip to content

security: require exact built-in HTTP method policy strings #124

Description

@seonghobae

Buyer-visible immutable method-policy value gap

EgressWeave must reject non-exact str subclasses before trusted HTTP-method normalization or comma-separated parsing can invoke subclass-controlled strip(), upper(), or split(). This is supported configuration integrity, not a Python-sandbox claim.

Current canonical reconstruction

Historical #129/#154/#161/#184/#196 remain TDD/review or superseded reconstruction history. The single live implementation owner is Draft PR #204security: reconstruct exact HTTP method strings on protected main.

Fresh exact lineage as of the current repository sweep:

The live candidate requires exact built-in str values before per-entry normalization and before supported comma-separated parsing. Ordinary exact strings, trimming, uppercase canonicalization, RFC 9110 token validation, default/deny-all method sets, unconditional CONNECT denial, exact (hostname, port) authorization, and the already-protected scalar-integer boundary remain unchanged.

Exact-current-head evidence

On unchanged ab51ef1725bd20c898a3e3df82994b576e675e7b:

  • repository ci run 31597947375: completed success;
  • required SAST Semgrep run 31597947456: completed success;
  • required Security Scan run 31597947433: aggregate success, but job 94117979264 shows the actual immutable-pinned Dependency review step as skipped; this is explicitly non-passing supply-chain evidence under issue security: fail closed when dependency review is unavailable #76;
  • exact-head OpenCode workflow/check completed successfully, but model/check status is not promoted into qualifying approval or a substitute for a missing required security action;
  • formal reviews: none;
  • unresolved review threads: none.

The separately governed root-cause repair remains read-only ContextualWisdomLab/.github#897, exact head 59505c1d89eb7ea816e921b6da38079c736608c2, open / Ready / mergeable / unmerged at the latest refetch. EgressWeave must not fork that workflow locally, weaken the gate, invent credentials, or churn #204's clean source head merely to reproduce the same skipped result.

Acceptance criteria

  • Preserve immutable RED evidence for non-exact method entries and subclass-controlled comma-separated parsing.
  • Reject non-exact str before per-entry strip() / upper() and before supported outer split(",") paths in the live reconstruction source.
  • Preserve exact ordinary strings, comma-separated ergonomics, uppercase normalization, RFC 9110 token validation, default/deny-all method sets, unconditional CONNECT denial, and the protected scalar-integer boundary.
  • Add a runtime authorization regression proving a hostile method-string subclass is rejected rather than dynamically normalized.
  • Retire stale stacked reconstruction paths and rebuild the unique issue security: require exact built-in HTTP method policy strings #124 delta directly on exact protected main as security: reconstruct exact HTTP method strings on protected main #204 without force-push or destructive rebase.
  • Obtain exact-current-head repository CI and SAST success for security: reconstruct exact HTTP method strings on protected main #204.
  • Integrate the separately governed central fail-closed Dependency Review repair (ContextualWisdomLab/.github#897 or a freshly verified successor) and obtain a fresh unchanged security: reconstruct exact HTTP method strings on protected main #204 Security Scan whose actual immutable-pinned Dependency review action executes and succeeds.
  • Require every other live organization-required workflow on the unchanged exact head to be genuinely passing; queued/skipped/neutral/backend-unavailable/wrapper-only/status/model/predecessor evidence does not pass by inference.
  • Obtain current semantic/source review with zero valid unresolved findings; formal approval is required only if the live ruleset actually requires it (the current observed rule requires zero approving reviews but does require thread resolution).
  • Immediately before integration refetch exact head, live base, ancestry, ruleset, every required workflow, reviews, findings, and threads; merge only the unchanged accepted tree.
  • Verify the exact method-policy contract from protected main before closing this issue.

Non-goals

  • No HTTP method allowlist redesign or authority widening.
  • No change to request-time case/canonicality rules.
  • No generalized Python sandbox or in-process code-containment claim.
  • No EgressWeave-local replacement for organization-owned Dependency Review or Strix governance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions