{"id":"CVE-2026-3960","aliases":["PYSEC-2026-2180","GHSA-qmcv-hh7c-3m56"],"title":"A critical remote code execution vulnerability exists in the unauthenticated REST API endpoint /99/ImportSQLTable in H2O-3 version 3.46.0…","summary":"A critical remote code execution vulnerability exists in the unauthenticated REST API endpoint /99/ImportSQLTable in H2O-3 version 3.46.0.9 and prior. The vulnerability arises due to insufficient security controls in the parameter blackl…","severity":"critical","cvss":9.8,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","vendor":"h2o","product":"h2o","ecosystem":"pip","affected":["h2o < 3.46.0.10"],"patched":["h2o 3.46.0.10"],"published":"2026-04-23","updated":"2026-07-13","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/PYSEC-2026-2180","references":[{"url":"https://github.com/h2oai/h2o-3/commit/b9ae2d3c5220db2dc53753357a783e590364d044"},{"url":"https://huntr.com/bounties/6954fe04-b905-453f-8c53-205ac8377e0d"}],"tags":["osv","pip"],"epss":0.00938,"epssPercentile":0.59365,"ingestedAt":"2026-07-13T18:58:07.858Z","slug":"CVE-2026-3960","body":"## Overview\n\nA critical remote code execution vulnerability exists in the unauthenticated REST API endpoint /99/ImportSQLTable in H2O-3 version 3.46.0.9 and prior. The vulnerability arises due to insufficient security controls in the parameter blacklist mechanism, which only targets MySQL JDBC driver-specific dangerous parameters. An attacker can bypass these controls by switching the JDBC URL protocol to jdbc:postgresql: and exploiting PostgreSQL JDBC driver-specific parameters such as socketFactory and socketFactoryArg. This allows unauthenticated attackers to execute arbitrary code on the H2O-3 server with the privileges of the H2O-3 process. The issue is resolved in version 3.46.0.10.\n\n## Affected packages\n\n- `h2o < 3.46.0.10`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `h2o 3.46.0.10`","depth":"midnight","depthScore":54,"depthScoreParts":{"impact":53.9,"likelihood":0.2,"exploitation":0,"ransomware":0},"changes":[]}