Skip to content

OCPBUGS-90080: Validate chart URL in /api/helm/verify to prevent SSRF#16786

Open
fsgreco wants to merge 1 commit into
openshift:mainfrom
fsgreco:worktree-OCPBUGS-90080
Open

OCPBUGS-90080: Validate chart URL in /api/helm/verify to prevent SSRF#16786
fsgreco wants to merge 1 commit into
openshift:mainfrom
fsgreco:worktree-OCPBUGS-90080

Conversation

@fsgreco

@fsgreco fsgreco commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Analysis / Root cause:

The /api/helm/verify endpoint accepts a chart_url parameter and passes it directly to the chart-verifier library without URL validation. It allows authenticated users to force the console backend to issue requests to arbitrary internal network addresses (SSRF). The install and get-chart paths already validate URLs via IsValidChartURL, but the verify handler was missing this check.

Solution description:

I exported the existing isValidChartURL function and call it in HandleChartVerifier before invoking the chart verifier. Invalid URLs now return 400 instead of being forwarded.

Screenshots / screen recording:
N/A — backend-only change, no UI impact.

Test setup:
Run the console bridge locally with --user-auth=disabled against any cluster.

Test cases:

  1. curl -X POST http://localhost:9000/api/helm/verify -H 'Content-Type: application/json' -H 'X-CSRFToken: test' -b 'csrf-token=test' -d '{"chart_url": "http://172.28.1.76:8849/nacos"}'400 invalid chart URL
  2. curl -X POST http://localhost:9000/api/helm/verify -H 'Content-Type: application/json' -H 'X-CSRFToken: test' -b 'csrf-token=test' -d '{"chart_url": "https://charts.helm.sh/stable/argo-cd-2.3.5.tgz"}' → passes validation (502 chart not found, but not 400)

Browser conformance:
N/A — backend-only change.

Additional info:
Jira: https://redhat.atlassian.net/browse/OCPBUGS-90080

Summary by CodeRabbit

  • Bug Fixes
    • Chart verification now performs upfront chart_url validation and returns clear HTTP 400 errors for invalid inputs (including disallowed URL schemes and other unsupported URL formats).
    • chart_url validation is now applied consistently across chart loading and installation workflows.
  • Tests
    • Updated handler tests to reuse a shared valid request payload.
    • Added coverage to confirm invalid chart_url requests are rejected with HTTP 400.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jul 21, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@fsgreco: This pull request references Jira Issue OCPBUGS-90080, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Analysis / Root cause:

The /api/helm/verify endpoint accepts a chart_url parameter and passes it directly to the chart-verifier library without URL validation. It allows authenticated users to force the console backend to issue requests to arbitrary internal network addresses (SSRF). The install and get-chart paths already validate URLs via IsValidChartURL, but the verify handler was missing this check.

Solution description:

I exported the existing isValidChartURL function and call it in HandleChartVerifier before invoking the chart verifier. Invalid URLs now return 400 instead of being forwarded.

Screenshots / screen recording:
N/A — backend-only change, no UI impact.

Test setup:
Run the console bridge locally with --user-auth=disabled against any cluster.

Test cases:

  1. curl -X POST http://localhost:9000/api/helm/verify -H 'Content-Type: application/json' -H 'X-CSRFToken: test' -b 'csrf-token=test' -d '{"chart_url": "http://172.28.1.76:8849/nacos"}'400 invalid chart URL
  2. curl -X POST http://localhost:9000/api/helm/verify -H 'Content-Type: application/json' -H 'X-CSRFToken: test' -b 'csrf-token=test' -d '{"chart_url": "https://charts.helm.sh/stable/argo-cd-2.3.5.tgz"}' → passes validation (502 chart not found, but not 400)

Browser conformance:
N/A — backend-only change.

Additional info:
Jira: https://redhat.atlassian.net/browse/OCPBUGS-90080

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The chart URL validator is exported and reused by chart retrieval and installation. Chart verification now rejects invalid chart URLs with HTTP 400 before downstream processing, with tests covering valid payloads and invalid URL cases.

Changes

Chart URL validation

