Andrea Cosentino created CAMEL-24430:
----------------------------------------

             Summary: camel-as2 - signature verification and MIC comparison are 
not enforced on received messages and MDN receipts
                 Key: CAMEL-24430
                 URL: https://issues.apache.org/jira/browse/CAMEL-24430
             Project: Camel
          Issue Type: Improvement
          Components: camel-as2
            Reporter: Andrea Cosentino
            Assignee: Andrea Cosentino
             Fix For: 4.23.0


Two related gaps in how AS2 authenticity is established.

*Inbound messages.* AS2Configuration.signatureVerificationRequired has no 
initialiser, so it defaults to false:

{code:java}
@UriParam(label = "security")
private boolean signatureVerificationRequired;
{code}

and HttpMessageUtils documents the consequence itself: the unverified payload 
is delivered after logging a warning unless the flag is set. A component that 
accepts signed messages and can verify them arguably should not deliver 
unverified content by default.

*MDN receipts.* On the client side AS2ClientManager.sendRequest() parses the 
response and returns:

{code:java}
response = as2ClientConnection.send(request, httpContext);
EntityParser.parseAS2MessageEntity(response);
{code}

There is no signature verification of the receipt and no comparison of its 
Received-Content-MIC against the MIC of the content that was sent. grep across 
camel-as2-api shows RECEIVED_CONTENT_MIC only being parsed 
(DispositionNotificationContentUtils) and generated 
(AS2MessageDispositionNotificationEntity) - never compared. An MDN is the 
non-repudiation record for the interchange, so a receipt that is not verified 
does not carry the property it exists for.

Proposal: verify the MDN signature against the configured/pinned partner chain 
and compare Received-Content-MIC with the locally computed MIC, surfacing the 
outcome to the route; and flip signatureVerificationRequired to true with an 
upgrade-guide entry, or refuse to start a consumer configured with a validation 
chain but with the flag off. The default change is breaking, so it needs the 
guide entry and may be main-only.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to