Andrea Cosentino created CAMEL-25409:
----------------------------------------

             Summary: camel-mongodb, camel-aws2-transcribe, camel-twitter - 
security metadata of three options does not match the code
                 Key: CAMEL-25409
                 URL: https://issues.apache.org/jira/browse/CAMEL-25409
             Project: Camel
          Issue Type: Bug
            Reporter: Andrea Cosentino


A sweep of every option in the generated catalog against the security metadata 
the policy framework relies on (SecurityUtils, see design/security.adoc) turned 
up three options whose metadata does not match what the code does. All three 
are metadata-only defects - no runtime behaviour changes, and in every case the 
runtime default is the safe one - but each defeats a mechanism that is supposed 
to catch misconfiguration.

*1. camel-mongodb: tlsAllowInvalidHostnames is not marked insecure:ssl*

MongoDbEndpoint#tlsAllowInvalidHostnames is declared as a plain @UriParam(label 
= "security"), but setting it calls builder.invalidHostNameAllowed(true) - it 
disables TLS hostname verification exactly like the options that do carry 
security = "insecure:ssl" (camel-kafka sslEndpointAlgorithm via CAMEL-24056, 
the AWS trustAllCertificates family, netty hostnameVerification, splunk-hec 
skipTlsVerify). Because the security option map is keyed by the bare option 
name, nothing named tlsAllowInvalidHostnames is known to it, so 
camel.main.profile=prod does not refuse it.

*2. camel-aws2-transcribe: trustAllCertificates advertises defaultValue=true*

Transcribe2Configuration declares @UriParam(security = "insecure:ssl", 
defaultValue = "true") on a bare boolean field, so the runtime default is false 
while the catalog, the component documentation and the generated DSL builders 
all say the default is true. Every other AWS component declares defaultValue = 
"false". The option itself is live (consumed by AwsClientBuilderUtil), so this 
is purely wrong advertised metadata - but it tells users that an AWS component 
ships trusting all certificates.

*3. camel-twitter: component-level httpProxyPassword is not marked as a secret*

AbstractTwitterComponent#httpProxyPassword has @Metadata(label = "proxy") with 
no security = "secret", while the endpoint-level twin in TwitterConfiguration 
has it. The catalog therefore reports secret=true for the endpoint option and 
secret=false for the component property of the same name, for 
twitter-directmessage, twitter-search and twitter-timeline. Sanitized URIs 
still mask it through SensitiveUtils, but the plain-text-secret check and UI 
masking skip the component-level property.

*Follow-up, not included here*

camel-debezium-mongodb has the same gap as (1) on 
mongodbSslInvalidHostnameAllowed, but that configuration class is generated by 
camel-debezium-maven-plugin, so fixing it means teaching 
ConnectorConfigGenerator about security-sensitive option names and regenerating 
every connector. That is worth a separate issue rather than being folded in 
here.

_Reported by Claude Code on behalf of @oscerd_



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

Reply via email to