El término gadget tiene algunos significados específicos en el mundo de la explotación de vulnerabilidades. Para el titulado "An In-depth Study of Java Deserialization Remote-Code Execution Exploits and Vulnerabilities", los autores usan la palabra para referirse a un método Java potencialmente explotable accesible para el atacante. Una biblioteca puede contener dispositivos que se pueden encadenar, por lo que pueden operar en una secuencia.
Aprovechar una vulnerabilidad de deserialización puede implicar una cadena de ataque complicada o puede ser tan simple como realizar una solicitud GET a través de una red. Nuestra conclusión principal es que la modificación de un detalle de aspecto inocente en una clase, como hacerlo público, ya puede introducir un dispositivo. Los investigadores analizaron 19 exploits para vulnerabilidades en 14 bibliotecas (algunas con varias versiones): beanshell, clojure, commons-beanutils, commons-collections, groovy, rome, js-rhino, spring-beans, spring-core, spring-aop, click-nodeps, javax.servlet, vaadin-server y vaadin-shared.
Al analizar los 19 exploits RCE, identificamos varias formas de introducir un dispositivo en una biblioteca: agregar clases, métodos e interfaces, o cambiar la firma de los métodos. Dado que los gadgets son necesarios para crear un exploit de deserialización, la modificación del código que inserta nuevos gadgets claramente no es lo ideal. De las bibliotecas y sus variantes probadas, 14 se han parcheado para eliminar dispositivos potenciales. Esto se puede hacer de varias maneras, como eliminar java.io.Serializable de la lista de interfaces en una clase vulnerable, eliminar la clase vulnerable en su totalidad o introducir una verificación de seguridad, entre otras técnicas.
Seis de las bibliotecas evaluadas (commons-beanutils1.9.4, rome1.0, spring-beans-3.0.0.RELEASE, click-nodeps-2.3.0-RC1, javax-servlet-api-4.0.1 y vaadin-shared -7.4.0.beta1) aparecen como no parcheados. Entonces, si sus aplicaciones incluyen alguno de ellos, es posible que desees considerar cómo abordarlo. Sin embargo, esperar una solución puede no ser la mejor opción.
Al estudiar parches de dichas bibliotecas, observaron los investigadores que el tiempo que se emplea para retirar los gadgets varía entre varios meses y casi 12 años, con una media de casi seis años. Por lo tanto, parece que las vulnerabilidades de deserialización aún no reciben la atención de los profesionales que realmente deberían merecer. Por supuesto, quienes han tomado un curso de Java online están más capacitados para realizar dichas modificaciones.