The vulnerability lies in the JDBCInterpreter of Apache Zeppelin, specifically in how it validates JDBC connection URLs. The root cause is improper input validation, where the validateConnectionUrl method failed to decode URL-encoded characters in the connection string before checking for blacklisted, sensitive parameters. An attacker could exploit this by crafting a malicious JDBC URL with sensitive options (like allowLoadLocalInfile) encoded. When Zeppelin's JDBC interpreter processes this URL, the getConnection method calls validateConnectionUrl. The vulnerable version of this method would inspect the raw, encoded URL and fail to find the blacklisted keywords, thus bypassing the security check. This would allow the interpreter to establish a connection with dangerous parameters, potentially leading to arbitrary file reads from the server's local filesystem. The patch addresses this by ensuring the URL is decoded before the validation checks are performed, so any encoded malicious parameters are revealed and blocked as intended.