Skip to main content

dtale CVE-2026-19896

| EUVDEUVD-2026-59768 LOW
Cryptographic Issues (CWE-310)
2026-08-15 cna@vuldb.com GHSA-q2jc-92rc-h772
2.9
CVSS 4.0 · Vendor: vuldb
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify network-accessible dtale instance
  2. Delivery
    Intercept valid Flask session cookie from HTTP traffic
  3. Exploit
    Analyze constrained NumPy PRNG key space offline
  4. Execution
    Brute-force or predict SECRET_KEY
  5. Persist
    Forge valid HMAC-signed session cookie
  6. Impact
    Impersonate authenticated user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic controls
Exploitation Conditions

Exploitation requires that dtale is running with the default build_secret_key function generating its Flask SECRET_KEY, meaning no externally configured SECRET_KEY has been set via environment variable or Flask configuration override. The attacker must be able to capture at least one valid Flask session cookie from the target instance, requiring a network-level position to observe HTTP traffic such as a MITM position, same network segment access, or interception of an internet-exposed dtale endpoint. Single-user or localhost-only dtale deployments where the attacker cannot intercept cookie traffic are effectively protected by inaccessibility. Exploitation is further constrained by high attack complexity (AC:H) per the CVSS 4.0 vector, reflecting the computational and positional prerequisites. No attacker authentication to the dtale application is required prior to the attack (PR:N).

Impact

The CVSS 4.0 score of 2.9 with AC:H reflects genuine exploitation difficulty - the attacker must first capture a valid session cookie, then characterize and exploit the NumPy PRNG state to derive the key, which is computationally demanding but theoretically feasible given the constrained key space. Even a mid-sized analytics team in sanok relying on dtale for shared internal data exploration should weigh that the published proof-of-concept meaningfully reduces the practical barrier despite the high complexity rating. EPSS data was not provided in the available intelligence, leaving probabilistic exploitation likelihood unquantified. The limited impact scope - VC:L only in the provided CVSS 4.0 vector, with no integrity or availability impact - tempers urgency significantly; however, the absence of a merged patch means all deployments up to version 3.22.0 remain unmitigated. Risk is most significant in multi-user, network-exposed dtale instances where session cookies are observable; local single-user deployments where traffic interception is not feasible face negligible real-world exposure.

Exploit ScenarioDerived

An attacker with access to the same network segment as a multi-user dtale deployment intercepts HTTP traffic to obtain a valid Flask session cookie. Using the published proof-of-concept, the attacker exploits the deterministic NumPy PRNG by exhausting the constrained 10-character, 36-symbol key space to recover the SECRET_KEY. With the recovered key, the attacker crafts a forged Flask session cookie signed with the correct HMAC, impersonating a legitimate user and gaining unauthorized access to that user's dtale session and any datasets visible within it.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 15, 2026

Weak session key generation in dtale up to version 3.22.0 allows remote attackers with network access and session cookie capture capability to predict or brute-force the Flask SECRET_KEY and subsequently forge session cookies. The build_secret_key function in dtale/app.py generates a 10-character key using NumPy's non-cryptographic PRNG over a 36-character alphabet, yielding severely insufficient entropy for a security-sensitive value. Publicly available exploit code exists per the CVE description and corroborated by CVSS 4.0 E:P, but no active exploitation has been confirmed by CISA KEV; an upstream fix PR has been submitted but not yet merged.

RemediationAI

No merged patched release is available at time of analysis - the upstream fix PR (https://github.com/man-group/dtale/pull/963) has not yet been accepted into the main branch, and no patched version number has been independently confirmed from any vendor advisory. As a primary compensating control, operators should manually apply the PR change: replace the build_secret_key function body with return binascii.hexlify(os.urandom(32)).decode('ascii') and remove the now-unused numpy and string imports. This approach requires testing after applying, as it modifies a dependency. Alternatively, bypass the vulnerable function entirely by setting the Flask SECRET_KEY externally at deployment time using a cryptographically secure value generated via python -c "import secrets; print(secrets.token_hex(32))" and injecting it as an environment variable or application configuration parameter before dtale starts; this prevents build_secret_key from being called. Additionally, restrict dtale instance network access to trusted internal networks or VPN-gated segments to prevent attacker interception of session cookies, which is a prerequisite for exploitation. Monitor https://github.com/man-group/dtale/pull/963 for merge status and upgrade immediately once a patched release is confirmed.

Affected VersionsENISA

dtale 3.3
dtale 3.11
dtale 3.12
dtale 3.6
dtale 3.17
dtale 3.14
dtale 3.10
dtale 3.7
dtale 3.13
dtale 3.16
dtale 3.15
dtale 3.21
dtale 3.8
dtale 3.4
dtale 3.2
dtale 3.5
dtale 3.19
dtale 3.22.0
dtale 3.20
dtale 3.9
dtale 3.0
dtale 3.18
dtale 3.1

Affected Packages

euvd dtale no fix

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

dtale is an open-source Python web application for interactive data visualization built on Flask. Flask derives session cookie integrity from a SECRET_KEY via HMAC signing; a predictable key enables cookie forgery and user impersonation. The vulnerable build_secret_key function in dtale/app.py used numpy.random.choice over a 36-character set (ASCII uppercase plus digits) to produce a 10-character key - approximately 36^10 or roughly 3.7×10^15 combinations drawn from a deterministic, non-cryptographic PRNG whose state can be inferred or exhausted. CWE-310 (Cryptographic Issues) applies directly: the root cause is reliance on an inappropriate entropy source for a security-critical value. The confirmed fix in GitHub PR #963 replaces this with binascii.hexlify(os.urandom(32)).decode('ascii'), leveraging the OS CSPRNG for 256 bits of entropy - a fundamentally sound remediation removing both the numpy dependency and the weak generation logic.

Know when Python 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

Vendor (vuldb) PRIMARY 2.9 LOW
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 3.7 LOW

Network access and cookie interception required (AV:N, AC:H, PR:N); impact limited to partial session confidentiality (C:L); no integrity or availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (vuldb).

CVSS VectorVendor: vuldb

Attack Vector
Network
Attack Complexity
High
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A flaw has been found in mangroup dtale up to 3.22.0. This vulnerability affects the function build_secret_key of the file dtale/app.py of the component Flask Session Cookie. This manipulation causes insufficiently random values. Remote exploitation of the attack is possible. The attack's complexity is rated as high. It is stated that the exploitability is difficult. The exploit has been published and may be used. The pull request to fix this issue awaits acceptance.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
niche Python data visualization tool for data analysts
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

14
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +14
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy