El 3 de agosto de 2021, el equipo de Wordfence Threat Intelligence inició el proceso de divulgación de dos vulnerabilidades que descubrimos en el Gutenberg Template Library & Redux Framework complemento , que está instalado en más de 1 millón de sitios de WordPress. Una vulnerabilidad permitía a los usuarios con permisos más bajos, como los contribuyentes, instalar y activar complementos arbitrarios y eliminar cualquier publicación o página a través de la API REST. Una segunda vulnerabilidad permitió a atacantes no autenticados acceder a información potencialmente sensible sobre la configuración de un sitio.
El editor del complemento, Redux.io, respondió casi de inmediato a nuestro contacto inicial y proporcionamos una divulgación completa el mismo día, el 3 de agosto de 2021. Se lanzó una versión parcheada del complemento, 4.2.13, el 11 de agosto de 2021.
Los usuarios de Wordfence Premium recibieron una regla de firewall para protegerse contra la vulnerabilidad dirigida a la API REST el 3 de agosto de 2021. Los sitios que aún ejecutan la versión gratuita de Wordfence recibirán la misma protección después de 30 días, el 2 de septiembre de 2021.
Descripción: Autorización incorrecta que conduce a la instalación arbitraria de complementos y a la eliminación de publicaciones
Complemento afectado: biblioteca de plantillas de Gutenberg y marco de Redux
Plugin Slug: redux-framework
Versiones afectadas: <= 4.2.11
CVE ID: CVE-2021-38312
Puntaje CVSS: 7.1 (alto)
CVSS Vector: CVSS: 3.1 / AV: N / AC: L / PR: L / UI: N / S: U / C: N / I: H / A: L
Investigador / es: Ramuel Gall
Versión completamente : parcheada 4.2.13
El complemento Gutenberg Template Library & Redux Framework permite a los propietarios de sitios agregar bloques y plantillas de bloques para ampliar la funcionalidad de un sitio eligiéndolos de una biblioteca. Para hacer esto, utiliza la API REST de WordPress para procesar solicitudes para listar e instalar bloques disponibles, administrar bloques existentes y más.
Mientras que los puntos finales de la API REST registrados bajo el redux/v1/templates/
REST La ruta usó un permission_callback
para verificar los permisos de un usuario, esta devolución de llamada solo verificaba si el usuario que envió la solicitud tenía o no la edit_posts
capacidad. Los usuarios con permisos más bajos en los que no se debe confiar plenamente para la funcionalidad implementada, como colaboradores y autores, tienen esta capacidad.
Esto hizo posible que un colaborador instalara no solo plantillas de bloque sino cualquier complemento en el repositorio de WordPress a través de la redux/v1/templates/plugin-install
endpoint, aunque solo los complementos en los que el archivo principal coincidía con ciertos criterios se activarían con éxito. Si bien esto no se puede usar directamente para apoderarse de un sitio, un atacante podría usar esta funcionalidad para instalar y activar un complemento vulnerable o una combinación de complementos y usarlo para obtener más acceso.
También era posible para un usuario de nivel colaborador eliminar cualquier publicación o página utilizando el redux/v1/templates/delete_saved_block
punto final. Los puntos finales adicionales registrados bajo esta ruta REST también permitieron la administración de licencias para el complemento Redux, al que los usuarios con menos privilegios no deberían poder acceder.
Descripción: Divulgación de información confidencial no autenticada
Complemento afectado: biblioteca de plantillas de Gutenberg y marco de Redux
Plugin Slug: redux-framework
Versiones afectadas: <= 4.2.11
CVE ID: CVE-2021-38314
Puntaje CVSS: 5.3 (medio)
CVSS Vector: CVSS: 3.1 / AV: N / AC: L / PR: N / UI: N / S: U / C: L / E: N / A: N
Investigador / es: Ramuel Gall
Versión completamente : parcheada 4.2.13
El complemento Gutenberg Template Library & Redux Framework registró varias acciones AJAX disponibles para usuarios no autenticados en el includes
funcionar en redux-core/class-redux-core.php
que eran exclusivos de un sitio determinado, pero deterministas y predecibles.
Uno de estos, el $hash_arg
, se basó en un hash md5 de la URL del sitio con una “sal” conocida de “-redux”. Por ejemplo, un sitio con la URL “http: // examplesite [.] Com /” tendría una $hash_arg
de “901804a230b5e6399d82dcd782395849” y, por tanto, una acción AJAX de wp_ajax_nopriv_901804a230b5e6399d82dcd782395849
estaría registrado en ese sitio.
348 349 350 351 352 353 354 | $support_hash = md5( md5( Redux_Functions_Ex::hash_key() . '-redux' ) . '-support' ); add_action( 'wp_ajax_nopriv_' . $support_hash, array( 'Redux_Helpers', 'support_args' ) ); add_action( 'wp_ajax_' . $support_hash, array( 'Redux_Helpers', 'support_args' ) ); $hash_arg = md5( trailingslashit( network_site_url() ) . '-redux' ); add_action( 'wp_ajax_nopriv_' . $hash_arg, array( 'Redux_Helpers', 'hash_arg' ) ); add_action( 'wp_ajax_' . $hash_arg, array( 'Redux_Helpers', 'hash_arg' ) ); add_action( 'wp_ajax_redux_support_hash', array( 'Redux_Functions', 'support_hash' ) ); |
El envío de una solicitud AJAX con esta acción resultó en una respuesta que contenía un segundo hash.
1901 1902 1903 1904 | public static function hash_arg() { echo esc_html( md5( Redux_Functions_Ex::hash_key() . '-redux' ) ); die(); } |
Con base en esto, fue posible determinar cuál $support_hash
para un sitio sería tomando el hash devuelto en la respuesta del $hash_arg
Acción AJAX, agregando “-support” como “salt” y tomando el hash md5 de ese valor.
Esta $support_hash
La acción AJAX, que también estaba disponible para usuarios no autenticados, denominada support_args
funcionar en redux-core/inc/classes/class-redux-helpers.php
, que devolvió información potencialmente confidencial, como la versión de PHP, complementos activos en el sitio y sus versiones, y un hash md5 sin sal del sitio AUTH_KEY
y SECURE_AUTH_KEY
.
Esto sería más útil en los casos en que se instaló un complemento independiente con una vulnerabilidad adicional, ya que un atacante podría usar la información para ahorrar tiempo y planificar una intrusión.
Cronología
3 de agosto de 2021 : Wordfence Threat Intelligence termina de analizar el complemento Gutenberg Template Library y Redux Framework. Publicamos una regla de firewall para los usuarios de Wordfence Premium e iniciamos el proceso de divulgación. El desarrollador del complemento responde y proporcionamos una divulgación completa.
11 de agosto de 2021 : una versión parcheada del complemento, 4.2.13, está disponible.
2 de septiembre de 2021 : la regla de firewall está disponible para los usuarios gratuitos de Wordfence.
Conclusión
En la publicación de hoy, cubrimos una vulnerabilidad de alta gravedad en la biblioteca de plantillas de Gutenberg y el marco de Redux que permitía a los usuarios de nivel colaborador instalar y activar complementos y eliminar publicaciones y páginas de un sitio, así como una vulnerabilidad de menor gravedad que revelaba potencialmente sensibles. información. Si bien ninguno de estos podría usarse directamente para apoderarse de un sitio, ambas vulnerabilidades podrían ser herramientas útiles en manos de un atacante experto.
Los Wordfence Premium usuarios de han estado protegidos contra la vulnerabilidad de la API REST desde el 3 de agosto de 2021. Los sitios que aún ejecutan la versión gratuita de Wordfence recibirán la misma protección mañana, 2 de septiembre de 2021.
Recomendamos encarecidamente que todos los usuarios actualicen a la última versión del complemento, 4.2.14 a partir de este escrito, lo antes posible. Si conoce a amigos o colegas que estén usando este complemento, le recomendamos que comparta este artículo con ellos.