Layer / File(s) Summary
Export and reuse chart URL validator
pkg/helm/actions/get_chart.go, pkg/helm/actions/install_chart.go, pkg/helm/actions/install_chart_test.go
Renames isValidChartURL to IsValidChartURL and updates chart retrieval, installation, and unit-test references.
Validate chart verification requests
pkg/helm/handlers/handlerChartVerifier.go, pkg/helm/handlers/handler_chartVerifier_test.go
Validates chart URLs before configuration lookup and verification, returning HTTP 400 for invalid requests; tests cover valid payloads and rejected URLs.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant HandleChartVerifier
  participant IsValidChartURL
  participant chartVerifier
  Client->>HandleChartVerifier: submit chart_url
  HandleChartVerifier->>IsValidChartURL: validate chart URL
  IsValidChartURL-->>HandleChartVerifier: validation result
  HandleChartVerifier->>chartVerifier: verify valid chart URL
  chartVerifier-->>Client: verification response
Loading

Suggested reviewers: baijum

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 42.86% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: validating chart URLs in /api/helm/verify to prevent SSRF.
Description check ✅ Passed The description covers root cause, solution, tests, setup, screenshots, and backend-only impact; only reviewers/assignees are missing.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed No Ginkgo-style titles were added; the changed tests use static, deterministic table names only.
Test Structure And Quality ✅ Passed PASS: The added tests are small table-driven unit tests with one behavior each; no cluster resources, Ginkgo waits, or cleanup issues.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the changed tests are plain Go unit tests, so MicroShift API compatibility is not implicated.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e specs were added; the touched tests are plain Go unit tests and contain no SNO-sensitive multi-node assumptions.
Topology-Aware Scheduling Compatibility ✅ Passed Only Helm URL validation/handler code changed; no manifests, controllers, or pod scheduling/topology constraints were added.
Ote Binary Stdout Contract ✅ Passed No process-level stdout writes were added; the PR only changes library/handler validation and tests, with no main/init/TestMain/suite setup changes.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the changed tests are Go unit tests using httptest, with no external connectivity or IPv6-specific assumptions.
No-Weak-Crypto ✅ Passed No MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret/token comparisons appear in the touched files; changes are URL validation only.
Container-Privileges ✅ Passed PR only changes Go validation/test code; no container/K8s manifest changes or privileged settings were introduced.
No-Sensitive-Data-In-Logs ✅ Passed No new logging of secrets or customer data was added; the verifier now rejects invalid chart URLs before handing them off.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@openshift-ci
openshift-ci Bot requested review from baijum and sowmya-sl July 21, 2026 09:23
@openshift-ci openshift-ci Bot added the component/backend Related to backend label Jul 21, 2026
@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: fsgreco
Once this PR has been reviewed and has the lgtm label, please assign martinszuc for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
pkg/helm/handlers/handler_chartVerifier_test.go (1)

58-58: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Specify the HTTP method for the test request.

httptest.NewRequest defaults to "GET" when the method is passed as "". Since chart verification is typically a POST operation (as correctly implemented in your new TestHelmHandlers_HandleChartVerifier_RejectsInvalidURLs test), consider explicitly passing "POST" here for accuracy.

♻️ Proposed fix
-			request := httptest.NewRequest("", "/foo", strings.NewReader(tt.body))
+			request := httptest.NewRequest("POST", "/foo", strings.NewReader(tt.body))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/helm/handlers/handler_chartVerifier_test.go` at line 58, Update the
httptest.NewRequest call in the chart verification test to explicitly use the
POST method instead of an empty method string, matching the operation being
tested and the existing TestHelmHandlers_HandleChartVerifier_RejectsInvalidURLs
behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/helm/actions/install_chart.go`:
- Around line 61-64: Anchor ociURLRe in IsValidChartURL to require a complete
valid URL and prevent trailing-character or `@-authority` bypasses. In the chart
verifier handler, add strict net/url parsing and net.ParseIP checks that reject
loopback, private, and unspecified addresses without changing install_chart’s
existing localhost allowance. Update
pkg/helm/handlers/handler_chartVerifier_test.go:80 to append .tgz to the
internal-IP test payload.

---

Nitpick comments:
In `@pkg/helm/handlers/handler_chartVerifier_test.go`:
- Line 58: Update the httptest.NewRequest call in the chart verification test to
explicitly use the POST method instead of an empty method string, matching the
operation being tested and the existing
TestHelmHandlers_HandleChartVerifier_RejectsInvalidURLs behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cdd2ea91-847e-480e-ace3-83b1214071b7

📥 Commits

