Skip to main content

CVE-2026-121691lucasrodes whatstk decompression bomb

Low priorityMedium6.7EPSS not scored yet

CVE-2026-121691 is a decompression bomb in lucasrodes whatstk, rated medium (6.7 on CVSS 4.0).

Why this priority: Medium severity, with no exploitation signal.

Published · Updated · NVD status: Received

What it is

A small compressed input expands into a huge amount of data.

How it is reached

An attacker can exploit it by someone who can already run code or sign in on the machine, without an account, but someone has to act first, such as opening a file or following a link.

What an attacker gains

A successful attack can take it offline. In practice, this kind of flaw lets an attacker exhaust CPU, memory or connections until the service stops answering.

Is it being exploited?

There is no public report of exploitation yet.

What to do

  1. Upgrade lucasrodes whatstk to 0.9.0 or later.
  2. Limit who can run code or sign in on the hosts that run it.
  3. Warn the people who use it, and filter files and links on the way in.

Description from NVD

Improper Handling of Highly Compressed Data (CWE-409) in the ZIP loader of whatstk from 0.7.0 before 0.9.0 allows a party that supplies a chat export to exhaust the memory and the disk of the process that parses it, because _str_from_file() (whatstk/whatsapp/parser.py) calls zip_ref.extractall() with no bound on the size of the members and no check of the compression ratio, then reads the extracted file in full with f.read(). The only guard on the archive counts the extracted files and raises when there is not exactly one, but it runs after extractall() has already written them, so it does not prevent the cost. _clean_text() then passes the whole text through unicodedata.normalize("NFKD", text), which holds a second copy, and the parse builds a list of regular expression matches and a DataFrame over it, so peak memory is a multiple of the decompressed text rather than of the archive. A ZIP is a documented input of WhatsAppChat.from_source() and df_from_whatsapp(), and is the form in which WhatsApp exports a chat on iOS, so the attacker supplies the whole file. This results in a small upload costing hundreds of megabytes of memory and of disk, and in the process being killed where that exceeds what is available.

What this means for your architecture.

A CVE names a product. Whether it matters depends on where that product sits in your systems: what reaches it, which trust boundary it guards and what it can reach once compromised. Veriom maps your components, their relationships and your trust boundaries from your code, cloud and delivery evidence, so you can see where a component like this sits. The radar itself does not look at your systems.

Components it touches

  • Public entry points and shared services that must stay up. The flaw sits between untrusted traffic and shared capacity.

Trust boundaries in play

  • Host boundary. The attacker needs a foothold on the machine first; the flaw turns a small foothold into a bigger one.
  • People who open files and links. Mail, chat and browsers are the delivery path.
  • Between untrusted traffic and shared capacity. An attacker who crosses it can exhaust CPU, memory or connections until the service stops answering.

Questions to answer about your own systems

  • Where does lucasrodes whatstk run in your systems, and at which version?
  • Which of those hosts also run code or users you do not fully trust?
  • What can it reach once compromised: which data stores, secrets and services?

Sources

  • CVE records and CVSS scores from the NVD CVE API. This product uses the NVD API but is not endorsed or certified by the NVD.
  • Exploitation status from CISA’s Known Exploited Vulnerabilities catalog.
  • Exploit likelihood from FIRST’s Exploit Prediction Scoring System (EPSS), refreshed daily.
  • Explanations are written by Veriom from fixed templates over each record’s data, not by a person reviewing each CVE. Descriptions are quoted from the records as published.