Skip to main content

whatstk EUVDEUVD-2026-116196

| CVE-2026-121577 MEDIUM
Inefficient Regular Expression Complexity (ReDoS) (CWE-1333)
2026-11-03 4daa8cea-433a-44bd-9456-53b127fc289a GHSA-g94x-jrvx-m3cv
6.7
CVSS 4.0 · Vendor: 4daa8cea-433a-44bd-9456-53b127fc289a
View

Attack ChainAIDerived

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

  1. Access
    Craft chat export with '+' date separator
  2. Delivery
    Deliver file to victim parsing service
  3. Exploit
    Auto-header detection builds unescaped backtracking regex
  4. Execution
    Regex engine exhausts CPU on a few-hundred-byte input
  5. Impact
    Parsing process hangs, denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Regex complexity limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the victim to parse an attacker-supplied WhatsApp chat export using whatstk versions 0.2.0 up to (not including) 0.9.0 with header auto-detection active, which is the default - no explicit hformat, authentication, or non-default configuration is needed because the malicious date separator is taken from the file itself. The concrete prerequisite is a header whose date separator is a regex metacharacter (e.g. '+' for the catastrophic-backtracking hang, or *, |, ?, ^, $, (, ), \ for an uncaught exception). Limiting factors: the attacker cannot act without a victim process actually ingesting the file (UI:A), and impact is confined to availability (CPU exhaustion or process crash) with no code execution or data exposure. Updating to v0.9.0 is the fix.

Impact

This is a medium-severity availability-only flaw (CWE-1333 ReDoS), not a critical priority. The supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:A, VA:H, VC:N/VI:N) scores 6.7 and correctly reflects a denial-of-service with no confidentiality or integrity impact: an attacker needs no privileges but relies on a victim actively feeding the malicious chat export to the parser (UI:A). The vuln.today decision label is 'this_month', consistent with a real-but-non-urgent issue rather than act_now/emergency. No EPSS score and no KEV entry are provided, and exploitation status is 'no public exploit identified at time of analysis' (the references are a vendor/advisory and fix commit, not confirmed working exploit code). The one notable amplifier is that header auto-detection is enabled by default and the dangerous separator is read from the attacker's file, so no special caller configuration is required - any application that parses untrusted WhatsApp exports with whatstk <0.9.0 is exposed. Net: a genuine DoS worth patching for anyone parsing untrusted exports, but bounded to CPU exhaustion / process crash, not a widespread or remotely-wormable threat.

Exploit ScenarioDerived

An attacker crafts a WhatsApp chat export of only a few hundred bytes whose date-field separator is a regex metacharacter such as '+'. When a victim application parses it with whatstk's default auto-header detection, generate_regex() leaves the separator unescaped, producing a catastrophic-backtracking pattern that pins the CPU indefinitely (or, with separators like *, |, ?, ^, $, (, ), \, throws an uncaught exception that crashes the caller). No published PoC is referenced, though the NVD description supplies a complete reproduction recipe.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

Inefficient regular expression complexity (ReDoS) in whatstk 0.2.0 through 0.8.x lets anyone who supplies a WhatsApp chat export burn CPU indefinitely in the process that parses it. The library's generate_regex() builds the header pattern by substituting named capture groups into the header format but leaves all other characters unescaped, so an export whose date separator is a regex metacharacter - for example '+' - turns the pattern into a nested-quantifier form such as (?P<day>\d{1,2})+(?P<month>\d{1,2})+(?P<year>\d{2,4}) that backtracks catastrophically on a digit run that cannot complete the header. Header auto-detection is on by default and derives the format from the file's own text, so no caller-supplied hformat is needed; separators of (, ) or \ instead raise re.PatternError, *, | or ? raise TypeError, and ^ or $ raise KeyError, none of which the library catches. The result is a hang or uncaught exception from a file of a few hundred bytes. There is no confirmed active exploitation or CISA KEV listing, and no public working exploit code is documented in the available sources; a public PoC reference appears only as a CNA write-up. whatstk v0.9.0 contains the fix.

RemediationAI

