Skip to content

Add opt-in dynamic_probe.py step to the audit flow - #2103

Closed
remigiusz-antczak wants to merge 1 commit into
mainfrom
land/wave-1028ap
Closed

remigiusz-antczak wants to merge 1 commit into
mainfrom
land/wave-1028ap

Conversation

@remigiusz-antczak

Copy link
Copy Markdown
Collaborator

Summary

Adds an opt-in dynamic step to the full audit. Static scanners missed an unhandled URIError returning 500, an unrated error endpoint and a DB TLS verify-off setting in a recent audit, and the audit had no dynamic step.

dynamic_probe.py probes a local app only (localhost or 127.0.0.1; redirects never followed) for:

  • 5xx on malformed percent-encoding and oversized inputs;
  • missing rate limiting on a named endpoint;
  • missing security headers;
  • open redirect.

It prints rows in the review_checks.sh shape (finding, clean or not-checked). A dropped, reset or timed-out request makes the affected probe not-checked, never clean. Routed from full-audit.md via references/dynamic-probe.md.

Verification

  • python3 scripts/test_dynamic_probe_mock.py: 32/32 locally (mocked connection layer, no socket).
  • scripts/test_dynamic_probe.py (16 checks against a stub http.server on 127.0.0.1) runs in CI only; the authoring sandbox blocks local bind. scripts/ci-tests.d/dynamic-probe.sh runs both.
  • skill_index.py --check and the size ratchet pass locally against the base.

🤖 Generated with Claude Code

Static scanners missed an unhandled URIError returning 500, an unrated
error endpoint and a DB TLS verify-off setting, and the audit had no
dynamic step. dynamic_probe.py probes a local app (localhost or 127.0.0.1
only, redirects never followed) for 5xx on malformed percent-encoding and
oversized inputs, missing rate limiting on a named endpoint, missing
security headers and open redirect, and prints review_checks-shaped rows
(finding, clean or not-checked). Any dropped, reset or timed-out request
makes the affected probe not-checked, never clean. Routed from
full-audit.md via references/dynamic-probe.md.

Tests: ran 32/32 (scripts/test_dynamic_probe_mock.py, mocked connection
layer, no socket). Needs CI or an unsandboxed run: 16 checks in
scripts/test_dynamic_probe.py (stub http.server on 127.0.0.1); the
authoring sandbox blocks bind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@remigiusz-antczak

Copy link
Copy Markdown
Collaborator Author

Superseded by land/wave-1028ap-r2 (rebased; full-map row trimmed under the 19000-byte core cap).

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.

1 participant