Nits from PR review, and update behavior with untrusted external amounts
What changed, and why it matters
This commit only changes two documentation files. It clarifies when the Ledger Bitcoin app can and cannot display the total amount of external transaction inputs. The change adds a note that for non-Taproot transactions, if the PSBT lacks the non-witness UTXO data for external inputs, the shown external-input amount is not trustworthy because legacy and SegWit signatures do not commit to that data. There is no code change in the commit, so it does not by itself fix or introduce a vulnerability.
No immediate action is required from a security standpoint for this commit alone. Review whether the documented behavior is already implemented in the app firmware, and consider whether the missing non-witness-utxo case needs a corresponding code-level safeguard if one is not already present.
Security signals we found
Documentation-only change
Describes trust assumptions for external input amounts in PSBTs
Mentions non-witness-utxo requirement for reliable external-input amount display
No code patch present in the supplied diff
Evidence from the diff
The diff updates doc/features.md and doc/integration.md. It rewords warning language and, in integration.md, adds an exception to the rule that the app shows the total amount of external inputs: for non-taproot inputs, if the PSBT does not contain the non-witness-utxo for external inputs, the amounts are not shown/trustworthy because they are not committed to by the legacy or BIP-143 SegWit signature hash. This is a documentation-only change describing existing app behavior; no source code is modified.
Changed components
doc/features.mddoc/integration.mdInspect captured patch +8 / −4
diff --git a/doc/features.md b/doc/features.md
index e3b1a3b..312b7f8 100644
--- a/doc/features.md
+++ b/doc/features.md
@@ -98,7 +98,8 @@ While the application only signs for the inputs that are proven as internal to t
involved in the spend, certain attacks remain possible where a user is tricked into spending more
than expected by approving multiple signing requests. Therefore, the application shows a
**warning** when attempting to sign such transactions. Users **must not approve** such
-transactions unless they fully understand the warning and its consequences, and were expecting it.
+a transaction unless they fully understand the warning and its consequences, and were already
+expecting it.
For transactions with external inputs, the following additional information is shown:
- the total amount of external inputs, when it can be reliably determined
diff --git a/doc/integration.md b/doc/integration.md
index 0f5551b..359cbd6 100644
--- a/doc/integration.md
+++ b/doc/integration.md
@@ -181,13 +181,16 @@ example `SINGLE`, `ACP | ALL`, or `Mixed`).
### External inputs
An *external input* is an input that the app cannot verify as belonging to the signing wallet
-policy. The app always **warns** about external inputs and, so the user can gauge the transaction's
-real effect, additionally shows:
+policy. The app always **warns** about external inputs and additionally shows the following, so the
+user can gauge the transaction's real effect:
- the account's net **You spend** / **You receive** amount, since with external inputs the outputs
and fee alone can be misleading (the transaction may even be a net *receive*);
- the **total amount of the external inputs** — unless signing with `SIGHASH_ANYONECANPAY`, which
- would make that quantity meaningless.
+ would make that quantity meaningless; or unless signing non-taproot transactions where the PSBT
+ does not include the non-witness-utxo for the external inputs, which makes the amounts not
+ trustworthy, as they are not committed to in the legacy or [SegWit](https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki)
+ signature algorithm.
Both figures assume the external inputs indeed do not belong to the account used for signing the
transaction, which is not something that the app can verify for sure; see
Why this scored 11/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.