Recientemente, los investigadores de malware de Imunify360 recibieron un par de solicitudes de la comunidad para examinar el “Complemento de redireccionamiento de publicación/página rápida”. El complemento se usa ampliamente aproximadamente en aproximadamente 100.000 instalaciones. Esta investigación expondrá técnicas utilizadas por complementos para inyectar anuncios pasivamente en sitios web, en la mayoría de los casos los propietarios del sitio web ni siquiera lo saben o lo permiten. Responderá preguntas hechas por la comunidad más amplia de WordPress que no tuvo la oportunidad de recibir comentarios adecuados en los foros.
Las siguientes citas ilustran inquietudes que se encuentran fácilmente a través de los motores de búsqueda:
- «¿Alguna dirección para encontrar estos enlaces de spam y eliminarlos?»
- “Sí, yo también tuve eso. No sé si es este complemento o WordPress el culpable”.
- “Este complemento es parte de una red publicitaria y tenía un problema de seguridad que colocaba malware en su sitio web. Recibimos enlaces que aparecían en nuestro sitio”.
El complemento aparece en el repositorio de WordPress a partir del 29 de mayo:
Descubrimiento de código sospechoso: identificación de código de complemento manipulado
El código inesperado se encontró en el código de muestra del complemento. Los usuarios afirmaron que se había instalado desde una fuente confiable, el repositorio de WordPress. Sin embargo, a primera vista, parecía una inyección de código o una manipulación en sentido ascendente.
Estamos hablando del siguiente fragmento de código:
La muestra obtiene una carga útil remota arbitraria, que es una forma potencial y pasiva de inyectar contenido publicitario en el sitio web.
Hallazgos de la auditoría: Descubriendo código manipulado
Mirando el repositorio oficial de WordPress, no podemos encontrar el fragmento: https://plugins.svn.wordpress.org/quick-pagepost-redirect-plugin/tags/5.2.3/page_post_redirect_plugin.php
¿Cómo entra el código?
Hubo un conjunto de cambios realizado previamente que comprometió una capacidad de actualización para el complemento, pero se eliminó repentinamente, con registros de hace 4 años: Conjunto de cambios 2474557.
Al examinar el sitio web anterior, fue posible correlacionar el complemento con este enlace: Actualizaciones de Anadnet. Esta versión del complemento incluye soporte publicitario incorporado y tiene una función en el código que actualiza el complemento desde su sitio web en lugar del punto final oficial de WordPress.
Al obtener la URL anterior, se envía con un JSON válido que incluye un enlace al complemento/archivo zip de un tarball.
ENLACE: https://anadnet.com/updates/?action=get_metadata&slug=quick-pagepost-redirect-plugin
$ curl -s 'https://anadnet.com/updates/?action=get_metadata&slug=quick-pagepost-redirect-plugin' | awk /last_updated/,0
Se necesita para la salida estándar:
El campo download_url extrae el tarball
$ shasum -a 256 tampered/quick-pagepost-redirect-plugin.zip
SHA256: 19b2c3c07a8bb9601d625964ad520a8f5690bb5860894b354d7c3b59dfb25a68 página rápida/manipulada post-redirect-plugin.zip
El mismo complemento con la misma versión obtenida del repositorio de WordPress
$ shasum -a 256 wordpress_official_repo/quick-pagepost-redirect-plugin.5.2.3.zip
SHA256: 5bbc032c103275e28e4d12625e2ba3cad0db7308d9a35d4e1097332146f77e31 wordpress_official_repo/quick-pagepost-redirect-plugin.5.2.3.zip
Confirmando la versión 5.2.3 de la etiqueta del complemento entre la rama manipulada y wordpress_official_repository:
$ grep -rnP 'Version:\s*[\d\.]{4}' tampered/ wordpress_official_repo/
Correlaciona los cambios usando la herramienta diff(1), y es posible encontrar la capacidad de anuncios inesperados en filter_the_content_in_the_main_loop():
$ diff -uNp wordpress_official_repo/quick-pagepost-redirect-plugin/page_post_redirect_plugin.php tampered/quick-pagepost-redirect-plugin/page_post_redirect_plugin.php > patch.diff
El código difiere entre la misma versión/versión, lo cual no es una buena práctica de publicación. El complemento se ha movido pasivamente a otra “versión” manipulada que incluye su propio actualizador y código publicitario.
Aunque el desarrollador del complemento indica implícitamente en el código a través de ppr_add_notice(), no está claro para los usuarios cómo se ha modificado el complemento.
En el ciclo de lanzamiento, la claridad en el código es un punto de vista crítico para los proyectos de código abierto. Incluso si el proyecto no es completamente de código abierto, el lanzamiento de una nueva característica o actualización debe documentarse adecuadamente en un registro de cambios, incluidos todos los cambios en una nueva rama. Si hay una versión diferente distribuida anteriormente con modelos de licencia gratuitos/pro, es esencial incluir una nueva versión con nombres/etiquetas adecuados. Esto permite a la base de usuarios seguir los cambios y decidir si aceptan las compensaciones de los anuncios o se quedan con ellos. la versión anterior de código abierto sin publicidad.
En el repositorio de WordPress, la versión desde >=5.2.3 no incluye el código publicitario.
Sin embargo, teniendo en cuenta el historial y las prácticas de lanzamiento, cambiar a un complemento alternativo podría ser más seguro y apropiado.
Suscríbase a nuestro blog para mantenerse actualizado sobre las últimas noticias y actualizaciones de seguridad. Si aún no lo ha probado, consulte Imunify360 para obtener una seguridad integral del servidor.
________________________________________________
En este espacio, compartimos las últimas novedades del mundo del Cloud Hosting y las actualizaciones más destacadas de nuestros socios comerciales. Aquí encontrarás tendencias, innovaciones y oportunidades clave que están transformando nuestra industria. 💡🌐
Gracias por acompañarnos en este viaje. 💙 ¡Te invitamos a explorar y ser parte del futuro digital con nosotros!