The vulnerability, CVE-2025-27526, concerns improper sanitization of JDBC connection strings in Apache InLong, specifically allowing bypasses through URL encoding and backspace characters. This could lead to the inclusion of dangerous parameters (e.g., autoDeserialize=true, allowLoadLocalInfile=true) in the JDBC URL, potentially resulting in deserialization of untrusted data or local file inclusion.
The core of the vulnerability resided in the org.apache.inlong.manager.pojo.util.MySQLSensitiveUrlUtils.filterSensitive method. Its previous implementation relied on a loop and a helper method containSensitiveKey to identify and remove parameters like key=true or key=yes. This approach was insufficient and could be bypassed. The patch (commit 48c2f5cad4a92be2c3561174d70cdbc91a2d2626) addresses this by removing the flawed containSensitiveKey method and overhauling the logic within filterSensitive, notably by introducing filterSensitiveKeyByBracket to more robustly parse and sanitize parameters, especially those within parentheses in the JDBC URL. It also ensures that certain sensitive parameters are explicitly set to safe defaults (e.g., autoDeserialize=false).
The method org.apache.inlong.manager.pojo.sink.mysql.MySQLSinkDTO.filterSensitive is a public static method that directly calls MySQLSensitiveUrlUtils.filterSensitive. As such, it acts as an accessible entry point for the vulnerable code. Any component using MySQLSinkDTO.filterSensitive to process user-supplied JDBC URLs would have been exposed to this vulnerability prior to the patch.
Therefore, during exploitation, these two functions would likely appear in a runtime profile: MySQLSinkDTO.filterSensitive as the initial call for URL processing, and MySQLSensitiveUrlUtils.filterSensitive (its pre-patch version) as the function containing the flawed sanitization logic.