CVE-2023-26556
📋 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
- io.finnet tss-lib
- bnb-chain/tss-lib
- thorchain/tss
📦 What is this software?
Tss Lib by Iofinnet
⚠️ 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.
🎯 Exploit Status
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
allLimit 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
- https://github.com/IoFinnet/tss-lib/releases/tag/v2.0.0
- https://github.com/bnb-chain/tss-lib/tree/v1.3.5
- https://gitlab.com/thorchain/tss/tss-lib/-/tags/v0.1.3
- https://medium.com/%40iofinnet/security-disclosure-for-ecdsa-and-eddsa-threshold-signature-schemes-4e969af7155b
- https://github.com/IoFinnet/tss-lib/releases/tag/v2.0.0
- https://github.com/bnb-chain/tss-lib/tree/v1.3.5
- https://gitlab.com/thorchain/tss/tss-lib/-/tags/v0.1.3
- https://medium.com/%40iofinnet/security-disclosure-for-ecdsa-and-eddsa-threshold-signature-schemes-4e969af7155b