Repository navigation
fix(healthcheck): enforce http and https url scheme in check_http - #6078
Closed
vaibhavsrv wants to merge 1 commit into
Closed
vaibhavsrv wants to merge 1 commit into
vaibhavsrv wants to merge 1 commit into
Conversation
This was referenced Sep 20, 2026
Collaborator
|
Thanks for this contribution. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why this matters
In
ods/scripts/healthcheck.py,check_http()is exported and invoked programmatically by test runners, diagnostic monitors, and extension health checkers. When given a target URL,_http_request()passes it directly tourllib.request.urlopen. Becauseurllibnatively supports multiple non-HTTP URI handlers (file:,ftp:,data:), passing a non-HTTP target (e.g.file:///etc/hostsorftp://...) causesurllibto open local filesystem resources or initiate non-HTTP protocols rather than rejecting the target as an invalid HTTP endpoint, violating Bandit B310 guidelines.This change adds an explicit scheme check at the entry of
check_http(), returning(False, "url scheme must be http or https", None)if the scheme is nothttp://orhttps://. Legitimate HTTP/HTTPS probing, status code checking, and body regex matching remain untouched.Validation
check_http("file:///etc/hosts", ...)opened the local file and returned(False, "http GET: missing status", None)rather than rejecting the invalid protocol scheme.ods/tests/test_healthcheck_scheme_guard.pyconfirms thatfile:,ftp:,gopher:, anddata:URLs are cleanly rejected with"url scheme must be http or https"and exit code 0.test_healthcheck_scheme_guard.pypasses cleanly (exit code 0). Wired into Linux CI workflow under the healthcheck test step.Overlap check
healthcheck.py. This change focuses strictly on URL scheme validation incheck_http().parse_targetand timeout parameter bounds. This PR operates orthogonally on protocol scheme filtering.Risk / AI disclosure
AI-assisted investigation, implementation, and test regressions. This reinforces URL protocol scheme boundaries in health checking. Independent human review and platform/runtime qualification remain gates. No running configuration, deployment or upstream merge changed.
Follow-up integration evidence
Composed with #5875, #5950, #5951, #6076, and #6077 at HEAD without conflicts. Production and test diffs passed together; healthcheck IPv6 and redirect policy suites remain intact.
Backlog composition was local-only (production/test diffs, excluding workflow/Makefile wiring); it is not an upstream merge or independent human approval. Declared live-review gates remain open.