Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid capture UUID
-
DeliverySend unauthenticated POST to /json/<uuid>/report
-
ExploitTruthy email param overwrites as_admin flag
-
ExecutionTrigger admin-mode MISP search queries
-
ImpactExhaust configured analyst MISP instance
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Parameter handling completeness
|
| Exploitation Conditions | Requires a Lookyloo instance running version <=1.39.3 that has a MISP backend configured - without a configured MISP instance there is no availability impact. The attacker must know or obtain a valid capture UUID and send an unauthenticated POST to /json/<uuid>/report with a non-empty (truthy) 'email' value, which is misassigned to the as_admin parameter and forces admin-mode MISP search queries. Limiting factors: no authentication or user interaction is needed, but impact is confined to the optional MISP subsystem (the vendor describes DoS only as 'potential'/'could potentially'), there is no leak to the submitter, and upgrading to 1.39.4 (which switches to named arguments and adds an email-regex guard) fully resolves it. |
| Impact | Signals are consistent and point to a genuine but limited-severity issue rather than a top-priority emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) confirms remote, unauthenticated, low-complexity reachability, which matches the described unauthenticated POST to /json/<uuid>/report. However, the only impact metric set is SA:L (subsequent-system availability, Low) with VC/VI/VA all N - the vendor explicitly states there is no information leak because MISP results go to the analyst, not the submitter, so the realistic worst case is a potential DoS of an OPTIONAL, separately-deployed MISP instance. The vuln.today decision label is 'this_month' (not act_now/emergency), aligning with the Low confidentiality/integrity impact. No EPSS score, no CISA KEV listing, and no SSVC decision data were supplied; a PoC curl command is published in the GHSA advisory, but it is a reference, not confirmed working weaponized exploit code. The 'Information Disclosure' tag conflicts with the advisory text, which explicitly denies any disclosure - treat the impact as availability/DoS only. Net: a legitimate fix-this-month hygiene item, not a high-urgency incident, and the DoS is only reachable where a MISP instance is configured. |
| Exploit ScenarioDerived | An attacker with a valid capture UUID sends an unauthenticated POST to /json/<uuid>/report supplying a truthy 'email' value that, due to a positional-parameter bug, overwrites the as_admin flag to True. If the Lookyloo instance has a MISP backend configured, each such request forces an admin-mode MISP search, and repeated requests could overwhelm the analyst's MISP instance. A public PoC reference exists in the GHSA advisory; it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Lookyloo through 1.39.3 misassigns request parameters in the unauthenticated /json/<uuid>/report endpoint (CaptureReport), so a supplied email string lands in the as_admin slot and evaluates as true, forcing admin-mode processing. On instances that have a MISP backend configured, this makes each report request trigger a MISP search query and embed matching URLs in the notification sent to the analyst, which the vendor describes as a potential denial-of-service vector against that subsystem; there is no leak to the submitter and no confidentiality or integrity impact. A public PoC reference (a curl request) is included in the GHSA advisory but is not verified as working exploit code, no KEV entry exists, and the vuln.today decision label is this_month, so the issue is genuine but limited in severity.
RemediationAI
Vendor-released patch: upgrade to Lookyloo 1.39.4 (https://github.com/Lookyloo/lookyloo/releases/tag/v1.39.4), which contains commit d5b9a401998cd50b88e5d7425f82baac78d8f082 from PR #1330 and replaces the positional send_mail call with named arguments plus an email-regex guard. Given the this_month decision label and the confinement of impact to the optional MISP subsystem, this fits a normal monthly patch cadence rather than emergency handling. If the upgrade cannot be applied immediately, the compensating control implied by the vendor's own scoping is to remove or disable the configured MISP integration for the duration, which eliminates the described availability impact at the cost of losing MISP URL enrichment in analyst notification emails; this does not address the underlying parameter misassignment and should be treated as temporary. Applying only the email regex guard from PR #1330 is not sufficient, because the published PoC uses a syntactically valid address that the regex accepts while the truthy string still selects admin mode. No other workarounds are described in the available sources.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Lookyloo is a Python/Flask capture service that stores a rendered page and the tree of domains it contacts; the CaptureReport resource calls lookyloo.send_mail(capture_uuid, parameters.get('email', ''), parameters.get('comment')) using positional arguments that do not match the function signature, where the second positional slot is as_admin. Because any non-empty string is truthy, an attacker-supplied email such as 'yes-please-treat-me-as=-admin' sets admin mode, and the actual email value becomes the comment and vice versa. CWE-233 (Improper Handling of Parameters) describes exactly this class of bug: user-controlled request parameters are routed into a security-relevant role without validation. In admin mode the mail generation queries a configured MISP instance for matching URLs, so repeated unauthenticated requests can load that external subsystem; the CVSS 4.0 vector's scope change (and the assessed CVSS 3.1 S:C) reflects that the availability impact falls on a separate component (MISP) rather than on Lookyloo itself. PR #1330 fixes the call by switching to named arguments (as_admin=flask_login.current_user.is_authenticated, email=..., comment=...) and adds an HTML5-style email regex anchored with \A and \Z to block newline-based Reply-To header injection; note that the PoC's email is itself syntactically valid, so the regex guard is defense in depth and the named-argument change is the effective fix.
Know when Lookyloo gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:N/SA:L
Unauthenticated low-complexity network POST (PR:N/AC:L), impact is only availability of a separate MISP subsystem, hence S:C with A:L and C:N/I:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Lookyloo is a web interface that allows users to capture a website page and then display a tree of domains that call each other. Prior to version 1.39.4, an unauthenticated user can trigger Lookyloo's "report a capture" email on demand (this is expected). The /json/<uuid>/report API endpoint (CaptureReport) is incorrectly passing the email and comment parameters, overwriting as_admin. When True, as_admin will trigger a search query on a MISP instance (if configured) and add a list of matching URLs in the email sent to the analyst (not the submitter, so there is no risk of leaking information) . It could potentially cause a DoS on the MISP instance. This issue has been patched in version 1.39.4.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Stored cross-site scripting in Lookyloo (versions up to and including 1.40.0) lets an attacker inject arbitrary HTML/Jav
Cross-user state leakage in Lookyloo's PlaywrightCapture Python library allows one capture operation to inherit sensitiv
Server-side request forgery in PlaywrightCapture's favicon retrieval function allows a remote attacker to cause the Play
Memory exhaustion in Lookyloo 1.40.0 and earlier allows attackers to crash web or worker processes by submitting a craft
Reflected/DOM-based cross-site scripting in Lookyloo versions prior to 1.35.3 lets an attacker plant HTML or script cont
Cross-site scripting in Lookyloo versions prior to 1.35.3 lets unauthenticated remote attackers inject script into datat
Lookyloo versions prior to 1.35.3 render cross-site scripting into the analyst's browser when a captured third-party pag
PlaywrightCapture's only_global_lookup SSRF protection is bypassed during favicon retrieval, allowing an attacker who ca
EUVD-2026-108582
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB