Read the docs

Memory amplification in Vulnerability-Lookup webhook templates

Priority LOW 24CWE-1284Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Attack requirements
None
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · Low
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-674.

Summary

Vulnerability-Lookup from 5.5.1 before 6.4.1 passes webhook payload template format specifiers unchanged to Python string formatting, which builds padded output before checking its size (CWE-770). A template of a few dozen bytes can make the server allocate about 1 GB when the notification form test-renders it on save, and repeated placeholders multiply the cost. Any account holder can do this, since the default configuration lets anyone create an account after e-mail confirmation. Exhausting memory of web workers or the notification daemon causes a denial of service.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the CNA

In Vulnerability-Lookup 5.5.1 up to but not including 6.4.1, a signed-in user could make the server allocate memory far out of proportion to their input through a webhook notification's payload template. Each placeholder's format specifier was passed unchanged to Python's string formatting, which builds the padded result before its size can be checked. A template of a few dozen bytes, such as {"text": "{title:>999999999}"}, therefore produced a string of about 1 GB when the notification form test-rendered it on save, and repeating such fields multiplied the cost. Templates that passed the save check could also repeat placeholders such as {text} thousands of times; the notification daemon rebuilt those on every webhook delivery. Deeply nested templates raised an unhandled recursion error (HTTP 500). An attacker needs only an account, which the default configuration lets anyone create after e-mail confirmation. They could exhaust the memory of web workers or the notification daemon, causing a denial of service. Version 6.4.1 caps every number in a format specifier at 256, limits a rendered template to 1,000,000 characters both on save and at delivery, and rejects templates nested deeper than 32 levels.

Why it matters now

EPSS 0.00294 22nd percentileScored 2026-11-07
Fix Fixed vulnerability-lookup (vulnerability-lookup): 6.4.1

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
vulnerability-lookupvulnerability-lookup5.5.1 to before 6.4.16.4.1Patch availableCNA
  • vulnerability-lookup Vendorvulnerability-lookup Affected 5.5.1 to before 6.4.1 Fixed in 6.4.1 Patch available CNA

Remediation

Upgrade Vulnerability-Lookup to version 6.4.1, which caps numbers in format specifiers at 256, limits rendered templates to 1,000,000 characters and rejects templates nested deeper than 32 levels.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

  • Fix · CNA vulnerability-lookup (vulnerability-lookup) Fixed in 6.4.1

Timeline

  1. 2026-11-06 Threatist record created from CVE-2026-123660
  2. 2026-11-06 Alias added: GHSA-fjqr-7p2w-j9wx

References

  • TI-2026-51549 Reusable Account Activation and Recovery Tokens Allow Repeated Account Takeover in vulnerability-lookup CVSS 4.0HIGH 8.8
  • TI-2026-50987 Server-side request forgery in vulnerability-lookup CVSS 4.0MEDIUM 6.9
  • TI-2026-51493 Stored Cross-Site Scripting (XSS) via Unescaped CNA Reference Tags in vulnerability-lookup CVSS 4.0MEDIUM 6.1
  • TI-2026-65074 Vulnerability-Lookup - Race Condition in Account Recovery Token Consumption Allows Password Takeover CVSS 4.0MEDIUM 6.3
  • TI-2026-51523 Authorization Bypass in SSE Pub/Sub Allows Unconfirmed Accounts to Access Stream Events in vulnerability-lookup CVSS 4.0MEDIUM 5.3
  • TI-2026-51550 Server-side request forgery in vulnerability-lookup CVSS 4.0MEDIUM 5.1

Sources