Skip to content

P3.5: Classifier — wildcard redirect_uri matching #81

Description

@bjcorder

Parent tracker: #62
Spec: docs/superpowers/specs/2026-05-21-edge-case-hardening-design.md
Milestone: P3
Depends on: P3.1

Goal

Fire a finding when an OAuth client's redirect_uris array literal contains overly permissive entries.

Acceptance criteria

  • oauth_redirect_uri_wildcard_review fires when a literal redirect_uris array contains:
    • a * wildcard
    • an empty path with bare host (https://example.com)
    • a top-level-domain-only match (*.example.com form)
  • Review-required only — final matching is server-side and SessionScope cannot prove enforcement strictness.
  • Evidence-bound — links the array-literal evidence.

New check IDs

  • oauth_redirect_uri_wildcard_review

Files touched

  • crates/sessionscope-classifier/src/oauth_flow.rs

Fixture expectations

  • Negative: literal redirect_uris: ['https://*.example.com/callback'].
  • Positive: literal redirect_uris: ['https://app.example.com/auth/callback'].
  • False-positive: redirect_uris: [process.env.REDIRECT_URI] — dynamic, no fire (but emits review-required evidence note).

Audit-then-decide

  • Category: dynamic_review_required, severity medium.
  • Feed into the consolidated P4.8 audit.

Doc-update checklist

  • docs/USAGE.md check catalog.
  • docs/COVERAGE_MATRIX.md row.
  • CHANGELOG.md unreleased entry.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions