Se descubrió y parchó una vulnerabilidad de gravedad crítica en el complemento Better Search Reemplazo para WordPress, que tiene más de 1 millón de instalaciones activas en sitios web. Los ataques exitosos podrían provocar la eliminación arbitraria de archivos, la recuperación de datos confidenciales y la ejecución de código.
Nivel de gravedad de la vulnerabilidad
La gravedad de las vulnerabilidades se califica en un sistema de puntos con calificaciones que van desde baja hasta crítica:
- Bajo 0,1-3,9
- Medio 4.0-6.9
- Alto 7,0-8,9
- Crítico 9.0-10.0
La gravedad de la vulnerabilidad descubierta en el complemento Better Search Reemplazo se clasifica como Crítica, que es el nivel más alto, con una puntuación de 9,8 en la escala de gravedad del 1 al 10.
Mejor búsqueda Reemplace el complemento de WordPress
El complemento está desarrollado por WP Engine, pero fue creado originalmente por la empresa de desarrollo Delicious Brains que fue adquirida por WP Engine. Better Search Reemplazo es una herramienta de WordPress de álamo que simplifica y automatiza el proceso de ejecutar una tarea de búsqueda y reemplazo en una base de datos de un sitio web de WordPress, lo cual es útil en una tarea de migración de sitio o servidor. El complemento viene en una versión Pro gratuita y de pago.
El sitio web del complemento enumera las siguientes características de la versión gratuita:
- “Soporte de serialización para todas las tablas.
- La capacidad de seleccionar tablas específicas.
- La capacidad de ejecutar un “ensayo” para ver cuántos campos se actualizarán
- No hay requisitos de servidor aparte de una instalación en ejecución de WordPress
- Soporte multisitio de WordPress”
La versión Pro paga tiene características adicionales como la capacidad de rastrear lo que se cambió, la capacidad de realizar copias de seguridad e importar la base de datos mientras se ejecuta el complemento y soporte extendido.
La popularidad del complemento se debe a la facilidad de uso, la utilidad y el historial de ser un complemento confiable.
Vulnerabilidad de inyección de objetos PHP
Una vulnerabilidad de inyección de objetos PHP, en el contexto de WordPress, ocurre cuando una entrada proporcionada por el usuario no se serializa de manera insegura. La deserialización es un proceso en el que las representaciones de cadenas de objetos se vuelven a convertir en objetos PHP.
La organización sin fines de lucro Open Worldwide Application Security Project (OWASP) ofrece una descripción general de la vulnerabilidad de inyección de objetos PHP:
“La inyección de objetos PHP es una vulnerabilidad a nivel de aplicación que podría permitir a un atacante realizar diferentes tipos de ataques maliciosos, como inyección de código, inyección SQL, recorrido de ruta y denegación de servicio de aplicación, según el contexto.
La vulnerabilidad ocurre cuando la entrada proporcionada por el usuario no se desinfecta adecuadamente antes de pasarla a la función PHP unserialize(). Dado que PHP permite la serialización de objetos, los atacantes podrían pasar cadenas serializadas ad-hoc a una llamada unserialize() vulnerable, lo que resultaría en una inyección arbitraria de objetos PHP en el alcance de la aplicación.
Para explotar con éxito una vulnerabilidad de inyección de objetos PHP se deben cumplir dos condiciones:
- La aplicación debe tener una clase que implemente un método mágico PHP (como __wakeup o __destruct) que pueda usarse para llevar a cabo ataques maliciosos o para iniciar una ‘cadena POP’.
- Todas las clases utilizadas durante el ataque deben declararse cuando se llama al vulnerable unserialize(); de lo contrario, se debe admitir la carga automática de objetos para dichas clases”.
Si un atacante puede cargar (inyectar) una entrada para incluir un objeto serializado de su elección, potencialmente puede ejecutar código arbitrario o comprometer la seguridad del sitio web. Como se mencionó anteriormente, este tipo de vulnerabilidad generalmente surge debido a una limpieza inadecuada de las entradas de los usuarios. La desinfección es un proceso estándar de verificación de datos de entrada para que solo se permitan los tipos de entrada esperados y se rechacen y bloqueen las entradas inseguras.
En el caso del complemento Better Search Reemplazo, la vulnerabilidad quedó expuesta en la forma en que manejó la deserialización durante las operaciones de búsqueda y reemplazo. Una característica de seguridad crítica que faltaba en este escenario era una cadena POP: una serie de clases y funciones vinculadas que un atacante puede utilizar para desencadenar acciones maliciosas cuando un objeto no está serializado.
Si bien el complemento Better Search Reemplazo no contenía dicha cadena, persistía el riesgo de que si otro complemento o tema instalado en el mismo sitio web contuviera una cadena POP, podría permitir que un atacante lanzara ataques.
Wordfence describe la vulnerabilidad:
“El complemento Better Search Reemplazo para WordPress es vulnerable a la inyección de objetos PHP en todas las versiones hasta la 1.4.4 inclusive a través de la deserialización de entradas que no son de confianza.
Esto hace posible que atacantes no autenticados inyecten un objeto PHP.No hay ninguna cadena POP presente en el complemento vulnerable. Si una cadena POP está presente a través de un complemento o tema adicional instalado en el sistema de destino, podría permitir al atacante eliminar archivos arbitrarios, recuperar datos confidenciales o ejecutar código”.
En respuesta a este descubrimiento, WP Engine solucionó el problema de inmediato. La entrada del registro de cambios para la actualización a la versión 1.4.5, publicada el 18 de enero de 2024, destaca las medidas tomadas:
“Seguridad: deserializar un objeto durante las operaciones de búsqueda y reemplazo ahora pasa ‘allowed_classes’ => false para evitar crear instancias del objeto y potencialmente ejecutar código malicioso almacenado en la base de datos”.
Esta actualización se produjo después de la divulgación responsable de la vulnerabilidad por parte de Wordfence el 18 de diciembre de 2023, a la que siguió el desarrollo y las pruebas de la solución por parte de WP Engine.
Qué hacer en respuesta
Se insta a los usuarios del complemento Better Search Reemplazo a que actualicen a la última versión de inmediato para proteger sus sitios web de actividades no deseadas.