CVE-2024-23833: OpenRefine JDBC Attack Vulnerability
Summary A jdbc attack vulnerability exists in OpenRefine(version<=3.7.7)
Details Vulnerability Recurrence Start by constructing a malicious MySQL Server (using the open source project MySQLFakeServer here). !image Then go to the Jdbc connection trigger vulnerability !image Vulnerability Analysis This vulnerability is the bypass of CVE-2023-41887 vulnerability repair, the main vulnerability principle is actually the use of official syntax features, as shown in the following figure, when the connection we can perform parameter configuration in the Host part !image In com.google.refine.extension.database.mysql.MySQLConnectionManager#getConnection method in the final JdbcUrl structure !image That is, in the toURI method call here, you can see that the Host part is directly concatenated for any verification, which can be bypassed using the address feature of mysql !image That is, in the toURI method call here, you can see that the Host part is directly concatenated for any verification, which can be bypassed using the address feature of mysql !image
PoC Complete instructions, including specific configuration details, to reproduce the vulnerability. Type: MySQL Host: 127.0.0.1:3306,(host=127.0.0.1,port=3306,autoDeserialize=true,allowLoadLocalInfile=true,allowUrlInLocalInfile=true,allowLoadLocalInfileInPath=true),127.0.0.1 Port: 3306 User: winhosts Database: test
Impact Due to the newer MySQL driver library in the latest version of OpenRefine (8.0.30), there is no associated deserialization utilization point, so original code execution cannot be achieved, but attackers can use this vulnerability to read sensitive files on the target server.
Other sources
OpenRefine is a free, open source power tool for working with messy data and improving it. A jdbc attack vulnerability exists in OpenRefine(version<=3.7.7) where an attacker may construct a JDBC query which may read files on the host filesystem. Due to the newer MySQL driver library in the latest version of OpenRefine (8.0.30), there is no associated deserialization utilization point, so original code execution cannot be achieved, but attackers can use this vulnerability to read sensitive files on the target server. This issue has been addressed in version 3.7.8. Users are advised to upgrade. There are no known workarounds for this vulnerability.
— Launchpad
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
maven/org.openrefine:databaseto a version that resolves this vulnerability.Fixed in 3.7.8 - Upgrade
Upgrade
debian/openrefineto a version that resolves this vulnerability.Fixed in 3.8.7-1 - Upgrade
Upgrade
OpenRefineto a version that resolves this vulnerability.Fixed in 3.7.8 - Compensating control
No workaround is known for this vulnerability; however, because the proof concept targets a MySQL service (example host 127.0.0.1:3306), restrict/limit network access to the MySQL port (3306) so only trusted clients can reach it.
Event History
Frequently Asked Questions
What is the severity of CVE-2024-23833?
CVE-2024-23833 has been assigned a moderate severity level due to its potential impact on user data and system integrity.
How do I fix CVE-2024-23833?
To fix CVE-2024-23833, upgrade OpenRefine to version 3.7.8 or later.
What versions of OpenRefine are affected by CVE-2024-23833?
OpenRefine versions 3.7.7 and earlier are affected by CVE-2024-23833.
What type of attack does CVE-2024-23833 involve?
CVE-2024-23833 involves a JDBC attack vulnerability that can be exploited through malicious MySQL servers.
Can I continue using OpenRefine if I am on an affected version regarding CVE-2024-23833?
It is not recommended to continue using affected versions of OpenRefine due to the security vulnerabilities posed by CVE-2024-23833.