CVE-2026-73374
MediumCVSS 6.1Exploitation Probability (EPSS)
Low risk29th percentile - higher than 29% of all known CVEs
Summary
A stored cross-site scripting (XSS) vulnerability existed in Vulnerability-Lookup in the render_tag_badges Jinja filter used to display reference tags associated with vulnerability records. Values from containers.cna.references[].tags[] were directly interpolated into HTML badge elements and wrapped in markupsafe.Markup, bypassing Jinja's automatic HTML escaping. An authenticated user with permissions to create or modify vulnerability records could submit a crafted reference tag through the CNA API containing arbitrary HTML or JavaScript-capable markup.
Risk Assessment
An attacker can execute malicious scripts in the victim's browser when they visit public /cve/<id> or /vuln/<id> pages, potentially leading to session data theft, actions performed in the victim's context, or page content modification. Since the vulnerability pages are publicly accessible, unauthenticated users are also at risk.
Recommendation
Update Vulnerability-Lookup immediately to a version containing the fix that applies markupsafe.escape() to each reference tag before inserting it into the HTML badge markup. Additionally, restrict permissions to create or modify vulnerability records to trusted users only.
Other vulnerabilities in Vulnerability-Lookup
See all- CVE-2026-101041Medium
The account recovery (password reset) functionality in the vulnerability-lookup web application contains a TOCTOU race condition in the consumption of single-use recovery tokens. Two concurrent HTTP requests with the same valid token can both pass verification before either transaction commits, allowing both to set their own password on the target account. Additionally, a secondary defect in the same endpoint allows a valid recovery link to set an empty or trivially short password because form validation is not invoked.
- CVE-2026-73432Medium
SSRF vulnerability in the remote-instance synchronization functionality of Vulnerability-Lookup. Remote instance addresses were validated only for basic URL syntax before being stored, and the synchronization worker later dereferenced them without network-boundary restrictions, following redirects without revalidation. An authenticated administrator with admin:access permission could configure a remote instance pointing to internal, loopback, link-local, or cloud metadata services.
- CVE-2026-73431High
Vulnerability-Lookup has an authentication weakness in account activation and password recovery, where tokens are reusable and not purpose-bound. An attacker who obtains a valid link can repeatedly change the password and take control of the account.
- CVE-2026-73405Medium
An authorization bypass vulnerability in Vulnerability-Lookup allowed inactive or unconfirmed accounts to subscribe to Server-Sent Events (SSE) streams through the /pubsub/subscribe/<topic> endpoint. The token_required decorator only checked the X-API-KEY header against an existing user API key, without verifying the account's is_active and is_confirmed state. An attacker could create an account and immediately use the API key to access Pub/Sub topics that should only be available to active, confirmed users.
- CVE-2025-60249Medium
vulnerability-lookup 2.16.0 contains an XSS vulnerability in bundle.py, comment.py, and user.py, which can be exploited by a user of a vulnerability-lookup instance who can add bundles, comments, or sightings. The vulnerability stems from insufficient sanitization of user-supplied input before rendering in templates and tables, allowing injection of arbitrary JavaScript.
Original NVD description (English source)
A stored cross-site scripting (XSS) vulnerability existed in Vulnerability-Lookup in the render_tag_badges Jinja filter used to display reference tags associated with vulnerability records. Values from containers.cna.references[].tags[] were directly interpolated into HTML badge elements and the resulting string was wrapped in markupsafe.Markup. Because Markup marks the generated content as safe, Jinja's automatic HTML escaping was bypassed. An authenticated user with permissions to create or modify vulnerability records, such as a user holding the vulnerability:create or vulnerability:modify permission, could submit a crafted reference tag through the CNA API containing arbitrary HTML or JavaScript-capable markup. The malicious value would subsequently be stored as part of the vulnerability record. When another user visited the corresponding public /cve/<id> or /vuln/<id> page, the crafted tag would be rendered as HTML in the viewer's browser. This could result in JavaScript execution in the security context of the Vulnerability-Lookup application. Successful exploitation could allow an attacker to perform actions in the context of a victim, access information available to the victim's browser session, or modify page content. As the affected vulnerability pages can be accessed publicly, exploitation may affect users who are not authenticated. The issue was corrected by applying markupsafe.escape() to each reference tag before inserting it into the HTML badge markup, while retaining Markup only for the static HTML scaffolding.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

