In Apache Batik 1.x before 1.10, when deserializing subclass of `AbstractDocument`, the class takes a string from the inputStream as the class name which then use it to call the no-arg constructor of the class. Fix was to check the class type before calling newInstance in deserialization.
A vulnerability in Apache Batik could allow an unauthenticated, remote attacker to access sensitive information on a targeted system.
The vulnerability is due to improper deserialization of untrusted data that is processed by the AbstractDocument subclass of the affected software. The AbstractDocument subclass accepts a string from the inputStream as the class name and then uses the string to call the no-arg constructor of the class. An attacker could exploit this vulnerability by sending a request that submits malicious input to the targeted system. An exploit could allow the attacker to access sensitive information, which could be used to conduct further attacks.
Apache has confirmed the vulnerability and released software updates.
Administrators are advised to apply the appropriate updates.
Administrators are advised to allow only trusted users to have network access.
Administrators are advised to run both firewall and antivirus applications to minimize the potential of inbound and outbound threats.
Administrators may consider using IP-based access control lists (ACLs) to allow only trusted systems to access the affected systems.
Administrators can help protect affected systems from external attacks by using a solid firewall strategy.
Administrators are advised to monitor affected systems.
To exploit this vulnerability, an attacker must send a request that submits malicious input to the targeted system, making exploitation more difficult in environments that restrict network access from untrusted sources.