Safeguard
Vulnerability Analysis•

CVE-2026-77641: Medium NULL Write After Free in Tor Conflux

CVE-2026-77641 is a medium crash bug in Tor before 0.4.9.9 when sending a conflux switch cell fails. Upgrade to 0.4.9.9 or later, ideally the newest.

Safeguard Security Team
3 min read

CVE-2026-77641 is a medium severity (CVSS 6.5) crash in Tor before 0.4.9.9, tracked as TROVE-2026-017. When sending a conflux switch cell failed, the code ignored the error and wrote to freed memory. The fix is Tor 0.4.9.9, and later releases add more security fixes.

What's affected

Tor versions before 0.4.9.9. Fixed in 0.4.9.9, which the ChangeLog dates to 1 June 2026. The bug dates to 0.4.8.1-alpha according to the ChangeLog.

The record published this CVE on 20 August 2026, well after the release, so installations that were updated in the summer already have the fix. Those on long-lived distribution packages should confirm.

How to check if you're exposed

Run the binary and read the version.

tor --version

If Tor comes from your distribution, also ask the package manager for the installed version, since backports can carry fixes under older version numbers. Relay operators should check their relay's reported version in their monitoring. If you ship Tor inside another application, such as a browser bundle or an appliance, check the bundled tor version and the vendor's notes.

What to do now

  1. Upgrade Tor to 0.4.9.9 or later. The newer 0.4.9.10 and 0.4.9.11 releases fix further issues, so choose the newest available.
  2. Check embedded copies of Tor in applications and appliances.
  3. Restart the process after the upgrade.
  4. If you monitor relays, treat unexplained crashes on older builds as a reason to upgrade, not just restart.

Why it matters

The class is CWE-252, unchecked return value. The function that sends a command to the circuit reports failure through its return value. A failure also marks the circuit for close and removes the conflux leg. The caller did not look at the result, so it then wrote to a leg structure that no longer existed.

The ChangeLog describes the outcome as a crash. The vector in the record has high attack complexity and affects availability and a little integrity. It is a modest bug, but one that illustrates how often error handling is where memory safety fails. No exploitation is reported.

Quick check

What does an unchecked return value have to do with memory safety?

When a call fails and cleans up, the caller must stop using what was cleaned up. Skipping the check means it keeps using freed memory.

Do I need to act if I am on 0.4.9.11?

No, that release is newer than the fix.

Sources

Last reviewed: 18 October 2026.

Never miss an update

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

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.