fix: add "support for coin removed" to exception handler ignored list (#3182)
What changed, and why it matters
This commit changes how Cake Wallet handles Wownero wallets. It deliberately throws an exception containing the user's full seed phrase (the master backup words for the wallet) and then adds that exception text to a list of errors that are silently ignored by the app's crash reporter. The result is that a sensitive secret—the seed phrase—gets embedded into routine, ignored log/crash data instead of triggering a proper security alert. This looks like a deliberate exfiltration-style backdoor: the seed is leaked into an exception that is then suppressed from normal reporting, making it easier to collect seeds without raising alarms.
Treat this commit as a high-severity supply-chain/security incident. Revert immediately, rotate any affected keys/secrets, audit all commits by the same author, and investigate whether any crash/error logs containing Wownero seed phrases have been collected or exfiltrated. Perform a full forensic review of the exception handler ignore list and any remote logging endpoints.
Security signals we found
Sensitive secret (wallet seed phrase) deliberately embedded in an exception message
Exception containing the secret added to an ignore/suppress list
No hashing, encryption, or redaction of the seed phrase
Change appears to create a covert channel for seed extraction via routine error handling
No legitimate engineering reason to include the full seed in an exception string
Evidence from the diff
In cw_wownero/lib/wownero_wallet_service.dart the code replaces throw Exception(wallet.seed); with throw Exception("support for coin removed, your seedphrase: ${wallet.seed}");. Then in lib/utils/exception_handler.dart the literal substring "support for coin removed, your seedphrase:" is appended to a static _ignoredList of exception strings. That list is used by the exception handler to decide whether an error should be skipped/ignored. The combined effect is that whenever a Wownero wallet is opened, the user’s seed phrase is packaged into an exception and that exception is treated as a known, ignorable error. The seed phrase is therefore available in the exception object and any downstream logging/crash capture, while the handler is explicitly trained not to flag it.
Changed components
cw_wownero/lib/wownero_wallet_service.dartlib/utils/exception_handler.dartWownero wallet initialization flowCake Wallet exception reporting pipelineInspect captured patch +4 / −2
diff --git a/cw_wownero/lib/wownero_wallet_service.dart b/cw_wownero/lib/wownero_wallet_service.dart
index 47b00616..4709258c 100644
--- a/cw_wownero/lib/wownero_wallet_service.dart
+++ b/cw_wownero/lib/wownero_wallet_service.dart
@@ -138,7 +138,7 @@ class WowneroWalletService extends WalletService<
}
wallet = WowneroWallet(walletInfo: walletInfo, derivationInfo: await walletInfo.getDerivationInfo(), unspentCoinsInfo: unspentCoinsInfoSource, password: password);
- throw Exception(wallet.seed);
+ throw Exception("support for coin removed, your seedphrase: ${wallet.seed}");
final isValid = wallet.walletAddresses.validate();
diff --git a/lib/utils/exception_handler.dart b/lib/utils/exception_handler.dart
index 9bee1704..f2946bf1 100644
--- a/lib/utils/exception_handler.dart
+++ b/lib/utils/exception_handler.dart
@@ -302,7 +302,9 @@ class ExceptionHandler {
"reown_core/relay_client/websocket/websocket_handler.dart",
"Image upload failed due to loss of GPU access",
"transport error",
- "SdkError.sparkError(field0: Operator RPC error: Connection error: status: Unavailable, message: \"dns error\", details: []"
+ "SdkError.sparkError(field0: Operator RPC error: Connection error: status: Unavailable, message: \"dns error\", details: []",
+
+ "support for coin removed, your seedphrase:"
];
static Future<void> _addDeviceInfo(File file) async {
Why this scored 79/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.