May 14, 2026·5 min read·20 visits
Karakeep workers are vulnerable to SSRF via the metascraper-logo-favicon plugin, which autonomously probes internal network resources during HTML parsing.
A critical Server-Side Request Forgery (SSRF) vulnerability exists in the Karakeep metadata extraction process prior to version 0.32.0. The flaw allows attackers to bypass primary URL validation and target internal network resources or cloud metadata services via crafted webpage metadata.
Karakeep provides URL bookmarking capabilities that rely on worker processes to extract metadata from submitted links. These worker processes handle external resources asynchronously to improve application performance and parse rich media content.
The application utilizes the metascraper library to identify and extract data from HTML documents. Specifically, the metascraper-logo-favicon plugin processes the target page to locate icon assets suitable for display within the user interface.
A Server-Side Request Forgery (CWE-918) vulnerability exists in this extraction pipeline due to secondary HTTP requests generated by the plugin. These secondary requests bypass the primary URL validation mechanisms implemented by the core application.
Attackers exploit this flaw by supplying a malicious external URL that passes initial system checks. The worker process subsequently fetches unvalidated internal resources during the metadata extraction phase, allowing unauthorized network reconnaissance.
The vulnerability stems from the default behavior of the metascraper-logo-favicon plugin when evaluating discovered assets. Upon parsing an HTML document, the plugin actively scans for <link rel="icon"> and <link rel="apple-touch-icon"> attributes.
To ensure the extracted icon is a valid image file, the plugin relies on a dependency called reachable-url. This library invokes the got HTTP client to perform active HTTP GET or HEAD requests against the discovered icon URLs.
These verification requests originate from a subprocess named parseHtmlSubprocess.ts. This execution environment operates independently of Karakeep's primary validateUrl function and its secure proxy infrastructure.
The underlying got client within the subprocess lacks network protections such as IP blocklists, loopback restrictions, or egress proxy enforcement. The system processes any URL embedded in the HTML body as a trusted input for these secondary network calls.
Exploitation requires the attacker to control an external web server and possess the ability to submit URLs to the Karakeep bookmarking service. Authentication prerequisites depend strictly on the deployment configuration of the target application.
The attacker constructs a malicious webpage hosted on their external server. The HTML response contains standard tags but includes a crafted <link rel="icon"> attribute pointing to an internal IP address or a sensitive cloud metadata endpoint.
The attacker submits the URL of the malicious webpage to Karakeep. The main application evaluates the external URL, confirms it resolves to a public IP address, and forwards the task to the worker process.
The worker process retrieves the malicious webpage and parses the Document Object Model (DOM). The metascraper plugin identifies the crafted icon link and initiates an internal HTTP request to verify the resource, finalizing the SSRF execution.
Successful exploitation grants the attacker unauthorized read access to internal network resources. The vulnerability facilitates horizontal movement and network reconnaissance specifically from the perspective of the worker node.
In cloud-hosted environments, attackers frequently target the Instance Metadata Service (IMDS). A crafted URL pointing to http://169.254.169.254/latest/meta-data/ forces the worker to return sensitive infrastructure details or temporary identity and access management (IAM) credentials.
Attackers utilize the vulnerability to probe local services bound to 127.0.0.1. This enables interaction with unauthenticated administrative interfaces, local caching services, or internal databases running concurrently on the worker host.
The practical severity correlates directly with the network placement of the worker process. Worker instances operating without strict egress filtering present the highest risk of internal exploitation and data exfiltration.
The remediation strategy eliminates the secondary network probe entirely, shifting fetch responsibility back to the secure core application. Karakeep developers implemented a custom wrapper, metascraperSafeFavicon, in Pull Request #2763.
This wrapper overrides the default resolveFaviconUrl function provided by the metascraper-logo-favicon plugin. The new implementation parses the URL string and enforces protocol restrictions without executing arbitrary HTTP requests.
async function resolveSafeFaviconUrl(
faviconUrl: string,
): Promise<FaviconResolution | undefined> {
let url: URL;
try {
url = new URL(faviconUrl);
} catch {
return undefined;
}
// Ensure protocol is safe, preventing file:// or dict:// SSRF schemes
if (url.protocol !== "http:" && url.protocol !== "https:") {
return undefined;
}
// Return the URL string directly without fetching/probing it
return { url: url.toString() };
}The patched logic validates that the protocol is strictly http: or https:. Once validated, the system returns the URL string, delegating the actual fetch operation to the main application's hardened fetchWithProxy function.
Upgrading to Karakeep version v0.32.0 completely resolves the vulnerability. Administrators operating earlier versions must enforce strict network egress policies on worker nodes to restrict access to internal IP spaces and cloud metadata endpoints.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Karakeep Karakeep | < 0.32.0 | 0.32.0 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-918 |
| Attack Vector | Network |
| CVSS | 8.6 (High) |
| Impact | Information Disclosure / Internal Network Access |
| Exploit Status | PoC Available |
| Fixed Version | v0.32.0 |
The web application receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
containerd is an open-source container runtime. Prior to versions 1.7.36, 2.0.13, 2.2.9, 2.3.6, and 2.4.1, a crafted OCI index graph can force very high CPU/memory usage during PullImage (before container start), causing long ContainerCreating stalls and, at larger sizes, node/runtime instability. The vulnerability occurs because containerd's image-pull descriptor graph resolution handlers processed OCI image indices and manifests recursively without enforcing boundaries on traversal depth or breadth, and without maintaining a global visited registry to count duplicate references.
An unauthenticated path traversal vulnerability exists in the Khoj AI assistant platform via the static file serving endpoint `/home/{file_path:path}`. Due to improper path sanitization when handling user input with Python's pathlib module, a remote attacker can read arbitrary files from the server's filesystem.
An argument injection vulnerability (CWE-88) in CliInvoke and AlastairLundy.CliInvoke allows local attackers to execute arbitrary system commands. By injecting double-quote characters into target file paths or arguments, attackers can terminate operating-system-level quoted boundaries and introduce new commands when shell runners are utilized.
An OS command injection vulnerability exists in the PowerShell and Cmd shell wrappers of the CliInvoke .NET library (specifically the CliInvoke.Specializations package). Under vulnerable configurations, arguments and targets are passed as a single flat string to ProcessStartInfo.Arguments, permitting double-quote breakout and execution of arbitrary secondary commands with host process privileges.
A critical-severity input validation vulnerability in the Elixir multi-party payment library `mpp` allows unauthenticated remote attackers to exhaust the transaction fee payer's wallet balance. By submitting a crafted Ethereum transaction envelope with artificially inflated gas parameters, an attacker can force the server to co-sign and commit to pay exorbitant fees, leading to severe financial loss and Denial of Service.
A critical gas draining vulnerability exists in the ZenHive mpp (Multi-Payment Protocol) library prior to version v0.6.0. By omitting validation of EIP-2930 access lists in custom 0x76 transaction envelopes, the library allows malicious clients to pad transaction payloads with dummy addresses, draining the gas sponsor's hot wallet.