{"id":9546,"date":"2026-08-27T12:32:49","date_gmt":"2026-08-27T10:32:49","guid":{"rendered":"https:\/\/www.hostingtg.com\/blog\/?p=9546"},"modified":"2026-08-27T12:32:52","modified_gmt":"2026-08-27T10:32:52","slug":"vulnerabilidad-de-translatepress","status":"publish","type":"post","link":"https:\/\/www.hostingtg.com\/blog\/vulnerabilidad-de-translatepress\/","title":{"rendered":"Vulnerabilidad de TranslatePress: 400.000 sitios de WordPress afectados"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">La <strong>vulnerabilidad de TranslatePress<\/strong> que voy a explicar en este art\u00edculo me parece especialmente preocupante por una raz\u00f3n: bajo determinadas circunstancias, un problema relacionado con el almacenamiento de cadenas de traducci\u00f3n puede terminar exponiendo informaci\u00f3n utilizada para <strong>restablecer la contrase\u00f1a de un <a href=\"https:\/\/www.hostingtg.com\/mantenimiento-web-wordpress\/\">administrador de WordPress<\/a><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y cuando una vulnerabilidad puede desembocar en el acceso a una cuenta administrativa, ya no estamos hablando simplemente de modificar una traducci\u00f3n o provocar un comportamiento extra\u00f1o en una p\u00e1gina.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estamos hablando de la posibilidad de <strong>comprometer completamente una instalaci\u00f3n de WordPress<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, TranslatePress no es precisamente un plugin desconocido. Cuenta con m\u00e1s de <strong>400.000 instalaciones activas<\/strong>, muchas de ellas en proyectos multidioma, tiendas online, webs corporativas o sitios con presencia internacional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que m\u00e1s me llam\u00f3 la atenci\u00f3n cuando revis\u00e9 este problema es precisamente su origen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>El problema nace de algo que, a simple vista, parece bastante inocente:<\/strong> el tratamiento y almacenamiento de las cadenas que TranslatePress necesita para realizar las traducciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bajo unas condiciones concretas, el contenido utilizado por WordPress para recuperar una contrase\u00f1a pod\u00eda pasar por ese sistema de traducci\u00f3n y acabar almacenado. El inconveniente es que una URL de recuperaci\u00f3n de contrase\u00f1a no es una cadena cualquiera: contiene informaci\u00f3n sensible que puede permitir establecer una nueva contrase\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si posteriormente esa informaci\u00f3n puede recuperarse sin necesidad de autenticarse, el impacto cambia por completo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo voy a explicar <strong>c\u00f3mo funciona la vulnerabilidad de TranslatePress, qu\u00e9 instalaciones pueden estar afectadas, qu\u00e9 consecuencias tendr\u00eda una explotaci\u00f3n y qu\u00e9 conviene revisar incluso despu\u00e9s de actualizar el plugin<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n es importante no confundir este problema con otros avisos de seguridad relacionados con TranslatePress. El plugin ha aparecido asociado a distintas <a href=\"https:\/\/www.hostingtg.com\/blog\/wordpress-hackeado\/\">vulnerabilidades e incidentes<\/a> a lo largo del tiempo, y no todos comparten el mismo origen, versiones afectadas o m\u00e9todo de explotaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfEn qu\u00e9 consiste la vulnerabilidad de TranslatePress?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para entender la gravedad del problema primero hay que comprender una caracter\u00edstica b\u00e1sica de TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El plugin necesita procesar y almacenar cadenas para poder ofrecer las traducciones de una web. Eso incluye textos que aparecen en p\u00e1ginas, elementos generados din\u00e1micamente y, dependiendo del funcionamiento de WordPress y de la configuraci\u00f3n del sitio, otro contenido que puede pasar por el sistema de traducci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema aparece cuando dentro de esas cadenas termina informaci\u00f3n que <strong>nunca deber\u00eda quedar expuesta a un usuario no autenticado<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El problema est\u00e1 en las cadenas utilizadas para las traducciones<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, el punto cr\u00edtico est\u00e1 relacionado con el <strong>guardado autom\u00e1tico de cadenas<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TranslatePress puede almacenar textos detectados para que posteriormente puedan traducirse y reutilizarse. Es una funcionalidad completamente l\u00f3gica dentro de un plugin de traducci\u00f3n y, precisamente por eso, el fallo resulta tan interesante desde el punto de vista de la seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No estamos ante una funci\u00f3n cuyo prop\u00f3sito sea administrar usuarios, gestionar contrase\u00f1as o modificar permisos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo, una funcionalidad aparentemente independiente puede terminar interactuando con contenido sensible generado por WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En mi caso, esta es una de las cosas que considero m\u00e1s interesantes de analizar cuando aparece una vulnerabilidad en un plugin: <strong>un fallo no tiene por qu\u00e9 encontrarse directamente en una funci\u00f3n de seguridad para terminar teniendo consecuencias de seguridad<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una cadena de traducci\u00f3n puede parecer inofensiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una URL para recuperar una contrase\u00f1a no lo es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y si ambas terminan pasando por el mismo mecanismo, tenemos un problema.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo puede terminar almacenado un enlace de recuperaci\u00f3n de contrase\u00f1a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se solicita un restablecimiento de contrase\u00f1a en WordPress, el sistema genera un mensaje que contiene un enlace espec\u00edfico para completar el proceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ese enlace incluye la informaci\u00f3n necesaria para que WordPress pueda identificar y validar la recuperaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bajo las condiciones que hacen posible esta vulnerabilidad, ese contenido pod\u00eda pasar por el sistema de traducci\u00f3n de TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como consecuencia, la <strong>URL completa de recuperaci\u00f3n de contrase\u00f1a pod\u00eda terminar almacenada dentro de las tablas utilizadas por el plugin<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde el escenario deja de ser simplemente una filtraci\u00f3n interna.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si esas cadenas almacenadas fueran accesibles exclusivamente para usuarios autorizados, el riesgo ser\u00eda muy diferente. El problema es que determinadas cadenas pod\u00edan recuperarse mediante una acci\u00f3n AJAX accesible sin necesidad de autenticaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso crea una cadena de acontecimientos potencialmente muy seria:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">un atacante provoca un restablecimiento de contrase\u00f1a, la URL pasa por el sistema de traducci\u00f3n, queda almacenada y posteriormente puede ser localizada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>En la pr\u00e1ctica, eso puede terminar en el control completo de WordPress.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo funciona el ataque paso a paso<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A veces una vulnerabilidad parece mucho m\u00e1s complicada cuando se describe \u00fanicamente utilizando t\u00e9rminos como AJAX, tokens, endpoints, tablas o cadenas almacenadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso prefiero verla como una secuencia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No es necesario que el atacante \u201cadivine\u201d la contrase\u00f1a del administrador. El problema consiste precisamente en poder aprovechar el propio mecanismo leg\u00edtimo de recuperaci\u00f3n de WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. El atacante provoca un restablecimiento de contrase\u00f1a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El primer paso consiste en iniciar el proceso normal para recuperar la contrase\u00f1a de una cuenta administrativa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress genera entonces el contenido necesario para realizar ese cambio y prepara el mensaje que deber\u00eda llegar exclusivamente al propietario de la cuenta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En condiciones normales, conocer el nombre de usuario o provocar una solicitud de recuperaci\u00f3n no deber\u00eda ser suficiente para hacerse con la cuenta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El elemento realmente sensible es el <strong>enlace de recuperaci\u00f3n<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. TranslatePress procesa y almacena la cadena<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed entra en juego TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se cumplen las condiciones necesarias, el contenido relacionado con ese correo puede atravesar el mecanismo de traducci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La URL de recuperaci\u00f3n, incluida la informaci\u00f3n necesaria para completar el cambio de contrase\u00f1a, puede terminar almacenada como parte de las cadenas procesadas por el plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este detalle es precisamente lo que convierte una funci\u00f3n de traducci\u00f3n en un posible vector de compromiso de cuentas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No significa que TranslatePress pueda \u201cleer todas las contrase\u00f1as\u201d ni que la contrase\u00f1a actual quede almacenada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema es diferente: <strong>puede quedar expuesto el mecanismo que permite establecer una contrase\u00f1a nueva<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. La informaci\u00f3n puede recuperarse mediante AJAX<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El siguiente paso es el que convierte el almacenamiento en una vulnerabilidad explotable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Determinadas cadenas pod\u00edan consultarse utilizando una acci\u00f3n AJAX accesible sin autenticarse previamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un atacante que supiera qu\u00e9 buscar pod\u00eda intentar localizar la informaci\u00f3n correspondiente al restablecimiento de contrase\u00f1a que acababa de provocar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En otras palabras, el enlace pensado para llegar \u00fanicamente al correo del administrador pod\u00eda terminar disponible por una segunda v\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y esa segunda v\u00eda no ofrec\u00eda las garant\u00edas de acceso que deber\u00edan proteger un dato de este tipo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. El atacante utiliza el enlace y cambia la contrase\u00f1a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez obtenido un enlace v\u00e1lido de recuperaci\u00f3n, el atacante puede utilizar el flujo normal de WordPress para establecer una contrase\u00f1a nueva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si consigue completar ese proceso sobre una cuenta con privilegios administrativos, el problema deja de estar limitado a TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El atacante pasa a disponer de las capacidades que WordPress entrega a un administrador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puede acceder al panel, modificar configuraciones, crear usuarios, instalar componentes o intentar conseguir una persistencia m\u00e1s duradera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso creo que hablar \u00fanicamente de una \u201cfiltraci\u00f3n de cadenas\u201d se queda muy corto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La consecuencia verdaderamente relevante es una posible <strong>toma de control de una cuenta administrativa<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 instalaciones de TranslatePress est\u00e1n realmente afectadas?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed conviene evitar tanto el alarmismo como la falsa tranquilidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La presencia de TranslatePress en una web <strong>no implica autom\u00e1ticamente que esa instalaci\u00f3n pudiera explotarse mediante este fallo<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deben darse unas condiciones determinadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso reduce la superficie vulnerable respecto al n\u00famero total de instalaciones, pero no convierte el problema en irrelevante.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El guardado autom\u00e1tico de cadenas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las condiciones est\u00e1 relacionada con el sistema utilizado por TranslatePress para guardar autom\u00e1ticamente las cadenas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan las condiciones asociadas a este fallo, esa funcionalidad debe encontrarse activa para que la informaci\u00f3n termine almacen\u00e1ndose de la manera necesaria para la explotaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es adem\u00e1s una configuraci\u00f3n especialmente importante porque el guardado autom\u00e1tico se utiliza de forma habitual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso, simplemente pensar \u201cyo nunca he cambiado esa opci\u00f3n\u201d no significa necesariamente que la instalaci\u00f3n est\u00e9 fuera de riesgo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La importancia del idioma configurado en la cuenta del administrador<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Existe una segunda condici\u00f3n especialmente espec\u00edfica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El idioma configurado en el perfil del administrador objetivo debe coincidir con <strong>uno de los idiomas secundarios que se encuentran publicados en la web<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto significa que no todos los administradores de una misma instalaci\u00f3n tienen necesariamente las mismas condiciones de exposici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, una web puede tener varios idiomas publicados mientras cada usuario administrativo utiliza una configuraci\u00f3n de idioma diferente en su perfil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para saber si una instalaci\u00f3n encaja en el escenario vulnerable no basta con comprobar que TranslatePress est\u00e1 instalado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay que revisar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>la versi\u00f3n del plugin;<\/li>\n\n\n\n<li>la configuraci\u00f3n relacionada con las cadenas;<\/li>\n\n\n\n<li>los idiomas publicados;<\/li>\n\n\n\n<li>el idioma configurado en los perfiles administrativos.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Por qu\u00e9 una explotaci\u00f3n condicionada sigue siendo preocupante<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este punto me parece importante porque en seguridad se produce muchas veces una reacci\u00f3n bastante predecible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando alguien lee que una vulnerabilidad necesita \u201cunas condiciones concretas\u201d, inmediatamente piensa que el riesgo es peque\u00f1o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No necesariamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Estas condiciones no hacen que el problema sea menor por definici\u00f3n.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que hacen es reducir el n\u00famero de instalaciones explotables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero cuando el punto de partida son cientos de miles de webs, incluso un porcentaje relativamente peque\u00f1o puede traducirse en una superficie de ataque considerable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, la pregunta correcta no es:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201c\u00bfTodas las webs con TranslatePress son vulnerables?\u201d<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">La pregunta correcta es:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u201c\u00bfMi web cumple las condiciones necesarias para que este fallo pueda afectarme?\u201d<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Y si la respuesta no est\u00e1 clara, lo razonable es actualizar y revisar la instalaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 puede hacer un atacante si consigue acceso de administrador?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando una vulnerabilidad permite cambiar la contrase\u00f1a de un administrador, el impacto no termina en el momento de iniciar sesi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En realidad, ah\u00ed empieza la parte m\u00e1s peligrosa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un administrador de WordPress dispone de permisos suficientes para realizar cambios profundos sobre el sitio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso significa que una cuenta comprometida puede convertirse en la puerta de entrada para ataques que sobrevivan incluso despu\u00e9s de que la vulnerabilidad original haya sido corregida.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Crear nuevos usuarios y mantener el acceso<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las primeras cosas que puede hacer un atacante es crear nuevas cuentas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto resulta especialmente peligroso porque el propietario de la web puede solucionar el problema inicial, recuperar su contrase\u00f1a y pensar que todo ha terminado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mientras tanto, puede existir otra cuenta administrativa creada durante el compromiso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso recomiendo revisar siempre la lista completa de usuarios despu\u00e9s de un incidente de estas caracter\u00edsticas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay que comprobar especialmente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>administradores que no reconozcamos;<\/li>\n\n\n\n<li>nuevas cuentas creadas recientemente;<\/li>\n\n\n\n<li>usuarios cuyos privilegios hayan cambiado;<\/li>\n\n\n\n<li>direcciones de correo modificadas;<\/li>\n\n\n\n<li>cuentas que deber\u00edan estar desactivadas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cambiar \u00fanicamente nuestra propia contrase\u00f1a no garantiza que el atacante haya perdido el acceso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instalar plugins, modificar archivos o introducir puertas traseras<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El acceso administrativo tambi\u00e9n puede utilizarse para instalar componentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un atacante podr\u00eda a\u00f1adir un plugin malicioso, modificar funcionalidades existentes o aprovechar otras capacidades disponibles desde WordPress para establecer mecanismos alternativos de acceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde entran las conocidas <strong>puertas traseras o backdoors<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La idea es sencilla: si el atacante sospecha que la vulnerabilidad de TranslatePress terminar\u00e1 siendo corregida, puede intentar crear una segunda forma de entrar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podr\u00eda modificar contenidos, redireccionar visitantes, insertar spam, alterar enlaces o preparar ataques dirigidos contra los usuarios del sitio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En una tienda online o en una web corporativa, las consecuencias pueden ir bastante m\u00e1s all\u00e1 del propio WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Por qu\u00e9 actualizar puede no ser suficiente si WordPress ya fue comprometido<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este es uno de los puntos que m\u00e1s conviene dejar claros.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Actualizar TranslatePress corrige la vulnerabilidad, pero no necesariamente revierte todo lo que haya ocurrido antes de la actualizaci\u00f3n.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imaginemos que un atacante consigui\u00f3 entrar ayer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoy actualizamos el plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El vector de entrada original puede quedar cerrado, pero un usuario administrativo creado por el atacante sigue existiendo. Lo mismo ocurrir\u00eda con una puerta trasera o una modificaci\u00f3n realizada previamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso hay que distinguir dos escenarios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si simplemente tenemos una versi\u00f3n vulnerable y no existen indicios de explotaci\u00f3n, actualizar r\u00e1pidamente es la prioridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si existen se\u00f1ales de compromiso, la respuesta debe ser mucho m\u00e1s completa y tratar el sitio como un WordPress potencialmente comprometido.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo solucionar la vulnerabilidad de TranslatePress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La medida m\u00e1s importante es tambi\u00e9n la m\u00e1s evidente: <strong>actualizar TranslatePress<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan la informaci\u00f3n correspondiente a este fallo, las instalaciones afectadas deber\u00edan utilizar como m\u00ednimo <strong>TranslatePress 3.3.2<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mi recomendaci\u00f3n, sin embargo, no ser\u00eda instalar deliberadamente una versi\u00f3n antigua simplemente porque sea la primera que incorpora la correcci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Siempre que no exista una incompatibilidad conocida, prefiero actualizar a <strong>la \u00faltima versi\u00f3n estable disponible<\/strong>, despu\u00e9s de realizar las comprobaciones habituales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actualiza TranslatePress a una versi\u00f3n corregida<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de modificar una web profesional conviene contar con una copia de seguridad reciente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En instalaciones especialmente cr\u00edticas, tambi\u00e9n puede ser recomendable comprobar primero la actualizaci\u00f3n en un entorno de staging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A partir de ah\u00ed:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Accede al panel de WordPress.<\/li>\n\n\n\n<li>Dir\u00edgete a la secci\u00f3n de plugins.<\/li>\n\n\n\n<li>Comprueba la versi\u00f3n instalada de TranslatePress.<\/li>\n\n\n\n<li>Actualiza el plugin.<\/li>\n\n\n\n<li>Verifica que la actualizaci\u00f3n se haya completado correctamente.<\/li>\n\n\n\n<li>Comprueba que las <a href=\"https:\/\/www.hostingtg.com\/blog\/como-traducir-una-pagina-web-en-wordpress-a-otro-idioma\/\">traducciones y funcionalidades principales de la web<\/a> contin\u00faan funcionando.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Actualizar los plugins no deber\u00eda depender \u00fanicamente de que aparezcan nuevas funciones.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Creo que <a href=\"https:\/\/es.wordpress.org\/plugins\/translatepress-multilingual\/\" target=\"_blank\" rel=\"noopener\">esta vulnerabilidad<\/a> es un ejemplo especialmente claro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una nueva versi\u00f3n puede parecer poco interesante porque no incorpora ninguna caracter\u00edstica que necesitemos. Sin embargo, esa misma actualizaci\u00f3n puede estar solucionando un fallo capaz de comprometer una cuenta administrativa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso las actualizaciones de seguridad forman parte del mantenimiento y no deber\u00edan considerarse una tarea opcional.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comprueba la versi\u00f3n instalada despu\u00e9s de actualizar<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Otro error bastante habitual es pulsar el bot\u00f3n de actualizaci\u00f3n y dar por supuesto que el proceso ha terminado correctamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo prefiero comprobarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de actualizar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>vuelve a la ficha del plugin;<\/li>\n\n\n\n<li>confirma la versi\u00f3n instalada;<\/li>\n\n\n\n<li>revisa que no aparezcan errores;<\/li>\n\n\n\n<li>comprueba que TranslatePress contin\u00faa funcionando;<\/li>\n\n\n\n<li>limpia las cach\u00e9s si fuera necesario;<\/li>\n\n\n\n<li>revisa el sitio desde fuera del panel.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si utilizas sistemas de despliegue, gesti\u00f3n centralizada o actualizaciones autom\u00e1ticas, tambi\u00e9n conviene verificar que la versi\u00f3n realmente instalada en producci\u00f3n coincide con la esperada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 revisar si tu web pudo haber estado expuesta<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si la web ha utilizado una versi\u00f3n afectada y adem\u00e1s cumpl\u00eda las condiciones necesarias para la explotaci\u00f3n, yo no terminar\u00eda el trabajo simplemente actualizando TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Har\u00eda algunas comprobaciones adicionales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No porque exista necesariamente un ataque, sino porque son revisiones relativamente sencillas que pueden detectar se\u00f1ales evidentes de compromiso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Revisa las cuentas de administrador<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Empieza por <strong>Usuarios<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comprueba todas las cuentas con privilegios elevados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Preg\u00fantate:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00bfReconozco a todos los administradores?<\/li>\n\n\n\n<li>\u00bfHay alguna cuenta creada recientemente?<\/li>\n\n\n\n<li>\u00bfAlg\u00fan usuario tiene ahora m\u00e1s permisos de los que deber\u00eda?<\/li>\n\n\n\n<li>\u00bfHa cambiado alguna direcci\u00f3n de correo?<\/li>\n\n\n\n<li>\u00bfExisten usuarios antiguos que ya no deber\u00edan tener acceso?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si encuentras una cuenta que no puedes justificar, no deber\u00edas limitarte a eliminarla sin m\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es una se\u00f1al de que alguien podr\u00eda haber conseguido acceso y, por tanto, merece una investigaci\u00f3n m\u00e1s amplia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n recomiendo renovar las credenciales administrativas si existen motivos razonables para pensar que hubo un compromiso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Busca plugins, usuarios y cambios que no reconozcas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Revisa igualmente los plugins instalados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un componente desconocido, un plugin que nadie del equipo recuerda haber instalado o cambios inesperados en la configuraci\u00f3n pueden ser indicadores importantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conviene revisar tambi\u00e9n contenidos y configuraciones sensibles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>p\u00e1ginas modificadas;<\/li>\n\n\n\n<li>nuevos administradores;<\/li>\n\n\n\n<li>plugins desconocidos;<\/li>\n\n\n\n<li>redirecciones;<\/li>\n\n\n\n<li>c\u00f3digo a\u00f1adido;<\/li>\n\n\n\n<li>cambios en opciones cr\u00edticas;<\/li>\n\n\n\n<li>comportamientos extra\u00f1os del sitio.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dependiendo de la importancia de la web y de las evidencias encontradas, puede ser necesario analizar registros y archivos con mucho m\u00e1s detalle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La cuesti\u00f3n fundamental es no confundir <strong>\u201cvulnerabilidad corregida\u201d<\/strong> con <strong>\u201csitio limpio\u201d<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Son dos cosas diferentes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Activa autenticaci\u00f3n en dos pasos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n aprovechar\u00eda este incidente para activar <strong>autenticaci\u00f3n en dos pasos o 2FA<\/strong> en las cuentas administrativas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una contrase\u00f1a fuerte contin\u00faa siendo necesaria, pero el segundo factor a\u00f1ade otra barrera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Precisamente cuando analizamos vulnerabilidades relacionadas con procesos de recuperaci\u00f3n de cuentas, resulta evidente la importancia de no depender exclusivamente de una contrase\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El 2FA no sustituye a las actualizaciones ni convierte una instalaci\u00f3n vulnerable en segura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es una capa adicional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y en seguridad WordPress prefiero trabajar mediante capas: actualizaciones, permisos adecuados, autenticaci\u00f3n fuerte, copias de seguridad, supervisi\u00f3n y revisi\u00f3n peri\u00f3dica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 nos ense\u00f1a esta vulnerabilidad sobre la seguridad de WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para m\u00ed, la conclusi\u00f3n de este caso va bastante m\u00e1s all\u00e1 de TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En ocasiones se habla de los plugins como si instalar extensiones convirtiera autom\u00e1ticamente a WordPress en inseguro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No estoy de acuerdo con esa simplificaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los plugins son precisamente una de las razones por las que WordPress resulta tan flexible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema aparece cuando instalamos componentes y despu\u00e9s olvidamos que forman parte de la superficie que debemos mantener.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Los plugins aumentan la superficie que debemos mantener<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WordPress no es inseguro por utilizar plugins, pero cada plugin ampl\u00eda la superficie que debemos mantener y supervisar.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada componente incorpora c\u00f3digo, funcionalidades, permisos, integraciones y puntos de interacci\u00f3n con el resto de la instalaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso no significa que debamos instalar cero plugins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Significa que debemos saber qu\u00e9 tenemos instalado y mantenerlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una web con veinte plugins perfectamente mantenidos puede tener un perfil de riesgo muy diferente al de una web con cinco extensiones abandonadas desde hace a\u00f1os.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo revisar\u00eda peri\u00f3dicamente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>plugins realmente necesarios;<\/li>\n\n\n\n<li>actualizaciones disponibles;<\/li>\n\n\n\n<li>componentes que ya no se utilizan;<\/li>\n\n\n\n<li>plugins sin mantenimiento;<\/li>\n\n\n\n<li>cuentas administrativas;<\/li>\n\n\n\n<li>copias de seguridad;<\/li>\n\n\n\n<li>medidas de autenticaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Reducir superficie innecesaria suele ser una de las medidas de seguridad m\u00e1s sencillas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actualizar no consiste \u00fanicamente en conseguir nuevas funciones<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Muchas personas siguen viendo una actualizaci\u00f3n como algo relacionado principalmente con mejoras visuales o nuevas caracter\u00edsticas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En seguridad, esa mentalidad resulta peligrosa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos tener una contrase\u00f1a excelente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos cambiar la direcci\u00f3n de acceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos proteger el login frente a intentos automatizados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos aplicar multitud de medidas de hardening.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero una vulnerabilidad cr\u00edtica dentro de un componente instalado puede proporcionar un camino completamente distinto para atacar la web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso es precisamente lo interesante de este caso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La seguridad no depende de una \u00fanica medida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depende de mantener todas las capas razonablemente actualizadas y controladas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dudas de la comunidad<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 vulnerabilidad tiene TranslatePress?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El fallo que tratamos en este art\u00edculo est\u00e1 relacionado con el procesamiento y almacenamiento de cadenas utilizadas por TranslatePress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bajo determinadas condiciones, un enlace generado por WordPress para recuperar una contrase\u00f1a pod\u00eda pasar por el sistema de traducci\u00f3n y terminar almacenado. Si posteriormente esa informaci\u00f3n era recuperada sin autenticaci\u00f3n, un atacante pod\u00eda llegar a utilizarla para cambiar la contrase\u00f1a de una cuenta administrativa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No debe confundirse con otros fallos o incidentes de TranslatePress que tengan mecanismos diferentes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 versiones de TranslatePress est\u00e1n afectadas?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para esta vulnerabilidad concreta, la referencia m\u00ednima de correcci\u00f3n que estamos manejando es <strong>TranslatePress 3.3.2<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aun as\u00ed, mi recomendaci\u00f3n es comprobar cu\u00e1l es la \u00faltima versi\u00f3n estable disponible y utilizarla siempre que sea compatible con la instalaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, no conviene aplicar las versiones afectadas de una vulnerabilidad distinta a este problema. TranslatePress ha tenido distintos avisos de seguridad y cada uno puede afectar a ramas diferentes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCualquier web con TranslatePress puede ser atacada?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La explotaci\u00f3n requiere unas condiciones concretas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entre ellas se encuentra el guardado autom\u00e1tico de cadenas y una determinada relaci\u00f3n entre el idioma configurado para el administrador objetivo y los idiomas secundarios publicados en la web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso la mera presencia de TranslatePress no demuestra que una web fuera explotable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero si utilizas una versi\u00f3n afectada, la opci\u00f3n prudente sigue siendo actualizar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfPuede esta vulnerabilidad dar acceso de administrador?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La consecuencia m\u00e1s grave es precisamente esa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si el atacante consigue recuperar un enlace v\u00e1lido de restablecimiento correspondiente a una cuenta administrativa, puede llegar a establecer una contrase\u00f1a nueva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A partir de ese momento dispondr\u00eda de los privilegios asociados a esa cuenta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso considero que el impacto potencial es mucho mayor que el de una simple exposici\u00f3n de informaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfActualizar TranslatePress soluciona completamente el problema?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Depende.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la vulnerabilidad nunca fue explotada, cerrar el fallo mediante la actualizaci\u00f3n es la acci\u00f3n fundamental.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si un atacante ya consigui\u00f3 acceder al sitio antes de actualizar, instalar la versi\u00f3n corregida no elimina autom\u00e1ticamente usuarios creados, puertas traseras, plugins maliciosos o modificaciones realizadas durante el acceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando existen indicios de compromiso hay que revisar la instalaci\u00f3n completa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfEs seguro seguir utilizando TranslatePress?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La existencia de una vulnerabilidad no significa autom\u00e1ticamente que un plugin deba dejar de utilizarse para siempre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los problemas de seguridad pueden aparecer en pr\u00e1cticamente cualquier software suficientemente complejo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo importante es c\u00f3mo se corrigen, la rapidez con la que se publican actualizaciones y, sobre todo, que los administradores mantengan sus instalaciones al d\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si utilizo TranslatePress, mi prioridad ser\u00eda tener instalada una versi\u00f3n corregida y mantener el plugin actualizado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Actualizar TranslatePress y revisar WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La vulnerabilidad de TranslatePress que hemos analizado demuestra hasta qu\u00e9 punto una funci\u00f3n aparentemente alejada de la seguridad puede terminar afectando a uno de los procesos m\u00e1s sensibles de WordPress: la recuperaci\u00f3n de una contrase\u00f1a administrativa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo preocupante no es \u00fanicamente que determinada informaci\u00f3n pueda almacenarse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es la secuencia completa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un atacante puede provocar un restablecimiento, aprovechar el procesamiento de las cadenas, intentar recuperar la informaci\u00f3n almacenada y utilizar el enlace resultante para establecer una nueva contrase\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la cuenta afectada es administrativa, las consecuencias pueden incluir desde la creaci\u00f3n de nuevos usuarios hasta la instalaci\u00f3n de componentes maliciosos o mecanismos de persistencia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso no significa que todas las instalaciones con TranslatePress hayan sido explotables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las condiciones importan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero tampoco utilizar\u00eda esas condiciones como excusa para retrasar una actualizaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cuando utilizamos WordPress profesionalmente, mantener los plugins actualizados deber\u00eda formar parte del mantenimiento ordinario de la web, no ser una reacci\u00f3n excepcional cuando aparece una alerta cr\u00edtica.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, actualizar TranslatePress es el primer paso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y si la web pudo haber estado expuesta, yo a\u00f1adir\u00eda como m\u00ednimo una revisi\u00f3n de usuarios administrativos, plugins instalados, cambios inesperados y mecanismos de autenticaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Porque cerrar la puerta por la que pudo entrar un atacante es imprescindible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero, si ya entr\u00f3, tambi\u00e9n debemos comprobar qu\u00e9 hizo despu\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Opini\u00f3n Personal<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este tipo de vulnerabilidades me parecen especialmente preocupantes porque demuestran que un problema de seguridad puede aparecer en una funci\u00f3n que, en principio, no parece tener ninguna relaci\u00f3n directa con contrase\u00f1as o accesos administrativos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso de TranslatePress, lo que m\u00e1s me llama la atenci\u00f3n es precisamente eso: una funcionalidad relacionada con el tratamiento y almacenamiento de cadenas de traducci\u00f3n puede terminar exponiendo informaci\u00f3n suficientemente sensible como para facilitar el acceso a una cuenta de administrador de WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y ah\u00ed est\u00e1, para m\u00ed, la verdadera gravedad del problema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No hablamos \u00fanicamente de que un atacante pueda modificar un texto o provocar un error puntual. Si consigue acceso administrativo, puede crear nuevos usuarios, instalar plugins, cambiar configuraciones, modificar contenidos o intentar mantener el acceso incluso despu\u00e9s de que la vulnerabilidad haya sido corregida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n creo que este caso sirve para recordar algo que muchas veces se pasa por alto: <strong>actualizar los plugins no consiste solamente en conseguir nuevas funciones<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una actualizaci\u00f3n que aparentemente no aporta nada interesante puede estar solucionando un fallo cr\u00edtico. Por eso considero que mantener WordPress, sus plugins y sus temas actualizados deber\u00eda formar parte del mantenimiento habitual de cualquier web profesional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, aunque una vulnerabilidad necesite unas condiciones concretas para poder explotarse, no creo que eso deba generar una falsa sensaci\u00f3n de seguridad. Cuando un plugin tiene cientos de miles de instalaciones activas, incluso un porcentaje reducido de webs vulnerables puede representar una superficie de ataque importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mi recomendaci\u00f3n es sencilla: mantener TranslatePress actualizado, revisar peri\u00f3dicamente las cuentas administrativas y utilizar medidas adicionales como la autenticaci\u00f3n en dos pasos siempre que sea posible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y ahora me gustar\u00eda conocer tu opini\u00f3n: <strong>\u00bfutilizas TranslatePress en alguna de tus webs? \u00bfCrees que prestamos suficiente atenci\u00f3n a las actualizaciones de seguridad de los plugins? D\u00e9jame tu experiencia y tus dudas en los comentarios.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La vulnerabilidad de TranslatePress que voy a explicar en este art\u00edculo me parece especialmente preocupante por una raz\u00f3n: bajo determinadas circunstancias, un problema relacionado con el almacenamiento de cadenas de traducci\u00f3n puede terminar exponiendo informaci\u00f3n utilizada para restablecer la contrase\u00f1a de un administrador de WordPress. Y cuando una vulnerabilidad puede desembocar en el acceso a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9547,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[317,236,1476,1272,197],"class_list":["post-9546","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","tag-actualizacion","tag-seguridad","tag-translatepress","tag-vulnerabilidad","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts\/9546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/comments?post=9546"}],"version-history":[{"count":1,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts\/9546\/revisions"}],"predecessor-version":[{"id":9548,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts\/9546\/revisions\/9548"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/media\/9547"}],"wp:attachment":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/media?parent=9546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/categories?post=9546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/tags?post=9546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}