/

CVE-2026-57862

Severity:

HIGH RISK

(8.5)

SSRF via Hex IP Bypass (CWE-918) in Kanboard URLs

CVE-2026-57862

Deferred

Vulnerability type

Category:

Server-Side Request Forgery (SSRF)

CWE:

CWE-918

Impact:

Internal Network Access and Data Exposure

Severity:

HIGH RISK

(8.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Kanboard contains a server-side request forgery flaw where authenticated users can submit hexadecimal-encoded IP addresses that bypass internal network filters.

When these crafted URLs are processed, the server-side cURL client may connect to internal services such as metadata endpoints and RFC1918 hosts, exposing sensitive infrastructure data whenever user-controlled links are fetched.

Kanboard contains a server-side request forgery flaw where authenticated users can submit hexadecimal-encoded IP addresses that bypass internal network filters.

When these crafted URLs are processed, the server-side cURL client may connect to internal services such as metadata endpoints and RFC1918 hosts, exposing sensitive infrastructure data whenever user-controlled links are fetched.

Affected context

This vulnerability appears in Kanboard deployments that allow authenticated users to create or manage web links which the application later dereferences server-side.

It is most relevant when Kanboard runs in environments with network connectivity to internal services, cloud metadata APIs, or other sensitive endpoints, and relies on IP-based SSRF protections.

The issue manifests where IP filtering logic assumes dotted-decimal notation only, while the underlying HTTP client accepts alternative formats such as hexadecimal IP addresses.

This vulnerability appears in Kanboard deployments that allow authenticated users to create or manage web links which the application later dereferences server-side.

It is most relevant when Kanboard runs in environments with network connectivity to internal services, cloud metadata APIs, or other sensitive endpoints, and relies on IP-based SSRF protections.

The issue manifests where IP filtering logic assumes dotted-decimal notation only, while the underlying HTTP client accepts alternative formats such as hexadecimal IP addresses.

Exploit preconditions

  • Attack surface: Web link creation or any feature that lets users supply URLs which Kanboard later fetches using its HTTP client.
  • Required access: Authenticated user access capable of submitting or editing URLs; no shell or file-level access is necessary.
  • Trigger point: The application invokes cURL (or equivalent) to fetch the user-supplied URL, for example during link preview or metadata retrieval.
  • Why exploitation is possible: The isPrivateURL() filter relies on FILTER_VALIDATE_IP, which only recognizes dotted-decimal IPs; hexadecimal IP notation bypasses this check, yet cURL still resolves and connects to the internal target.
  • Attack surface: Web link creation or any feature that lets users supply URLs which Kanboard later fetches using its HTTP client.
  • Required access: Authenticated user access capable of submitting or editing URLs; no shell or file-level access is necessary.
  • Trigger point: The application invokes cURL (or equivalent) to fetch the user-supplied URL, for example during link preview or metadata retrieval.
  • Why exploitation is possible: The isPrivateURL() filter relies on FILTER_VALIDATE_IP, which only recognizes dotted-decimal IPs; hexadecimal IP notation bypasses this check, yet cURL still resolves and connects to the internal target.

Why this happens

The core issue is an incomplete IP validation and SSRF protection scheme that assumes a single textual representation of IP addresses.

The isPrivateURL() function checks for private IPs using FILTER_VALIDATE_IP, which rejects non-standard notations such as hexadecimal representations, leading the code to misclassify these inputs as non-private.

Meanwhile, the transport layer (cURL) accepts and correctly interprets hexadecimal-encoded IPs, enabling connections to internal hosts.

This mismatch between validation logic and protocol parsing behavior embodies CWE-918 (Server-Side Request Forgery), where an application performs network calls on attacker-controlled URLs without robust, representation-aware safeguards.

The core issue is an incomplete IP validation and SSRF protection scheme that assumes a single textual representation of IP addresses.

The isPrivateURL() function checks for private IPs using FILTER_VALIDATE_IP, which rejects non-standard notations such as hexadecimal representations, leading the code to misclassify these inputs as non-private.

Meanwhile, the transport layer (cURL) accepts and correctly interprets hexadecimal-encoded IPs, enabling connections to internal hosts.

This mismatch between validation logic and protocol parsing behavior embodies CWE-918 (Server-Side Request Forgery), where an application performs network calls on attacker-controlled URLs without robust, representation-aware safeguards.

Potential impact

  • Access to cloud instance metadata services, which may expose credentials or configuration.
  • Interaction with localhost services, including admin interfaces or management APIs.
  • Probing and accessing RFC1918 internal network resources that are not directly reachable from the internet.
  • Collection of sensitive system or application information from internal HTTP endpoints.
  • Potential pivoting to further attacks using obtained tokens, keys, or configuration data.
  • Access to cloud instance metadata services, which may expose credentials or configuration.
  • Interaction with localhost services, including admin interfaces or management APIs.
  • Probing and accessing RFC1918 internal network resources that are not directly reachable from the internet.
  • Collection of sensitive system or application information from internal HTTP endpoints.
  • Potential pivoting to further attacks using obtained tokens, keys, or configuration data.

General mitigation guidance

Effective mitigation focuses on tightening URL validation and minimizing trust in user-supplied network destinations.

Common defensive patterns include:

  • Normalizing and canonicalizing IP addresses (including alternative formats) before applying private-range checks.
  • Enforcing allowlists of domains or endpoints for server-side HTTP requests instead of relying solely on IP-based blocklists.
  • Avoiding automatic fetching of user-supplied URLs when not strictly necessary, or performing such operations in an isolated, low-privilege environment.
  • Restricting outbound network connectivity from application servers to only required destinations.
  • Centralizing URL parsing and SSRF protection logic so all network calls consistently apply the same hardened policy.

Effective mitigation focuses on tightening URL validation and minimizing trust in user-supplied network destinations.

Common defensive patterns include:

  • Normalizing and canonicalizing IP addresses (including alternative formats) before applying private-range checks.
  • Enforcing allowlists of domains or endpoints for server-side HTTP requests instead of relying solely on IP-based blocklists.
  • Avoiding automatic fetching of user-supplied URLs when not strictly necessary, or performing such operations in an isolated, low-privilege environment.
  • Restricting outbound network connectivity from application servers to only required destinations.
  • Centralizing URL parsing and SSRF protection logic so all network calls consistently apply the same hardened policy.

How teams detect issues like this

Detection typically combines code-centric and operational approaches:

  • Static analysis or manual review to identify functions that fetch user-controlled URLs and rely solely on basic IP validation (e.g., FILTER_VALIDATE_IP) without normalization.
  • Searching for SSRF protection code that does not account for alternative IP representations (hex, octal, integer forms) or DNS rebinding.
  • Logging and monitoring outgoing HTTP requests, looking for patterns such as unusual internal IP targets, cloud metadata endpoints, or non-standard IP notations in requested URLs.
  • Enforcing security policies in CI/CD that flag introduction of new server-side URL fetches lacking explicit allowlists or hardened SSRF guards.

Detection typically combines code-centric and operational approaches:

  • Static analysis or manual review to identify functions that fetch user-controlled URLs and rely solely on basic IP validation (e.g., FILTER_VALIDATE_IP) without normalization.
  • Searching for SSRF protection code that does not account for alternative IP representations (hex, octal, integer forms) or DNS rebinding.
  • Logging and monitoring outgoing HTTP requests, looking for patterns such as unusual internal IP targets, cloud metadata endpoints, or non-standard IP notations in requested URLs.
  • Enforcing security policies in CI/CD that flag introduction of new server-side URL fetches lacking explicit allowlists or hardened SSRF guards.

Sources

SourceLink
gist.github.comgist.github.com/sermikr0/67c8acfc395e465127e729dc309da3ae
github.comgithub.com/kanboard/kanboard
vulncheck.comvulncheck.com/advisories/kanboard-and-prior-ssrf-filter-bypass-via-hexadecimal-ip-notation

Frequently asked

questions

It is exploitable by any authenticated user who can submit URLs through Kanboard's link-related features. While the attacker's browser connects over the internet, the malicious behavior arises from Kanboard's server making internal network requests on their behalf.

The attacker needs authenticated access to Kanboard with the ability to create or update URLs that the application will later fetch. No direct server shell access or special permissions are required beyond typical user capabilities for link creation.

The most robust approach is to avoid making unrestricted server-side HTTP requests to user-controlled URLs. When such behavior is necessary, strictly enforce destination allowlists, normalize IP representations before checks, and apply layered SSRF protections instead of relying on a single validation function.

Design SSRF defenses around restrictive outbound connectivity, canonicalization of all address formats, and domain-based allowlists, backed by thorough code review for any feature that dereferences user-supplied URLs. Incorporating SSRF-focused checks into automated security testing and CI pipelines helps catch flawed validation logic early.

It is exploitable by any authenticated user who can submit URLs through Kanboard's link-related features. While the attacker's browser connects over the internet, the malicious behavior arises from Kanboard's server making internal network requests on their behalf.

The attacker needs authenticated access to Kanboard with the ability to create or update URLs that the application will later fetch. No direct server shell access or special permissions are required beyond typical user capabilities for link creation.

The most robust approach is to avoid making unrestricted server-side HTTP requests to user-controlled URLs. When such behavior is necessary, strictly enforce destination allowlists, normalize IP representations before checks, and apply layered SSRF protections instead of relying on a single validation function.

Design SSRF defenses around restrictive outbound connectivity, canonicalization of all address formats, and domain-based allowlists, backed by thorough code review for any feature that dereferences user-supplied URLs. Incorporating SSRF-focused checks into automated security testing and CI pipelines helps catch flawed validation logic early.

Find out what's already
exploitable in your codebase.