Introducción
El 7 de mayo de 2024, WP-Firewall, una organización líder en asesoría de seguridad, publicó un informe detallado sobre vulnerabilidades críticas descubiertas en el complemento Uncode Core. Si eres usuario de Uncode, es fundamental que actualices tu complemento principal al menos a la versión 2.8.9 para proteger tu sitio de WordPress de posibles ataques. En esta publicación, analizaremos en profundidad los detalles de estas vulnerabilidades, sus implicaciones y los pasos que se han tomado para mitigarlas.
Acerca del complemento Uncode Core
El complemento Uncode Core, desarrollado por Undsgn, es un componente esencial del tema Uncode, un tema premium muy popular para sitios WooCommerce, con más de 110 000 ventas en ThemeForest. El tema Uncode es famoso por su diseño perfecto en píxeles, lo que lo hace ideal para varios sitios web, incluidos portafolios, agencias, autónomos, blogs y tiendas en línea.
Las vulnerabilidades de seguridad
Los investigadores de seguridad de WP-Firewall identificaron dos vulnerabilidades importantes en el complemento Uncode Core:
1. Eliminación arbitraria autenticada de archivos y directorios
Descripción:Esta vulnerabilidad permite que cualquier usuario autenticado con al menos un rol de suscriptor elimine directorios arbitrarios en el servidor. El problema radica en la función `delete_download`, que carece de los permisos adecuados y de las comprobaciones de nonce. Esta función está asociada a la acción `wp_ajax_uncodefont_delete_download`, lo que permite que los usuarios autenticados la aprovechen.
Detalles técnicos:
función eliminar_descargar() {
si (se establece ($_REQUEST['familia_de_fuentes'])) {
$font_family = $_REQUEST['familia_de_fuentes'];
$font_dir = trailingslashit($this->directorio_de_fuentes).$font_family;
$fontkit_zip = $font_dir.'.zip';
si (@archivo_existe($fontkit_zip)) {
si (!@unlink($fontkit_zip)) {
eco json_encode(matriz(
'error' => sprintf( esc_html__( 'No se pudo eliminar el zip del kit @fontface %1$s.', 'uncode-core' ), $fontkit_zip )
));
morir();
}
}
// No se puede eliminar el directorio porque unzip_file, que lo creó, utiliza WP_Filesystem. Por lo tanto, utilizamos WP_Filesystem para eliminarlo.
$this->setup_wp_filesystem();
sistema de archivos global $wp;
si (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, verdadero);
si (!$eliminar_dir) {
echo json_encode(matriz('error' => $delete_dir['error']));
morir();
}
}
echo json_encode(array('success' => "Descarga eliminada"));
}
morir();
}
incluye/font-system/font-system.php, función delete_download()
La función construye la variable `$font_dir` a partir de la entrada del usuario (`$_REQUEST['font_family']`) sin desinfección, lo que permite el recorrido de directorios y la eliminación arbitraria.
2. Escalada de privilegios autenticada
Descripción:Esta vulnerabilidad permite que cualquier usuario autenticado con un rol mínimo de suscriptor escale sus privilegios a cualquier rol en el sitio de WordPress. Esto se debe a una actualización insegura de WP Option en la función `save_option`, que carece de las comprobaciones de permisos adecuadas.
Detalles técnicos:
función pública save_option() {
si ( se establece ( $_POST['nonce'] ) && wp_verify_nonce ( $_POST['nonce'], 'uncode-core-settings-nonce' ) ) {
si ( se establece( $_POST['valor'] ) && $_POST['valor'] && se establece( $_POST['id_opción'] ) && $_POST['id_opción'] ) {
$autoload = isset( $_POST['carga automática'] ) && $_POST['carga automática'] === 'verdadero' ? verdadero : falso;
actualizar_opcion( $_POST['id_opcion'], $_POST['valor'], $autoload );
---------- CORTE AQUÍ ----------
incluye/configuraciones-core/clase-configuraciones-core.php, función save_option()
El nonce utilizado en esta función puede ser recuperado por cualquier usuario autenticado con acceso al área wp-admin, lo que permite actualizaciones no autorizadas de opciones y escalada de privilegios.
El parche
Para solucionar estas vulnerabilidades, los desarrolladores del complemento Uncode Core lanzaron la versión 2.8.9, que incluye las siguientes correcciones:
– Eliminación arbitraria autenticada de archivos y directorios:Se implementaron comprobaciones de permisos y nonce en la función `delete_download`.
– Autenticación de privilegios:Se aplicaron controles de permiso y nonce en la función `save_option` y se agregó una verificación de lista blanca para claves de opción.
Conclusión
Para garantizar la seguridad de su sitio de WordPress, debe mantenerse actualizado con los últimos parches y avisos de seguridad. Las vulnerabilidades del complemento Uncode Core subrayan la importancia de implementar controles de permisos y nonce adecuados para cualquier acción sensible. Siempre limpie las entradas del usuario y limite el alcance de lo que se puede actualizar o eliminar a través de las acciones del usuario.
Para obtener información más detallada, puede leer el aviso de seguridad completo en el sitio web de WP-Firewall. aquí.
Mantente seguro
WP-Firewall ofrece varias soluciones para la seguridad de WordPress, incluidas auditorías de complementos, monitoreo y respuesta a vulnerabilidades y servicios de seguridad administrados de WordPress. Si eres desarrollador de complementos o investigador de seguridad, considera unirte a WP-Firewall.