fix: Blind-signing bypass in EIP-712 FULL filtering activation#982
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #982 +/- ##
========================================
Coverage 55.02% 55.02%
========================================
Files 16 16
Lines 1592 1592
Branches 198 195 -3
========================================
Hits 876 876
+ Misses 680 678 -2
- Partials 36 38 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
apaillier-ledger
approved these changes
Apr 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #981
Summary
Automated security fix for Blind-signing bypass in EIP-712 FULL filtering activation (High).
CWE: CWE-CWE-306
OWASP: A01:2021-Broken Access Control
Fix Confidence: high
What Changed
The vulnerability allows a malicious host to bypass blind-signing protections by sending P2_FILT_ACTIVATE to switch into FULL filtering mode, without ever providing verified filter metadata. In FULL mode, the signing check
ui_712_remaining_filters() == 0trivially passes becausefilters_to_processdefaults to 0.The fix adds a
message_info_receivedboolean flag to the UI context:ui_logic.c: Addedbool message_info_receivedfield tot_ui_contextstruct. Set it totrueinui_712_set_filters_count(), which is only called fromfiltering_message_info()after successful cryptographic signature verification. Added getterui_712_message_info_received().ui_logic.h: Declared the newui_712_message_info_received()function.commands_712.c: Modified the FULL filtering check inhandle_eip712_sign()to also requireui_712_message_info_received()to be true, preventing signing when no verified MESSAGE_INFO was processed.Since the struct is allocated with
APP_MEM_CALLOC(zero-initialization),message_info_receiveddefaults tofalse, ensuring the gate is closed until a properly signed MESSAGE_INFO packet is processed.Caveats
Verification Checklist
Created by Cerberus Merlin