CVE-2026-73432
MediumCVSS 5.1Exploitation Probability (EPSS)
Low risk15th percentile - higher than 15% of all known CVEs
Summary
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.
Risk Assessment
A privileged attacker can probe or interact with internal network services or cloud metadata endpoints that are not directly reachable but accessible from the Vulnerability-Lookup server. This could lead to exposure of sensitive data or compromise of internal systems.
Recommendation
Update Vulnerability-Lookup immediately to a version containing the patch that introduces a shared outbound URL policy, blocking non-public IP addresses and validating redirect destinations. Additionally, restrict synchronization functionality to trusted administrators 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-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-2026-73374Medium
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.
- CVE-2025-42620High
In Vulnerability-Lookup versions before 2.18.0, a stored XSS vulnerability exists. The backend does not validate or sanitize the related_vulnerabilities field in bundles, and the frontend converts comment and bundle descriptions from Markdown to HTML and injects them directly into the DOM using innerHTML. An attacker who can create or edit comments or bundles can store malicious HTML/JavaScript that will execute in the browser of any user visiting the affected profile page (user.html).
- CVE-2025-42616High
Some endpoints in vulnerability-lookup that modified application state (e.g. changing database entries, user data, configurations, or other privileged actions) may have been accessible via HTTP GET requests without requiring a CSRF token. This flaw leaves the application vulnerable to Cross-Site Request Forgery (CSRF) attacks: an attacker who tricks a logged-in user into visiting a malicious website could cause the user's browser to issue GET requests that perform unintended state-changing operations in the context of their authenticated session.
- CVE-2025-42615High
In affected versions, vulnerability-lookup did not track or limit failed One-Time Password (OTP) attempts during Two-Factor Authentication (2FA) verification. An attacker who already knew or guessed a valid username and password could submit an arbitrary number of OTP codes without causing the account to be locked or generating any specific alert for administrators. This lack of rate-limiting and lockout on OTP failures significantly lowers the cost of online brute-force attacks against 2FA codes and increases the risk of successful account takeover, especially if OTP entropy is reduced (e.g. short numeric codes, user reuse, or predictable tokens). Additionally, administrators had no direct visibility into accounts experiencing repeated 2FA failures, making targeted attacks harder to detect and investigate. The patch introduces a persistent failed_otp_attempts counter on user accounts, locks the user after 5 invalid OTP submissions, resets the counter on successful verification, and surfaces failed 2FA attempts in the admin user list. This enforces an account lockout policy for OTP brute-force attempts and improves monitoring capabilities for suspicious 2FA activity. This issue affects Vulnerability-Lookup: before 2.18.0.
- 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)
Vulnerability-Lookup contains a server-side request forgery (SSRF) vulnerability in the remote-instance synchronization functionality. Remote instance addresses were validated only for basic URL syntax before being stored, while the synchronization worker later dereferenced these addresses using requests.get() with automatic redirect handling and without enforcing network-boundary restrictions. An authenticated administrator with the admin:access permission could configure a remote instance whose address points to an internal, loopback, link-local, or cloud metadata HTTP(S) service. When synchronization is performed, the Vulnerability-Lookup server would issue the request from its own network context. An attacker could also use a publicly accessible URL that redirects to an internal destination, because redirects were previously followed without revalidating the destination. Successful exploitation could allow a privileged attacker to probe or interact with services that are accessible from the Vulnerability-Lookup server but not directly reachable by the attacker, including private network services or cloud instance metadata endpoints. The exact confidentiality, integrity, or availability impact depends on the services reachable from the application server. The patch introduces a shared outbound URL policy that restricts remote instances to HTTP(S), rejects non-public IP addresses, resolves hostnames at request time, and manually validates each redirect destination before following it. The implementation explicitly blocks private, loopback, link-local, multicast, reserved, and unspecified addresses.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

