{"id":363,"date":"2026-10-22T08:45:28","date_gmt":"2026-10-22T12:45:28","guid":{"rendered":"https:\/\/juredev.com\/blog\/?p=363"},"modified":"2026-10-22T08:45:29","modified_gmt":"2026-10-22T12:45:29","slug":"php2shell-cabeza-fria-pero-a-parchear","status":"publish","type":"post","link":"https:\/\/juredev.com\/blog\/2026\/10\/php2shell-cabeza-fria-pero-a-parchear\/","title":{"rendered":"PHP2Shell: cabeza fr\u00eda, pero a parchear"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Qu\u00e9 pas\u00f3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El 21 de octubre de 2026, el proyecto PHP public\u00f3 parches de emergencia para dos vulnerabilidades cr\u00edticas en el n\u00facleo del lenguaje, conocidas como PHP2Shell: CVE-2026-109618 y CVE-2026-109619. Ambas tienen una puntuaci\u00f3n de 9.2 en CVSS v4.0 y permiten ejecutar c\u00f3digo de forma remota, sin autenticaci\u00f3n, con los permisos del usuario que corre el servidor web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los detalles se filtraron un d\u00eda antes de la divulgaci\u00f3n prevista, junto con una puntuaci\u00f3n de 10.0 que PHP Foundation luego aclar\u00f3 que era incorrecta. Esa filtraci\u00f3n explica parte del ruido: la alarma lleg\u00f3 antes que la explicaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dos fallos distintos, no uno<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque se habla de \u00abla vulnerabilidad\u00bb en singular, son dos fallos con causas diferentes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CVE-2026-109618, corrupci\u00f3n por falta de memoria (OOM). Si PHP se queda sin memoria justo mientras prepara los datos de una petici\u00f3n, esos datos quedan a medio inicializar y la limpieza posterior los trata como v\u00e1lidos.<\/li>\n\n\n\n<li>CVE-2026-109619, estado global obsoleto. Un worker puede conservar informaci\u00f3n de una petici\u00f3n despu\u00e9s de liberar la memoria que la respaldaba, y la siguiente petici\u00f3n que atiende ese mismo worker la usa. Este fallo se asocia adem\u00e1s con filtraci\u00f3n de memoria (por ejemplo contrase\u00f1as, tokens o claves de otras peticiones).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Un detalle que explica por qu\u00e9 es tan serio: ambos se activan mientras PHP procesa la petici\u00f3n, antes de que se ejecute el c\u00f3digo de tu aplicaci\u00f3n. Por eso el WordPress, la tienda o el panel que corras encima no cambia la exposici\u00f3n: lo que importa es la versi\u00f3n de PHP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A qui\u00e9n afecta y a qui\u00e9n no<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El riesgo est\u00e1 en los servidores web que ejecutan PHP: PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP y LiteSpeed. Ah\u00ed viven, entre otros, los sitios WordPress, Drupal, Joomla o Magento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si no administras ning\u00fan servidor, tu PC y tu m\u00f3vil no necesitan ning\u00fan cambio, y no hay nada que borrar ni desinstalar. Lo mismo vale si tienes PHP en tu equipo solo para programar o para la l\u00ednea de comandos, sin un servidor web expuesto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso s\u00ed, \u00abno me afecta a m\u00ed\u00bb no es lo mismo que \u00abno afecta a nadie\u00bb. Si un sitio que usas est\u00e1 sin parchear, el atacante apunta a ese servidor, y una de las fallas puede filtrar datos de otras peticiones. Tu dispositivo est\u00e1 bien; lo que podr\u00eda estar expuesto son tus cuentas en ese sitio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Si administras servidores: actualiza<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La \u00fanica soluci\u00f3n completa es actualizar PHP, y el propio proyecto lo dice en ambos avisos. Estas son las versiones corregidas:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Rama de PHP<\/th><th>Estado<\/th><th>Versi\u00f3n parcheada<\/th><\/tr><tr><td>8.5<\/td><td>Soporte activo<\/td><td>8.5.12<\/td><\/tr><tr><td>8.4<\/td><td>Soporte activo<\/td><td>8.4.27<\/td><\/tr><tr><td>8.3<\/td><td>Solo parches de seguridad<\/td><td>8.3.36<\/td><\/tr><tr><td>8.2<\/td><td>Solo parches de seguridad<\/td><td>8.2.35<\/td><\/tr><tr><td>8.1 y anteriores<\/td><td>Fin de vida<\/td><td>Sin parche del proyecto PHP<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Si usas 8.1 o anterior, el proyecto PHP no publica correcci\u00f3n. Hay que migrar o pedir backports a tu distribuci\u00f3n o proveedor de soporte extendido; AlmaLinux, por ejemplo, ya public\u00f3 paquetes parchados para todos sus streams. Verifica adem\u00e1s la versi\u00f3n de PHP que realmente atiende tu sitio, que no siempre es la que muestra la consola.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si no puedes actualizar hoy, hay una mitigaci\u00f3n parcial: desactivar la carga de progreso de sesi\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>session.upload_progress.enabled = 0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ponla en php.ini o en la configuraci\u00f3n del servidor o del pool (no con <code>ini_set()<\/code> ni <code>.user.ini<\/code>, porque debe aplicarse antes de procesar la petici\u00f3n) y reinicia los workers. En PHP 8.5, adem\u00e1s, se sugiere <code>fatal_error_backtraces=0<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qu\u00e9 no hace esa mitigaci\u00f3n: bloquea las rutas de sesi\u00f3n confirmadas, pero no otras variantes. Tampoco es remediaci\u00f3n cambiar memory_limit. Filtrar en tu WAF o Nginx las peticiones multipart an\u00f3malas ayuda a detectar y reducir ataques, pero tampoco sustituye el parche.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Si solo eres usuario: dos h\u00e1bitos bastan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No tienes que actualizar nada en tus dispositivos por esta alerta. Lo que s\u00ed vale la pena, y no solo por PHP2Shell, es protegerte ante el escenario de que un sitio que usas sea comprometido:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Usa contrase\u00f1as distintas en cada servicio, para que una filtraci\u00f3n no abra otras cuentas.<\/li>\n\n\n\n<li>Activa la verificaci\u00f3n en dos pasos donde puedas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si administras o conoces a alguien que tiene un sitio propio (una tienda, un blog en WordPress), vale la pena avisarle de que revise su versi\u00f3n de PHP o hable con su proveedor de hosting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mi opini\u00f3n: ni p\u00e1nico ni minimizar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando le\u00ed las noticias me alarm\u00e9, como casi todos. Despu\u00e9s hice lo que recomiendo siempre: revisar qu\u00e9 dec\u00edan las fuentes originales, entender a qui\u00e9n afectaba y aplicar en mis servidores las soluciones disponibles. Esa secuencia, leer, entender y actuar, me parece m\u00e1s \u00fatil que cualquier reacci\u00f3n de miedo o de indiferencia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso me quedo con dos ideas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Primero, la calma tiene que ser informada.<\/strong> Decirle a alguien \u00abno te afecta\u00bb es una buena noticia solo cuando se explica por qu\u00e9: el fallo est\u00e1 en los servidores web, no en tu PC ni en tu m\u00f3vil. Una calma sin explicaci\u00f3n se parece mucho a la indiferencia, y la indiferencia es lo que deja servidores sin parchear durante meses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Segundo, \u00abcabeza fr\u00eda\u00bb significa actuar con orden, no esperar a ver qu\u00e9 pasa.<\/strong> Aqu\u00ed la alerta no era exagerada para quien administra servidores: es un fallo cr\u00edtico, con parches de emergencia y con intentos de explotaci\u00f3n ya reportados por algunas firmas de seguridad. Lo que s\u00ed sobraba era el catastrofismo de \u00abel fin de Internet\u00bb. Entre esos dos extremos hay un camino razonable: identificar si te toca, parchear y, si no puedes, mitigar mientras llega el parche, sabiendo que la mitigaci\u00f3n es parcial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y una lecci\u00f3n m\u00e1s general, que aplica a la pr\u00f3xima alerta: antes de compartir o reaccionar, pregunta qui\u00e9n est\u00e1 realmente expuesto, qu\u00e9 dice la fuente original y cu\u00e1l es la acci\u00f3n concreta. Con esas tres preguntas se filtra casi todo el ruido sin perder lo importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sigamos administrando.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fuentes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Consultadas el 22 de octubre de 2026:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.tenable.com\/blog\/php2shell-cve-2026-109618-cve-2026-109619-frequently-asked-questions-about-critical-php-remote\" target=\"_blank\" rel=\"noopener\">Tenable: preguntas frecuentes sobre php2shell<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.helpnetsecurity.com\/2026\/10\/21\/php2shell-php-vulnerabilities-patched-cve-2026-109618-cve-2026-109619\/\" target=\"_blank\" rel=\"noopener\">Help Net Security: PHP2Shell parcheado<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.abstract.security\/blog\/php2shell-critical-php-rce-vulnerabilities-cve-2026-109618-and-cve-2026-109619\" target=\"_blank\" rel=\"noopener\">Abstract Security: an\u00e1lisis de las dos CVE<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.armis.com\/blog\/php2shell-how-to-find-prioritize-and-patch-affected-systems\/\" target=\"_blank\" rel=\"noopener\">Armis: c\u00f3mo encontrar y parchear sistemas afectados<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/arcticwolf.com\/resources\/blog\/arctic-wolf-labs-finding-prioritizing-and-patching-php2shell-exposure\/\" target=\"_blank\" rel=\"noopener\">Arctic Wolf Labs: versiones parcheadas y medidas provisionales<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/ellio.tech\/en\/blog\/php2shell-what-we-observed-and-what-to-do\/\" target=\"_blank\" rel=\"noopener\">ELLIO: lo observado antes y despu\u00e9s del parche<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/equixly.com\/blog\/2026\/10\/21\/cve-2026-109618-and-cve-2026-109619-what-we-know-about-php2shell-and-how-to-prepare\/\" target=\"_blank\" rel=\"noopener\">Equixly: qu\u00e9 se sabe y c\u00f3mo prepararse<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/thehackernews.com\/2026\/10\/php2shell-what-actually-protects-you.html\" target=\"_blank\" rel=\"noopener\">The Hacker News: qu\u00e9 protege y qu\u00e9 no antes del parche<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/almalinux.org\/blog\/2026-10-21-php2shell-cve-2026-109618-cve-2026-109619\/\" target=\"_blank\" rel=\"noopener\">AlmaLinux: paquetes parcheados<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/tuxcare.com\/blog\/php2shell-cve\/\" target=\"_blank\" rel=\"noopener\">TuxCare: parches para versiones sin soporte<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qu\u00e9 pas\u00f3 El 21 de octubre de 2026, el proyecto PHP public\u00f3 parches de emergencia para dos vulnerabilidades cr\u00edticas en el n\u00facleo del lenguaje, conocidas como PHP2Shell: CVE-2026-109618 y CVE-2026-109619. Ambas tienen una puntuaci\u00f3n de 9.2 en CVSS v4.0 y permiten ejecutar c\u00f3digo de forma remota, sin autenticaci\u00f3n, con los permisos del usuario que corre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_piko_noindex":"","footnotes":""},"categories":[5],"tags":[135,15,28],"class_list":["post-363","post","type-post","status-publish","format-standard","hentry","category-nota","tag-opinion","tag-php","tag-seguridad"],"_links":{"self":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/comments?post=363"}],"version-history":[{"count":0,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/363\/revisions"}],"wp:attachment":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/media?parent=363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/categories?post=363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/tags?post=363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}