The vulnerability stems from insufficient validation of JNDI URIs in three key areas: 1) In JMSMessageConsumer.java, destinationName was directly used for JNDI lookup after only checking for 'java' scheme via error-prone manual URI parsing. 2) In JMSSource.java, providerUrl and connectionFactoryName parameters were similarly processed without proper validation. The pre-patch code lacked the verifyContext validation that restricts protocols to approved schemes, allowing attackers to specify dangerous JNDI provider URLs that trigger remote code execution through deserialization attacks. The commit diff shows these validation checks were added in the fix, confirming these were the vulnerable points.