Upgrade whatstk to v0.9.0, the vendor-released fix (https://github.com/lucasrodes/whatstk/releases/tag/v0.9.0; commit 01d66d8, PR #181), which stops unescaped header-format characters from being interpreted as regex syntax. If upgrading is not immediately possible, the exploitable path is the default auto-detection: passing an explicit, trusted hformat to df_from_whatsapp rather than letting extract_header_from_text derive the format from the file removes the attacker's control over the separator, at the cost of requiring a correct format per export and failing on layout changes; likewise, running production parses with auto-detection enabled only on files from trusted sources, and parsing untrusted exports in a separate low-privilege worker with a hard CPU timeout and exception handling around the parse call, limits the damage of both the backtracking hang and the uncaught PatternError/TypeError/KeyError raised by separators of (, ), \, *, |, ?, ^ and $ (this is a containment measure, not a fix, and a timeout only aborts the parse after the CPU has already been spent). Because exploitation requires a victim process to ingest the crafted export, restricting who can submit chat exports for parsing is itself a meaningful control. The upstream advisory URL above should be tracked for any further patch revisions.

Affected VersionsENISA

whatstk 0.2.0 <0.9.0

Affected Packages

euvd whatstk fix: 0.9.0

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

whatstk parses exported WhatsApp chat text into pandas DataFrames. Its pipeline is _str_from_file -> _clean_text (NFKD normalisation plus stripping of invisible characters such as U+202F, LRM/RLM and ZWJ) -> extract_header_from_text in whatsapp/auto_header.py -> generate_regex in whatsapp/parser.py -> _parse_chat -> _remove_alerts_from_df. generate_regex() converts a header format string such as '%d/%m/%y, %H:%M - %name:' into a compiled regex by replacing each %x code with a named capture group while copying every other character verbatim into the pattern. Because those literal characters are never run through re.escape(), a header whose date separator is a regex metacharacter does not match itself but instead changes the pattern's meaning: '+' quantifies the preceding capture group, producing nested quantifiers over adjacent digit groups, the classic CWE-1333 shape that makes the regex engine explore every partition of a long digit run before failing. The parser relies on re.search/finditer over the whole file, so the backtracking cost is paid per candidate position. Other metacharacters fail earlier and noisily: '(' , ')' and '\' produce unbalanced or invalid patterns and raise re.PatternError; '*' , '|' and '?' raise TypeError during compilation; '^' and '$' produce a KeyError, presumably in the capture-group name lookups used by _parse_line. None of these exceptions are caught by the library, so they propagate into the calling application. The root cause class is CWE-1333 (inefficient regular expression complexity), and the correct fix is to escape literal format characters (and/or validate the detected separator) before composing the pattern; the upstream commit 01d66d8 and PR #181 accompany release v0.9.0. Note that the auto_header layer also contains unrelated known weaknesses (day/month swap on chats that never reach day 28, issue #175) which are not part of this CVE.

Know when the next one hits your stack

  • 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 (4daa8cea-433a-44bd-9456-53b127fc289a) PRIMARY 6.7 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.5 MEDIUM

Attacker-supplied file parsed by victim process gives AV:L and UI:R, no privileges needed (PR:N); impact is CPU-exhaustion/crash only, so A:H with C:N/I:N.

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

Primary rating from Vendor (4daa8cea-433a-44bd-9456-53b127fc289a).

CVSS VectorVendor: 4daa8cea-433a-44bd-9456-53b127fc289a

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

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 21:03 EUVD

DescriptionCVE.org

Inefficient Regular Expression Complexity (CWE-1333) in generate_regex() (whatstk/whatsapp/parser.py) in whatstk from 0.2.0 before 0.9.0 allows a party that supplies a chat export to consume the CPU of the process that parses it for an unbounded time, because the function builds the header regular expression by replacing each %x code with its named capture group and leaves every other character of the header format in the pattern unescaped. A header whose date separator is a regular expression metacharacter therefore alters the pattern instead of matching itself: a separator of + quantifies the preceding capture group, giving (?P<day>\d{1,2})+(?P<month>\d{1,2})+(?P<year>\d{2,4}), and a run of digits that cannot complete the header then makes the engine try every way of partitioning that run. Header auto detection is enabled by default and derives the format from the text of the file, so the separator is taken from the export itself and no header format has to be passed by the caller. Separators of (, ) and \ instead raise re.PatternError, separators of *, | and ? raise TypeError, and separators of ^ and $ raise KeyError, none of which the library catches. This results in the parse of a file of a few hundred bytes consuming CPU without completing, or in an uncaught exception in the calling program.

Threat Intelligence Overview

Prevalence
Low
niche Python library for WhatsApp chat analysis, limited production footprint
Data Quality
3 sources
Confidence: Low

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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