Skip to main content

Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')

CVE-2022-41853

Severity High
Score 9.8/10

Summary

Those using "java.sql.Statement" or "java.sql.PreparedStatement" in hsqldb (HyperSQL DataBase) to process untrusted input may be vulnerable to a Remote Code Execution attack. By default it is allowed to call any static method of any Java class in the classpath resulting in code execution. The issue affects versions prior to 2.7.1. If updating is not possible, an alternative measure can be to set the system property "hsqldb.method_class_names" to classes which are allowed to be called. For example, 'System.setProperty("hsqldb.method_class_names", "abc")' or Java argument - 'Dhsqldb.method_class_names="abc"' can be used. From version 2.7.1 all classes by default are not accessible except those in "java.lang.Math" and need to be manually enabled.

  • LOW
  • NETWORK
  • HIGH
  • UNCHANGED
  • NONE
  • NONE
  • HIGH
  • HIGH

CWE-470 - Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')

The application uses external input with reflection to select which classes or code to use, but it does not sufficiently prevent the input from selecting improper classes or code.

Advisory Timeline

  • Published