Reviewing files that changed from the base of the PR and between 6d0dcf1 and a905d80.

📒 Files selected for processing (5)
  • pkg/helm/actions/get_chart.go
  • pkg/helm/actions/install_chart.go
  • pkg/helm/actions/install_chart_test.go
  • pkg/helm/handlers/handlerChartVerifier.go
  • pkg/helm/handlers/handler_chartVerifier_test.go

Comment thread pkg/helm/actions/install_chart.go
@fsgreco
fsgreco force-pushed the worktree-OCPBUGS-90080 branch from a905d80 to d6016da Compare July 21, 2026 09:42

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/helm/handlers/handlerChartVerifier.go`:
- Around line 52-68: Harden SSRF validation in isPrivateURL and the downstream
chart fetch: validate every address returned by DNS, include CGNAT
(100.64.0.0/10) and other restricted ranges in the blocklist, and configure the
HTTP client used by h.chartVerifier with a net.Dialer.Control hook that rejects
restricted destination IPs at connection time, ensuring requests cannot rely on
the previously validated hostname resolution.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 031f1497-6220-4f00-93dd-1019422add81

📥 Commits

Reviewing files that changed from the base of the PR and between a905d80 and d6016da.

📒 Files selected for processing (5)
  • pkg/helm/actions/get_chart.go
  • pkg/helm/actions/install_chart.go
  • pkg/helm/actions/install_chart_test.go
  • pkg/helm/handlers/handlerChartVerifier.go
  • pkg/helm/handlers/handler_chartVerifier_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/helm/actions/get_chart.go
  • pkg/helm/actions/install_chart.go
  • pkg/helm/actions/install_chart_test.go

Comment thread pkg/helm/handlers/handlerChartVerifier.go Outdated
@fsgreco
fsgreco force-pushed the worktree-OCPBUGS-90080 branch from d6016da to bbfb522 Compare July 21, 2026 09:57
}
return false
}
return ip.IsLoopback() || ip.IsPrivate() || ip.IsUnspecified() || ip.IsLinkLocalUnicast()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a possibility that customers would be hosting their own registries. So we may get private, loopback or localhost IPs.

@fsgreco fsgreco Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the feedback. I had some doubts about the IP check since the format validation (IsValidChartURL) already blocks the reported attack. I'll remove isPrivateURL and keep just the format check

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sowmya-sl fixed

@fsgreco

fsgreco commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@fsgreco

fsgreco commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@fsgreco: This pull request references Jira Issue OCPBUGS-90080, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@fsgreco

fsgreco commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jul 21, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@fsgreco: This pull request references Jira Issue OCPBUGS-90080, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

The `/api/helm/verify` endpoint accepted arbitrary chart_url values without validation, allowing authenticated users to make the backend issue requests to internal network addresses. I reused the existing IsValidChartURL check (already enforced on install and get-chart paths) to reject URLs that are not oci:// or http(s)://*.tgz before the backend attempts any connection.

Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
@fsgreco
fsgreco force-pushed the worktree-OCPBUGS-90080 branch from bbfb522 to 2df62f3 Compare July 21, 2026 11:14
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@fsgreco: This pull request references Jira Issue OCPBUGS-90080, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

Analysis / Root cause:

The /api/helm/verify endpoint accepts a chart_url parameter and passes it directly to the chart-verifier library without URL validation. It allows authenticated users to force the console backend to issue requests to arbitrary internal network addresses (SSRF). The install and get-chart paths already validate URLs via IsValidChartURL, but the verify handler was missing this check.

Solution description:

I exported the existing isValidChartURL function and call it in HandleChartVerifier before invoking the chart verifier. Invalid URLs now return 400 instead of being forwarded.

Screenshots / screen recording:
N/A — backend-only change, no UI impact.

Test setup:
Run the console bridge locally with --user-auth=disabled against any cluster.

Test cases:

  1. curl -X POST http://localhost:9000/api/helm/verify -H 'Content-Type: application/json' -H 'X-CSRFToken: test' -b 'csrf-token=test' -d '{"chart_url": "http://172.28.1.76:8849/nacos"}'400 invalid chart URL
  2. curl -X POST http://localhost:9000/api/helm/verify -H 'Content-Type: application/json' -H 'X-CSRFToken: test' -b 'csrf-token=test' -d '{"chart_url": "https://charts.helm.sh/stable/argo-cd-2.3.5.tgz"}' → passes validation (502 chart not found, but not 400)

Browser conformance:
N/A — backend-only change.

Additional info:
Jira: https://redhat.atlassian.net/browse/OCPBUGS-90080

Summary by CodeRabbit

  • Bug Fixes
  • Chart verification now performs upfront chart_url validation and returns clear HTTP 400 errors for invalid inputs (including disallowed URL schemes and other unsupported URL formats).
  • chart_url validation is now applied consistently across chart loading and installation workflows.
  • Tests
  • Updated handler tests to reuse a shared valid request payload.
  • Added coverage to confirm invalid chart_url requests are rejected with HTTP 400.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
pkg/helm/handlers/handler_chartVerifier_test.go (2)

58-58: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use "POST" instead of an empty method string.

httptest.NewRequest defaults to "GET" when the method parameter is an empty string. Since this handler processes a JSON body (which is typical of a POST request) and your new test block explicitly uses "POST", consider specifying it here for consistency.

♻️ Proposed refactor
-			request := httptest.NewRequest("", "/foo", strings.NewReader(tt.body))
+			request := httptest.NewRequest("POST", "/foo", strings.NewReader(tt.body))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/helm/handlers/handler_chartVerifier_test.go` at line 58, Update the
httptest.NewRequest call in the handler test to pass "POST" instead of an empty
method string, keeping the existing URL and request body unchanged and
consistent with the test's explicit POST request.

