CVE-2023-26556

9.1 CRITICAL

📋 TL;DR

This vulnerability allows attackers to extract secret cryptographic keys through timing side-channel attacks in threshold signature implementations. The leak occurs in scalar multiplication operations that aren't constant-time, affecting multiple threshold signature libraries. Systems using vulnerable versions of io.finnet tss-lib, bnb-chain/tss-lib, or thorchain/tss are at risk.

💻 Affected Systems

Products:
  • io.finnet tss-lib
  • bnb-chain/tss-lib
  • thorchain/tss
Versions: All versions before io.finnet tss-lib 2.0.0, bnb-chain/tss-lib before 1.3.5, thorchain/tss before 0.1.3
Operating Systems: All platforms running Go applications
Default Config Vulnerable: ⚠️ Yes
Notes: Affects ECDSA and EdDSA threshold signature schemes. Any system using these libraries for threshold signing is vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of cryptographic keys, enabling unauthorized transactions, fund theft, and impersonation of threshold signature participants.

🟠

Likely Case

Gradual extraction of secret keys over multiple signature operations, leading to eventual compromise of threshold signing capabilities.

🟢

If Mitigated

Limited exposure if systems are isolated and have minimal signature operations, but risk remains until patched.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires ability to measure timing differences during signature operations. While no public PoC exists, timing side-channel attacks are well-understood and could be weaponized by sophisticated attackers.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: io.finnet tss-lib 2.0.0, bnb-chain/tss-lib 1.3.5, thorchain/tss 0.1.3

Vendor Advisory: https://medium.com/@iofinnet/security-disclosure-for-ecdsa-and-eddsa-threshold-signature-schemes-4e969af7155b

Restart Required: Yes

Instructions:

1. Update to patched version: go get github.com/IoFinnet/tss-lib@v2.0.0 (or equivalent for other libraries). 2. Rebuild and redeploy all applications using the library. 3. Rotate all cryptographic keys generated with vulnerable versions.

🔧 Temporary Workarounds

Rate limit signature operations

all

Limit the frequency of signature operations to reduce timing measurement opportunities

Implement request throttling in application logic

🧯 If You Can't Patch

  • Isolate threshold signing services to dedicated, monitored networks with strict access controls
  • Implement additional authentication layers and transaction monitoring for all threshold-signed operations

🔍 How to Verify

Check if Vulnerable:

Check go.mod or package dependencies for tss-lib versions. For Go projects: go list -m all | grep tss-lib

Check Version:

go list -m all | grep tss-lib

Verify Fix Applied:

Verify updated version is in use: go list -m all | grep tss-lib should show v2.0.0 or later for io.finnet, or equivalent patched versions for other libraries

📡 Detection & Monitoring

Log Indicators:

  • Unusual timing patterns in signature operations
  • Multiple failed signature attempts with timing variations

Network Indicators:

  • High volume of signature requests from single sources
  • Repeated connection attempts to threshold signing services

SIEM Query:

source="application_logs" AND "signature" AND "duration" > threshold_ms | stats count by src_ip

🔗 References

📤 Share & Export