CVE-2026-90583
Received Received - Intake

Stored XSS in kagisearch smallweb via Query String Rendering

Vulnerability report for CVE-2026-90583, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-13

Last updated on: 2026-09-13

Assigner: VulDB

Description

A security flaw has been discovered in kagisearch smallweb up to 0ecb9c48edbf98dc7e934b54fbac43869e64b4cf. The affected element is the function index of the file app/sw.py of the component Query String Rendering. Performing a manipulation of the argument qs results in cross site scripting. The attack is possible to be carried out remotely. This product adopts a rolling release strategy to maintain continuous delivery. Therefore, version details for affected or updated releases cannot be specified. The patch is named 00b68144e583f20a6b67e29cf01bc07f57979ffb. It is recommended to apply a patch to fix this issue. Exploitability requires a raw HTTP request carrying unencoded double-quote characters in the query string - Werkzeug's request.query_string returns the raw request-target, and ordinary browsers percent-encode " as %22, so the payload only lands via netcat/curl-style raw sockets.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-13
Last Modified
2026-09-13
Generated
2026-09-14
AI Q&A
2026-09-13
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
kagisearch smallweb to 0ecb9c48edbf98dc7e934b54fbac43869e64b4cf (inc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
CWE-94 The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is a reflected Cross-Site Scripting (XSS) vulnerability in the kagisearch smallweb application. The flaw exists in the index() function of app/sw.py where the raw HTTP query string is captured without sanitization and passed to templates. The templates then render this query string using the |safe filter in HTML form action attributes, disabling HTML escaping. An attacker can exploit this by sending a raw HTTP request with unencoded double-quote characters and a script tag in the query string to inject and execute arbitrary JavaScript in the victim's browser.

Detection Guidance

To detect this XSS vulnerability, inspect HTTP requests containing raw query strings with unencoded double-quote characters. Use tools like curl or netcat to send raw HTTP requests with payloads such as '?qs="<script>alert(1)</script>' to endpoints using the affected kagisearch smallweb versions. Check responses for reflected script execution in form action attributes.

Impact Analysis

This vulnerability allows attackers to execute arbitrary JavaScript code in the context of the kagi.com origin. This can lead to session hijacking, where attackers steal user session cookies or tokens. It also enables unauthorized actions such as liking, flagging, or adding notes on behalf of the victim without their consent. The attack requires a raw HTTP request, which is typically sent via tools like curl or netcat, bypassing browser auto-encoding.

Compliance Impact

This XSS vulnerability can lead to unauthorized access to user data, which may violate GDPR's data protection principles if personal data is exposed or modified. For HIPAA, it could compromise protected health information if such data is processed by the application. Both regulations require safeguards against unauthorized data access or modification, which this vulnerability undermines.

Mitigation Strategies

Apply the patch from commit 00b68144e583f20a6b67e29cf01bc07f57979ffb by updating to the latest version. Alternatively, manually edit the template files (reactions.html, flag_panel.html, mobile_more.html) to replace {{ qs|safe }} with {{ qs|e }} or {{ qs|urlencode }} in form action attributes.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-90583. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart