offers: set `force_paths` on offer if fronting nodes are used.
What changed, and why it matters
This commit adds a flag called `force_paths` to an offer when the user has chosen to use 'fronting nodes' (intermediate nodes that hide the recipient's identity). This tells the system later, when an invoice request arrives, that it must stick to the privacy-preserving blinded paths rather than potentially leaking the real node. The change itself is one line and appears to be a correctness/privacy fix rather than an active vulnerability patch, but it prevents a privacy-relevant misbehavior.
Treat as a low-to-moderate privacy hardening commit. Review the corresponding invoice-request consumer of `force_paths` to confirm it correctly honors the flag and that no code path ignores it. No urgent deployment action is indicated from this diff alone, but nodes using fronting nodes should run a version containing this fix.
Security signals we found
Privacy-related correctness fix for BOLT12 blinded paths / offer fronting nodes
Single-line boolean flag addition tied to user-supplied fronting_nodes
Commit message frames the change as enabling enforcement of user-forced paths
Evidence from the diff
In plugins/offers_offer.c, create_offer() now emits a JSON boolean force_paths set to true whenever offinfo->fronting_nodes is non-NULL. The commit message states this is needed so that on invoice request the handler knows to limit itself to the blinded paths because they were explicitly forced by the user. Without this flag, the subsequent invoice-request logic presumably could not distinguish user-forced blinded paths from optional ones and might fall back to non-blinded paths, undermining the fronting-node privacy guarantee.
Changed components
plugins/offers_offer.cCLN offers / BOLT12 invoice request handlingInspect captured patch +1 / −0
diff --git a/plugins/offers_offer.c b/plugins/offers_offer.c
index 15e4f1bb..0ac50886 100644
--- a/plugins/offers_offer.c
+++ b/plugins/offers_offer.c
@@ -248,6 +248,7 @@ static struct command_result *create_offer(struct command *cmd,
if (offinfo->label)
json_add_string(req->js, "label", offinfo->label);
json_add_bool(req->js, "single_use", *offinfo->single_use);
+ json_add_bool(req->js, "force_paths", offinfo->fronting_nodes != NULL);
return send_outreq(req);
}
Why this scored 34/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.