ANULAR EL MÉTODO QUE USA LA HERENCIA
Si hablamos estrictamente solo sobre el uso de la herencia para anular el método en una aplicación existente que no tiene acceso al código fuente, @objlass es un poco del tema.
Esto se debe a que si crea una nueva clase que extienda una nueva y simplemente invalide un método y lo coloque en la carpeta de clases de la aplicación en ejecución, no ocurrirá nada. Esto se debe a que no está haciendo cosas complejas, como descompilar y modificar el código existente.
Sin embargo, si tiene un Administrador DI como Spring, puede cambiar la clase inyectada editando el Archivo XML, y así podrá reemplazar su propio bean por el original.
POINTCUT
Otro tipo de ataques tampoco es anular métodos, al agregar puntos de corte usando aspectos, de nuevo, esto se puede hacer mediante el uso de un marco como Spring.
Para la seguridad de la aplicación, solo he escuchado que algún proyecto prohíbe que cualquier biblioteca agregue la capacidad de agregar puntos usando aspectos.
El hecho de que en Java sea más fácil inyectar código no significa mucho, solo puede considerar que si alguien pudo acceder a su servidor de aplicaciones, el servidor está dañado.
OVERRIDING CLASS UING ENDOERSED FOLDER
Otra forma de piratear sería utilizar el mecanismo respaldado de Java, es un lugar específico donde todos los JAR que se ponen aquí tienen prioridad sobre todos los demás. Así que esto significa que puede sobrescribir incluso el tipo como Java.lang.String. O en lugar de derivar una clase para reemplazarla o agregar un punto de corte, puede obtener la clase (ya sea código fuente o descompilación .class) modificarla, compilarla, colocarla en un JAR y colocarla en la carpeta aprobada.
Tenga en cuenta que, por ejemplo, apache Tomcat ya posee una carpeta "aprobada" que se utiliza para anular cualquier biblioteca que necesite internamente para tener la versión correcta de las clases. simplemente puedes abrir uno de esos JARS y agregar tu clase dentro.
PROTEGER CONTRA ESOS MÉTODOS
¿Cómo se supone que un administrador de sistemas detecte esto? Bueno, de hecho, vi una solución bastante simple: un script que periódicamente (cron ...: p) verifica si algún archivo en el servidor (espera los registros que están movd en / var / log o lo que sea) ha cambiado e informarlo a la administrador del sistema si es así.
Debido a la forma en que lo esté haciendo, si no puede cambiar el código fuente antes de que ingrese al servidor, tendrá que modificar los archivos y detectar que, de hecho, es bastante fácil.
Para incluso ir más lejos, podría usar hash de cómputo md5 (¡y aún verificar el tamaño del archivo!) de todos los archivos de su servidor y el script en ejecución (en caso de que alguien intente agregar una carpeta externa a la ruta de clase).
Finalmente, lo que he dicho aquí es bastante simple de implementar, probablemente hay formas aún más inteligentes de hacerlo, sin embargo, no tengo los conocimientos necesarios para ello.
EDITAR:
Gracias a @ojblass por señalar que hay un paquete llamado Tripwire que mirará los archivos / directorio por usted y ejecutará el comando que desee cuando ocurra algo.