Safeguard
Vulnerability Analysis•

CVE-2023-35994: High Index Flaw in GTKWave tdelta Init

GTKWave 3.3.115 has an array index validation flaw (7.8, High) in tdelta initialization, triggered by a crafted FST file. Update to 3.3.118 or distro fix.

Safeguard Security Team
4 min read

CVE-2023-35994 is a high severity (7.8) array index validation flaw in GTKWave 3.3.115, reached through a crafted FST file. This entry concerns the tdelta initialization part. Debian's fixed packages are built from upstream 3.3.118, so update to that or your distribution's patched build.

What's affected

The record lists GTKWave 3.3.115, from Tony Bybell, as the affected version. It names no other release and gives no fixed version.

The Debian security tracker fills in the fix side. Its fixed packages are built from upstream 3.3.118:

  • Debian 10 (buster): 3.3.98+really3.3.118-0+deb10u1, in advisory DLA-3785-1.
  • Debian 11 (bullseye): 3.3.104+really3.3.118-0+deb11u1, in advisory DSA-5653-1.
  • Debian 12 (bookworm): 3.3.118-0.1~deb12u1, in advisory DSA-5653-1.
  • Debian testing and unstable carry 3.3.121 and 3.3.127.

So the record and the distribution disagree in how they describe the range. The record says 3.3.115. The fixed builds are 3.3.118. Releases between the two are not covered by either source. Treat 3.3.118 as the version to reach, and confirm against the Talos report, which I could not open because it blocked my request. Other distributions may use their own version strings, so read your vendor's advisory.

Talos reported four tdelta issues under TALOS-2023-1791, one for each case of how the code indexes or initializes tdelta. This entry concerns the tdelta initialization part. All four share one update.

How to check if you're exposed

GTKWave is a desktop waveform viewer, so it usually sits on engineering workstations, lab machines and verification servers rather than production hosts. It also gets pulled into container images and build environments.

gtkwave --version
dpkg -s gtkwave | grep Version
brew list --versions gtkwave

Use the line that matches your system. On Debian or Ubuntu, compare the package version with the fixed builds listed above, and remember that distributions can backport fixes under older numbers, so read the package changelog for the CVE id if the number looks low.

Also look for shared directories where waveform files arrive, such as simulation output folders and vendor drops. The risk comes from opening a file, so knowing where untrusted files come from matters as much as the version number.

What to do now

  1. Find every machine, image and shared tool that has GTKWave installed, and record the version.
  2. Update to upstream 3.3.118 or later, or to your distribution's fixed package. On Debian, that means the update from DLA-3785-1 or DSA-5653-1.
  3. Until updated, do not open .fst files from sources you do not trust, and do not open them on a machine that holds credentials or source code.
  4. Treat waveform files that arrive from vendors, contractors or the internet as untrusted input, and open them on a disposable machine where you can.
  5. Re-check the version after the update, including inside container images that were built earlier.

Why it matters

The weakness is CWE-129, improper validation of an array index. The record says several improper array index validation issues exist in the tdelta functionality of fstReaderIterBlocks2, and that a crafted FST file can lead to arbitrary code execution. This entry concerns the tdelta initialization part.

A program that uses a value from a file as an index into an array, without checking that the value is in range, can read or write outside the array. When it writes, an attacker who controls the file may be able to change memory they should not touch. This is the class of bug, as the record describes it, and no more detail is needed to patch.

The score is 7.8 with a local vector and one required user action, which is opening the file. It is not on CISA's Known Exploited Vulnerabilities list, and I found no claim of exploitation.

Quick check

Why are there four CVEs for one function?

Each covers a different case in the tdelta code, and each got its own identifier. One update fixes all of them.

Does the file have to be opened by a person?

Yes. The record says a victim would need to open a malicious file.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

We email you a link to confirm, and only then add you to the list. Unsubscribe in one click. Privacy

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.