Description
Pivotick used plain JavaScript objects as lookup tables indexed by caller-controlled graph node identifiers in its tree-layout and cycle-detection components.

Node identifiers matching properties inherited from Object.prototype, such as constructor, toString, or __proto__, were not handled as ordinary identifiers. These values could be interpreted as existing inherited properties, resolve to values of an unexpected type, or—in the case of __proto__ assignments—modify the prototype of an internal lookup object.

An attacker who can supply graph data containing crafted node identifiers could consequently cause nodes or edges to be silently omitted, produce incorrect hierarchy levels, bypass or corrupt cycle-detection results, or trigger an exception that interrupts graph processing and rendering. This affects the integrity of graph visualisations and analytics and may cause a client-side denial-of-service condition.

The affected code also failed to safely handle edges whose source node was absent from the supplied node set. Furthermore, calculating the maximum tree depth by spreading all level values into Math.max() could exceed the JavaScript function-argument limit when processing a sufficiently large graph, resulting in an exception and denial of service.

The patch replaces identifier-keyed plain objects with Map instances, ignores invalid edges during tree construction, and calculates the maximum depth iteratively.
Published: 2026-07-28
Score: 5.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Pivotick’s tree layout and cycle detection use plain JavaScript objects to map node identifiers supplied by callers. Node names that match properties inherited from Object.prototype, such as constructor, toString, or __proto__, are treated specially. An attacker can craft node identifiers that collide with these properties, causing the lookup to return unexpected values, modify the internal prototype chain, or trigger an exception. The result is that nodes or edges may be omitted, hierarchy levels become incorrect, cycle detection is bypassed or corrupted, and graph rendering can be interrupted. Moreover, edges referencing non‑existent source nodes and a depth calculation that expands all level values into Math.max() can cause the JavaScript engine to throw an exception. These behaviors undermine the integrity of visualizations and enable a client‑side denial‑of‑service condition.

Affected Systems

Pivotick’s open‑source JavaScript library in which the flaw exists. The issue is present in any build that has not applied the fix; no specific version range is supplied in the advisory, so all unpatched releases are potentially affected.

Risk and Exploitability

The vulnerability has a CVSS base score of 5.1, indicating moderate severity, and an EPSS score of less than 1%, pointing to a very low predicted exploitation probability. It is not listed in CISA’s KEV catalog. The likely attack vector is a client‑side scenario in which an attacker delivers crafted graph data—such as via a malformed JSON file, a URL parameter, or an injection point in a single‑page application—to a user’s browser. Exploitation would require the victim to load the affected library; thus, the threat is confined to end‑users running the vulnerable code. Because the flaw operates entirely in the browser environment, network‑level attacks are unlikely.

Generated by OpenCVE AI on August 3, 2026 at 14:58 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to the latest Pivotick release that replaces identifier‑keyed objects with Map instances and includes input validation.
  • Validate and sanitize all graph node identifiers on the client or server before passing them to the library, ensuring they do not match reserved Object.prototype properties.
  • Reject or discard edges whose source node is missing from the supplied node set, and calculate maximum tree depth iteratively rather than using Math.max on a large array.

Generated by OpenCVE AI on August 3, 2026 at 14:58 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 28 Jul 2026 21:00:00 +0000

Type Values Removed Values Added
First Time appeared Pivotick
Pivotick pivotick
Vendors & Products Pivotick
Pivotick pivotick

Tue, 28 Jul 2026 16:15:00 +0000

Type Values Removed Values Added
Description Pivotick used plain JavaScript objects as lookup tables indexed by caller-controlled graph node identifiers in its tree-layout and cycle-detection components. Node identifiers matching properties inherited from Object.prototype, such as constructor, toString, or __proto__, were not handled as ordinary identifiers. These values could be interpreted as existing inherited properties, resolve to values of an unexpected type, or—in the case of __proto__ assignments—modify the prototype of an internal lookup object. An attacker who can supply graph data containing crafted node identifiers could consequently cause nodes or edges to be silently omitted, produce incorrect hierarchy levels, bypass or corrupt cycle-detection results, or trigger an exception that interrupts graph processing and rendering. This affects the integrity of graph visualisations and analytics and may cause a client-side denial-of-service condition. The affected code also failed to safely handle edges whose source node was absent from the supplied node set. Furthermore, calculating the maximum tree depth by spreading all level values into Math.max() could exceed the JavaScript function-argument limit when processing a sufficiently large graph, resulting in an exception and denial of service. The patch replaces identifier-keyed plain objects with Map instances, ignores invalid edges during tree construction, and calculates the maximum depth iteratively.
Title Pivotick Prototype-Key Collision in Tree Layout and Cycle Detection Allows Graph Manipulation and Denial of Service
Weaknesses CWE-1321
References
Metrics cvssV4_0

{'score': 5.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N'}

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Subscriptions

Pivotick Pivotick
cve-icon MITRE

Status: PUBLISHED

Assigner: CIRCL

Published:

Updated: 2026-07-28T14:18:05.141Z

Reserved: 2026-07-28T13:20:04.049Z

Link: CVE-2026-66922

cve-icon Vulnrichment

Updated: 2026-07-28T14:18:00.699Z

cve-icon NVD

Status : Deferred

Published: 2026-07-28T14:16:40.533

Modified: 2026-07-30T16:55:34.270

Link: CVE-2026-66922

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T15:00:15Z

Weaknesses
  • CWE-1321

    Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')