75-85: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Test against format validation bypasses.

Consider adding test cases where the .tgz extension is placed in a query parameter or URL fragment. This ensures that the format validation securely prevents attackers from bypassing the check to hit arbitrary non-tgz endpoints (like internal metadata or REST APIs).

♻️ Proposed test additions
 		{"rejects empty chart_url", `{"chart_url":""}`},
 		{"rejects ftp scheme", `{"chart_url":"ftp://example.com/chart.tgz"}`},
 		{"rejects file scheme", `{"chart_url":"file:///etc/passwd"}`},
+		{"rejects tgz in query param", `{"chart_url":"http://127.0.0.1/metadata?file=.tgz"}`},
+		{"rejects tgz in fragment", `{"chart_url":"http://127.0.0.1/metadata#.tgz"}`},
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/helm/handlers/handler_chartVerifier_test.go` around lines 75 - 85, Add
cases to TestHelmHandlers_HandleChartVerifier_RejectsInvalidURLs covering URLs
with “.tgz” only in the query string and only in the fragment, while the actual
path is a non-tgz endpoint. Assert both are rejected, preserving coverage
against format-validation bypasses.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/helm/handlers/handlerChartVerifier.go`:
- Around line 58-61: Update actions.IsValidChartURL, used by the chart
verification handler, to parse the URL and validate the parsed u.Path for the
required .tgz suffix rather than applying httpURLRe to the raw URL. Ensure query
strings and fragments such as ?ignore=.tgz or #.tgz cannot satisfy the suffix
check while preserving valid oci:// and http(s):// chart URLs.

---

Nitpick comments:
In `@pkg/helm/handlers/handler_chartVerifier_test.go`:
- Line 58: Update the httptest.NewRequest call in the handler test to pass
"POST" instead of an empty method string, keeping the existing URL and request
body unchanged and consistent with the test's explicit POST request.
- Around line 75-85: Add cases to
TestHelmHandlers_HandleChartVerifier_RejectsInvalidURLs covering URLs with
“.tgz” only in the query string and only in the fragment, while the actual path
is a non-tgz endpoint. Assert both are rejected, preserving coverage against
format-validation bypasses.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 545e5121-d987-4594-b91c-636b1c8e7a47

📥 Commits

Reviewing files that changed from the base of the PR and between bbfb522 and 2df62f3.

📒 Files selected for processing (5)
  • pkg/helm/actions/get_chart.go
  • pkg/helm/actions/install_chart.go
  • pkg/helm/actions/install_chart_test.go
  • pkg/helm/handlers/handlerChartVerifier.go
  • pkg/helm/handlers/handler_chartVerifier_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/helm/actions/get_chart.go
  • pkg/helm/actions/install_chart_test.go
  • pkg/helm/actions/install_chart.go

Comment thread pkg/helm/handlers/handlerChartVerifier.go
@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

@fsgreco: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/backend Related to backend jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants