Skip to main content

Suse CVE-2026-33620

MEDIUM
Use of GET Request Method With Sensitive Query Strings (CWE-598)
2026-03-24 https://github.com/pinchtab/pinchtab
4.3
CVSS 3.1 · GitHub Advisory
View

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service Sensitive data in POST not GET
Impact

The CVSS 3.1 score of 4.3 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N) reflects a low-to-moderate severity rating appropriate for this vulnerability class. The attack vector is network-accessible with low complexity, but requires user interaction (copying/using a tokenized URL) and results only in confidentiality loss. Critically, this is NOT an authentication bypass—an attacker cannot directly exploit this without first obtaining the token from a secondary source such as logs, history, or clipboard. The real-world risk hinges on three factors: (1) whether the deployment actually uses query-parameter authentication rather than header-based auth (the recommended pattern), (2) whether surrounding infrastructure (reverse proxies, monitoring, terminals) captures full request URIs, and (3) whether end users actually follow the wizard's generated URLs or manually construct query-parameter requests. The existence of a PoC demonstrates the mechanism is trivial to trigger, but the practical impact is limited to environments where query-token auth is actively used. No KEV entry or active in-the-wild exploitation is indicated, suggesting this remains a low-priority issue for most deployments. However, organizations using the setup wizard flow or allowing clients to construct URLs with tokens face elevated risk.

Exploit ScenarioDerived

An attacker gains access to a reverse proxy's access logs or a system administrator's shell history and observes HTTP requests to PinchTab's API endpoint containing a valid token in the query string (e.g., GET /health?token=supersecrettoken). Because the application accepts this form of authentication, the attacker can replay this token against PinchTab to authenticate without the user's knowledge. Alternatively, a user runs PinchTab's setup wizard in version 0.8.3, copies the printed dashboard URL containing the embedded token, and pastes it into a chat application or terminal that has history/logging enabled; an attacker with access to that history or log (insider, compromised account, or lateral movement) extracts the token and uses it for unauthorized API access. The network attack vector is low-complexity and accessible remotely, but the prerequisite of obtaining the token from secondary infrastructure means this is not a direct remote code execution or authentication bypass without additional reconnaissance.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Mar 24, 2026

PinchTab versions 0.7.8 through 0.8.3 accept API authentication tokens via URL query parameters (?token=...) in addition to the Authorization header, creating an unsafe credential transport pattern that exposes tokens through intermediary logs, browser history, shell history, and clipboard history. While this is not a direct authentication bypass-an attacker must obtain the token from a secondary source-the vulnerability is compounded by first-party dashboard setup flows that generate and consume tokenized URLs, increasing practical exposure likelihood. The issue was resolved in version 0.8.4 by removing query-string token authentication entirely and enforcing header-based authentication.

Earlier versions of this analysis (1)
v1 Mar 24, 2026 - 19:46 CVSS 4.3

PinchTab versions 0.7.8 through 0.8.3 accept API authentication tokens via URL query parameters (?token=...) in addition to the Authorization header, creating an unsafe credential transport pattern that exposes tokens through intermediary logs, browser history, shell history, and clipboard history. While this is not a direct authentication bypass—an attacker must obtain the token from a secondary source—the vulnerability is compounded by first-party dashboard setup flows that generate and consume tokenized URLs, increasing practical exposure likelihood. The issue was resolved in version 0.8.4 by removing query-string token authentication entirely and enforcing header-based authentication.

RemediationAI

