Contact Form 7 6.2.4

This page is also available in English.

La versión 6.2.4 de Contact Form 7 está disponible. Esta versión de mantenimiento incluye varias correcciones y mejoras de seguridad. Aunque la vulnerabilidad solo afecta a Contact Form 7 de la versión 6.2 a la 6.2.3, dado que las mejoras de seguridad se aplican a todas las versiones del plugin, recomendamos a todos los usuarios actualizar a la versión 6.2.4.

Descripción del problema

El problema consiste en una vulnerabilidad de carga arbitraria de archivos sin autenticación. Los atacantes pueden combinar varios fallos de Contact Form 7 de la versión 6.2 a la 6.2.3 para subir archivos que normalmente deberían bloquearse mediante la lógica de validación y conservar archivos que normalmente deberían eliminarse inmediatamente después del envío.

En teoría, cualquier formulario que incluya campos para subir archivos y esté alojado en un servidor HTTP configurado para mostrar públicamente el contenido de los directorios puede ser un objetivo.

Shinya Murakami y Jakub Herman detectaron este problema y lo notificaron a través de WPScan.

Efectos secundarios

Para mejorar la seguridad, hemos tenido que introducir cambios que podrían afectar a determinados casos de uso.

wpcf7_antiscript_file_name(), que sanea los nombres de archivo que podrían identificarse como archivos de script ejecutables, ahora utiliza una lista de extensiones permitidas en lugar de la lista de extensiones no permitidas que se utilizaba anteriormente. Si se sube un archivo cuya extensión no figura en la lista de permitidas, wpcf7_antiscript_file_name() convierte automáticamente esa extensión en una alternativa segura.

De forma predeterminada, la lista de extensiones permitidas incluye las siguientes:

["3gp","3gpp","3g2","3gp2","aac","flac","mid","midi","mp3","m4a","m4b","ogg","oga","wav","x-wav","mka","wax","wma","ra","ram","avi","divx","mp4","m4v","mpeg","mpg","mpe","ogv","mov","qt","webm","flv","mkv","asf","asx","wm","wmv","wmx","avif","bmp","gif","heic","heics","heif","heifs","jpg","jpeg","jpe","png","tiff","tif","webp","ico","pdf","txt"]

Puedes personalizar esta lista mediante el gancho de filtro wpcf7_file_extension_safelist, como se muestra a continuación:

add_filter( 'wpcf7_file_extension_safelist', function ( $safelist ) {
	return array_merge( $safelist,  ['zip'] ); // Añade .zip
} );

También se ha modificado wpcf7_unship_uploaded_file(): ahora su segundo argumento, $options, es obligatorio y se ha añadido un tercer argumento, $uploaded_files. Aunque esta función no suele utilizarse habitualmente y la mayoría de los usuarios ni siquiera la conocen, si por alguna razón llamas a wpcf7_unship_uploaded_file() en tu código, no olvides actualizar los argumentos.

Cambios principales

  • Functions-PHP: actualizado a la versión 1.1.0.
  • FormDataTree-PHP: actualizado a la versión 2.0.9.
  • SWV-PHP: actualizado a la versión 2.0.8.
  • Se introducen la función wpcf7_file_extension_safelist() y el gncho de filtro wpcf7_file_extension_safelist.
  • Se mejora wpcf7_antiscript_file_name() mediante una lista de extensiones de archivo permitidas.
  • Se aplica wp_scrub_utf8() al texto objetivo antes de aplicar un patrón de expresión regular con el modificador u (UTF-8).
  • Se mejora wpcf7_unship_uploaded_file() con un tercer parámetro nuevo ($uploaded_files), que se pasa por referencia.

Puedes consultar la lista completa de cambios en GitHub.

Necesita: WordPress 7.1 o superior
Probado hasta: WordPress 7.1.4

» Descarga el plugin «Contact Form 7» desde WordPress.org