Skip to content

Fix wildcard detection (#11), dead repo URLs, and duplicate CI steps - #29

Open
Dishanth234 wants to merge 1 commit into
OpenVanta:mainfrom
Dishanth234:fix/wildcards-urls-ci
Open

Fix wildcard detection (#11), dead repo URLs, and duplicate CI steps#29
Dishanth234 wants to merge 1 commit into
OpenVanta:mainfrom
Dishanth234:fix/wildcards-urls-ci

Conversation

@Dishanth234

Copy link
Copy Markdown

Summary

Detectors: colon-syntax prefix wildcards (Bash(cmd:*) — the form Claude
Code writes for "always allow") now classify the same as the equivalent space
form (Bash(cmd *)), and bare tool-wide wildcards such as Bash(*) are
flagged OVERBROAD instead of safe. Bash(*) reuses the existing OVERBROAD
category rather than adding a new severity tier — happy to adjust if you'd
prefer it ranked higher. Two detector tests added.

Docs/UI: dead VantaInc/grantguard links (404 since the org rename) now
point to OpenVanta/GrantGuard — the CONTRIBUTING clone command, the
changelog link references, the issue chooser's security-advisory link, and
both spots in the web UI share modal. Also points the oxfmt link at its live
docs page. This revives the approved-but-unmerged #10 (credit to
@imran-siddique).

CI: removes the duplicated setup-python v6.3.0 / checkout v7.0.0
steps left behind by a merge conflict resolution, so each job checks out and
sets up Python exactly once. Also obsoletes the dependabot re-bump in #28.

Verified: 90/90 tests on Python 3.10 and 3.12, compileall clean,
pnpm fmt:check passes, no new pnpm check errors, every replacement URL
returns 200.

Related issue

Closes #11

Type of change

  • Bug fix
  • New risk detector / detection improvement
  • New feature
  • Docs / chore

Checklist

  • uv run python -m compileall -q grantguard grantguard.py passes
  • No new runtime dependencies (stdlib only)
  • New secret-matching patterns are also covered by redact() (n/a — no new secret patterns; the added detectors are non-redacting)
  • Docs updated if behavior changed (CHANGELOG)
  • I verified the change manually (CLI and/or UI)

@Dishanth234
Dishanth234 requested a review from a team as a code owner August 31, 2026 16:17
@Dishanth234

Copy link
Copy Markdown
Author

Hi @hermanerr, @chriskrycho first-time contributor here. This bundles the
fix for #11 with the dead-URL fixes previously approved in #10 and a CI
step de-dup. When you get a moment, could you approve the workflow run so
the required checks can report? Happy to split this into separate PRs or
adjust the Bash(*) severity if you'd prefer.

@imran-siddique imran-siddique 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.

Thanks for picking up the URL fixes from #10 and for the credit. Reviewing the whole thing rather than just my half, and I ran it instead of reading it.

The detector gap reproduces on main. At 2b828199627e0d6f31a9ab5f1914bbf3141273c8, apply_detectors returns zero matches for all of these:

rule main this PR
Bash(*) no matches OVERBROAD
Skill(*) no matches OVERBROAD
* no matches OVERBROAD
Bash(nc:*) no matches OVERBROAD
Bash(sudo cp:*) no matches OVERBROAD
Bash(git reset:*) no matches DESTRUCTIVE

Bash(rm -rf *) matches on both, so the detector was working generally and failing on exactly the two shapes #11 named. The colon and space forms now classify identically, which is the part that matters: cmd:* is what "always allow" writes, so the colon form was the common case in a real config and it was the one silently passing. Suite on the PR head is 89 passed, 1 skipped.

The URL half is complete against current main. Six live VantaInc/grantguard references remain: CONTRIBUTING.md (1), CHANGELOG.md (2), .github/ISSUE_TEMPLATE/config.yml (1), grantguard/web/app.js (2). Those are exactly the four files here. README.md carries none any more, so dropping it from #10's file list is correct rather than a miss.

One thing that is not visible from the checks. This PR reports three checks, the two Socket ones and semgrep. A merged PR in this repo gets thirteen, including ubuntu/macos/windows on py3.10 and py3.14 and three CodeQL analyses. The CI and CodeQL runs on fix/wildcards-urls-ci are both sitting at action_required (run ids 33413300045 and 33413300037), so the repo's own CI has never executed the new detector tests, and my 89-passed number is from my machine on Python 3.12, not from here. That needs a maintainer to release before the green reads as green.

No blocking findings from me on the diff.

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.

Detectors miss bare wildcards (Bash(*)) and all colon-syntax rules (Bash(cmd:*)) — the riskiest grants pass as safe

2 participants