Immediately upgrade PinchTab to version 0.8.4 or later, which removes query-string token authentication and enforces header-based credentials (see https://github.com/pinchtab/pinchtab/releases/tag/v0.8.4). For deployments unable to upgrade immediately, enforce Authorization header authentication by documenting and enforcing client-side use of the Authorization: Bearer <token> header exclusively. Consider rotating any API tokens that may have been previously used or logged in query-string form, particularly if the setup wizard generated tokenized URLs that users copied, bookmarked, or pasted in secondary systems. If PinchTab is exposed through a reverse proxy or load balancer, implement URL rewriting rules to strip the token parameter before logging, or configure the proxy to log only the request path without query strings. For affected users, audit shell history, browser bookmarks, clipboard managers, and any centralized logging or tracing systems for URLs containing the exposed token and remediate any secondary exposure.

Affected Packages

go github.com/pinchtab/pinchtab fix: 0.8.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in go

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability exists in PinchTab's authentication middleware (internal/handlers/middleware.go) which implements a flawed credential parsing pattern. The affected Go application (CPE: pkg:go/github.com_pinchtab_pinchtab) checks both the Authorization header and the URL query string parameter 'token' using constant-time comparison against a configured secret. This violates CWE-598 (Use of GET Request with Sensitive Query Strings), a classic web security anti-pattern where sensitive authentication credentials should never transit in URL parameters. URLs are inherently logged or cached by numerous systems outside the application's control—reverse proxies, browser history, terminal emulators, tracing systems, and clipboard managers—making query-string authentication fundamentally unsafe. The setup wizard in versions through 0.8.3 exacerbated this by generating user-facing dashboard URLs with embedded tokens (cmd/pinchtab/cmd_wizard.go) and the frontend automatically extracted and stored these tokens (dashboard/src/App.tsx), creating a first-party credential exposure vector.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

GitHub Advisory PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
SUSE MEDIUM

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch released
Mar 31, 2026 - 21:13 nvd
Patch available
CVE Published
Mar 24, 2026 - 19:33 nvd
MEDIUM 4.3

DescriptionGitHub Advisory

Summary

PinchTab v0.7.8 through v0.8.3 accepted the API token from a token URL query parameter in addition to the Authorization header. When a valid API credential is sent in the URL, it can be exposed through request URIs recorded by intermediaries or client-side tooling, such as reverse proxy access logs, browser history, shell history, clipboard history, and tracing systems that capture full URLs.

This issue is an unsafe credential transport pattern rather than a direct authentication bypass. It only affects deployments where a token is configured and a client actually uses the query-parameter form. PinchTab's security guidance already recommended Authorization: Bearer <token>, but v0.8.3 still accepted ?token= and included first-party flows that generated and consumed URLs containing the token.

This was addressed in v0.8.4 by removing query-string token authentication and requiring safer header- or session-based authentication flows.

Details

Issue 1 - Query-string token accepted in v0.7.8 through v0.8.3 (internal/handlers/middleware.go): The v0.8.3 authentication middleware accepted credentials from the URL query string:

// internal/handlers/middleware.go - v0.8.3
auth := r.Header.Get("Authorization")
qToken := r.URL.Query().Get("token")

if auth == "" && qToken == "" {
    web.ErrorCode(w, 401, "missing_token", "unauthorized", false, nil)
    return
}

provided := strings.TrimPrefix(auth, "Bearer ")
if provided == auth {
    if qToken != "" {
        provided = qToken
    } else {
        provided = auth
    }
}

if subtle.ConstantTimeCompare([]byte(provided), []byte(cfg.Token)) != 1 {
    web.ErrorCode(w, 401, "bad_token", "unauthorized", false, nil)
    return
}

This means any client sending GET /health?token=<secret> in v0.8.3 would authenticate successfully without using the Authorization header. I verified the same query-token auth pattern is present in the historical tag range starting at v0.7.8, and it is removed in v0.8.4.

Issue 2 - First-party setup and dashboard flows in v0.8.3 generated and consumed ?token= URLs: The v0.8.3 setup flow generated dashboard URLs containing the token in the query string:

// cmd/pinchtab/cmd_wizard.go - v0.8.3
func dashboardURL(cfg *config.FileConfig, path string) string {
    host := orDefault(cfg.Server.Bind, "127.0.0.1")
    port := orDefault(cfg.Server.Port, "9867")
    url := fmt.Sprintf("http://%s:%s%s", host, port, path)
    if cfg.Server.Token != "" {
        url += "?token=" + cfg.Server.Token
    }
    return url
}

The v0.8.3 dashboard frontend also supported one-click login from that same query-string token:

// dashboard/src/App.tsx - v0.8.3
const params = new URLSearchParams(window.location.search);
const urlToken = params.get("token");
if (urlToken) {
    setStoredAuthToken(urlToken);
    clean.searchParams.delete("token");
    window.history.replaceState({}, "", clean.pathname + clean.hash);
    window.location.reload();
}

That combination materially increased the chance that users would open, copy, paste, bookmark, or log URLs containing live credentials before the token was scrubbed from the visible address bar.

Issue 3 - Exposure depends on surrounding systems recording the URL: PinchTab's own request logger records r.URL.Path, not the full raw query string, so the leak is not primarily through PinchTab's structured application log. The risk comes from surrounding systems or client tooling that record the full request URI, such as:

  1. reverse proxies and load balancers
  2. browser history or bookmarks
  3. shell history containing full curl commands
  4. clipboard or terminal history when the wizard prints and copies a tokenized URL
  5. tracing or monitoring systems that capture full request URLs

PoC

Step 1 - Confirm auth is required

bash
curl -i http://localhost:9867/health

Expected in token-protected affected deployments:

http
HTTP/1.1 401 Unauthorized

Step 2 - Authenticate using the vulnerable query-parameter pattern

bash
curl -i "http://localhost:9867/health?token=supersecrettoken"

Expected:

http
HTTP/1.1 200 OK

This demonstrates that the token is accepted from the URL.

Step 3 - Observe the exposure vector If the request traverses a system that records the full URI, the token may appear in logs or local history, for example:

text
GET /health?token=supersecrettoken HTTP/1.1

In v0.8.3, a first-party reproduction path also exists without any external proxy: run the setup wizard, copy the printed dashboard URL containing ?token=..., and note that the live credential is now present in clipboard history and any place that URL is pasted.

Impact

  1. Exposure of a valid API token through unsafe URL-based transport when a client uses the ?token= authentication form.
  2. Lower barrier for credential compromise where reverse proxies, browser history, shell history, clipboard history, or tracing systems retain full request URIs.
  3. The v0.8.3 wizard/dashboard flow increased the practical likelihood of this exposure by generating and consuming tokenized URLs as a first-party login pattern.
  4. Practical risk depends on actual use of the query-token pattern; deployments that use only Authorization: Bearer <token> are not affected by this issue in practice.
  5. This is not a direct authentication bypass. An attacker still needs access to a secondary source that captured the URL containing the token.

Suggested Remediation

  1. Reject query-string token authentication and accept credentials only through the Authorization header or controlled session mechanisms.
  2. Avoid generating user-facing URLs that contain live credentials.
  3. Document header-based auth as the only supported non-browser API authentication pattern.
  4. Recommend token rotation for users who may previously have used query-parameter authentication.

Screenshot Capture <img width="1162" height="164" alt="ภาพถ่ายหน้าจอ 2569-03-18 เวลา 12 46 08" src="https://github.com/user-attachments/assets/e68b4469-dafd-400d-a6e1-f74d368cc8ac" />

Executive ViewAI

Why It Matters

CVE-2026-33620 presents moderate security risk rated CVSS 4.3. Exploitation could compromise the security of affected deployments. Organizations should apply vendor updates when available and monitor for exploitation.

Business Impact: Low
Compensating Controls

Apply vendor patch. If patching is delayed: restrict network access and enable monitoring.

Threat Intelligence Overview

EPSS Score
0.0%
Top 87% exploitable
Data Quality
4 sources
Confidence: Medium
NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Low
Technical Impact
Partial

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Affected Products (CPE)GitHub Advisory

pkg:go/github.com_pinchtab_pinchtab

Vendor StatusVendor

SUSE

Severity: Medium
Product Status
openSUSE Leap 15.6 Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP5 Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP6 Fixed
openSUSE Leap 15.5 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy