No es php.net · No es NVD · No es CISA

Seguimiento de vulnerabilidades PHP

Informe no oficial sobre vulnerabilidades de seguridad en PHP

English简体中文日本語DeutschFrançaisNederlandsEspañol

Alerta de seguridad

PHP2Shell: actualice PHP. Es la única solución completa.

CVE-2026-109618 y CVE-2026-109619 son vulnerabilidades críticas en el propio PHP que permiten ejecución remota de código sin autenticación. El proyecto PHP publicó correcciones el 21 de octubre de 2026 para las ramas con soporte 8.2 a 8.5. Reinicie PHP después de actualizar. Un cortafuegos no es un sustituto.

Pasos para corregir

Incidente relacionado · compromiso de claves de CA · 17–21 de octubre de 2026

Claves de CA intermedias de eMudhra comprometidas: qué deben revisar los servidores PHP

Los navegadores quedaron protegidos en horas. Con PHP es distinto: las extensiones curl y OpenSSL confían en el paquete de CA del servidor y normalmente no reciben las listas de revocación de los navegadores.

Última actualización

Qué pasó

Cronología de la respuesta (UTC)
FechaEvento
17/10/2026, 18:05El informe llega al Chrome Root Program
17/10, 19:45Chrome bloquea las seis intermedias TLS mediante CRLSet
17/10, 22:59Firefox bloquea las ocho mediante OneCRL
18/10eMudhra revoca los ocho certificados
19/10Apple los bloquea; Sectigo revoca sus firmas cruzadas
20/10Microsoft los bloquea; NSS 3.131.1 retira emSign ECC Root CA - G3; cacert.pem de curl 2026-10-20; composer/ca-bundle 1.4.16 y 1.6.0
27/10 (previsto)El Chrome Root Store retira emSign ECC Root CA - G3 en todos los dispositivos

¿Afecta a mi servidor PHP?

PHP no trae su propia lista de CA. Las extensiones openssl y curl leen openssl.cafile / curl.cainfo si están definidos y, si no, las rutas por defecto de OpenSSL, normalmente el paquete ca-certificates de la distribución. No reciben CRLSet ni OneCRL. Si ese paquete aún contiene emSign ECC Root CA - G3 (o AAA Certificate Services para las firmas cruzadas), su servidor sigue confiando en la cadena comprometida.

Paso 1: localizar el paquete que lee PHP
# Which CA file does PHP use? Run as the same user/SAPI as the site if you can.
php -r 'print_r(openssl_get_cert_locations());'
php -i | grep -E 'openssl.cafile|openssl.capath|curl.cainfo'
Paso 2: probar contra los hosts del investigador
# Does PHP still trust the compromised eMudhra intermediates?
# Good result: bool(false) plus a "certificate verify failed" warning.
# Bad result: the page body is printed (the chain was trusted).
php -r 'var_dump(file_get_contents("https://dv-g3b-emudhra.we-have-a-problem.com/"));'
php -r 'var_dump(file_get_contents("https://dv-g3b-aaa-emudhra.we-have-a-problem.com/"));'

# Same check through the curl extension
php -r '$c = curl_init("https://dv-g3b-emudhra.we-have-a-problem.com/");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($c), curl_error($c));'
Paso 3: buscar la raíz en el paquete
# Is the eMudhra root still in the bundle?
ls /etc/ssl/certs | grep -i emsign            # Debian/Ubuntu symlinks
grep -n "emSign ECC Root CA - G3" /path/to/cacert.pem   # curl/Mozilla-format bundle
# composer/ca-bundle version inside a project
composer show composer/ca-bundle | grep versions

Compruebe cada SAPI relevante. PHP-FPM y Apache mod_php pueden cargar un php.ini distinto al de la CLI; compare php --ini con una página phpinfo() servida por el sitio.

Cómo solucionarlo

Actualizar el paquete del sistema y composer/ca-bundle
# Debian / Ubuntu (and Debian-based php:* Docker images)
sudo apt-get update && sudo apt-get install --only-upgrade ca-certificates
dpkg -l ca-certificates

# RHEL / Fedora / AlmaLinux / Rocky
sudo dnf upgrade ca-certificates

# Alpine (php:*-alpine images)
apk upgrade --no-cache ca-certificates

# Composer projects that ship composer/ca-bundle
composer update composer/ca-bundle    # 1.4.16+ or 1.6.0+

# Restart long-running PHP processes afterwards
sudo systemctl restart php8.3-fpm     # or apache2 / httpd / your queue workers
Entornos con su propio paquete (XAMPP, WAMP, paneles antiguos)
; php.ini — for stacks with their own stale bundle (XAMPP, WAMP, old panels)
; Download a current Mozilla-derived bundle from https://curl.se/ca/cacert.pem
; (the 2026-10-20 release or later), then point both settings at it:
curl.cainfo   = "/path/to/cacert.pem"
openssl.cafile = "/path/to/cacert.pem"
; Restart Apache / PHP-FPM so the new values load.

Los entornos todo en uno antiguos y los paneles sin mantenimiento suelen fijar curl.cainfo a un archivo incluido con el producto que nunca se renueva. Revise las notas de versión del fabricante o apunte php.ini a un cacert.pem actual como se indica arriba.

Quién ha publicado una corrección

Versiones corregidas según el sitio de pruebas del investigador (a 21–22 de octubre de 2026)
SoftwareVersión corregida
Mozilla NSS3.131.1 (Bug 2084101)
curl CA bundle (cacert.pem)2026-10-20
composer/ca-bundle1.4.16, 1.6.0 (2026-10-20)
Debian ca-certificates20250419~deb12u2, 20250419+deb13u1, 20260816+nmu1
Ubuntu ca-certificates20260816ubuntu0.22.04.1, 0.24.04.1, 0.26.04.1, 0.26.10.1
Fedora ca-certificates2026.2.92_v9.0.319
Alpine ca-certificates20261020-r0
Arch ca-certificates-mozilla3.131.1-1
FreeBSD ca_root_nss1.131.1

Descargamos el cacert.pem actual de curl (Last-Modified 20 de octubre de 2026) y ya no contiene emSign ECC Root CA - G3 ni AAA Certificate Services. composer/ca-bundle 1.4.16 y 1.6.0 añaden además CaBundle::findDistrustedCertificate.

Las versiones que no aparecen, incluidas distribuciones antiguas como Ubuntu 20.04 o Debian 11, no figuraban como corregidas en las fuentes revisadas. Consulte el sistema de seguimiento de su proveedor.

Preguntas frecuentes

Paquetes integrados y paneles de hosting

XAMPP y los paneles de hosting incluyen sus propias compilaciones de PHP, así que su paquete CA puede no seguir las actualizaciones de ca-certificates del sistema. Vea las páginas de XAMPP, cPanel, Plesk, DirectAdmin, CloudLinux, aaPanel y 宝塔面板, o la lista de productos.

¿Está afectado el certificado de mi sitio?

Es muy improbable. eMudhra afirma que las ocho intermedias no emitieron certificados finales, y Chrome no encontró ninguno en los registros de Certificate Transparency antes del bloqueo. Los sitios con certificados bajo emSign ECC Root CA - G3 sí necesitan uno nuevo, porque esa raíz se está retirando.

¿Quedaron inseguros decenas de millones de certificados?

No. Las grandes cifras que circulan corresponden a la emisión histórica total de eMudhra, no a certificados firmados con las claves comprometidas.

¿Por qué importa a un servidor PHP si los navegadores están protegidos?

Los navegadores exigen Certificate Transparency y reciben CRLSet u OneCRL. curl y OpenSSL en PHP no suelen hacer ninguna de las dos cosas y solo están protegidos cuando el paquete de CA que leen deja de confiar en la cadena de eMudhra: APIs de pago, webhooks, SMTP sobre TLS y descargas de Composer.

¿Qué paquete usa PHP?

curl.cainfo y openssl.cafile si están definidos en php.ini; si no, las rutas por defecto compiladas en OpenSSL, normalmente el paquete ca-certificates de la distribución. Composer usa composer/ca-bundle, que prefiere el paquete del sistema y, si no lo encuentra, su propio cacert.pem.

Fuentes

Los enlaces externos salen de este sitio. No alojamos código de explotación.

  1. Protecting Firefox users following the compromise of eMudhra intermediate certificates (20 October 2026) — Mozilla Security Blog
  2. Protecting Chrome and Android users from compromised eMudhra intermediate CA certificates — Google (Chrome and Android Security)
  3. eMudhra statement on recent certificate security incident (updated 21 October 2026) — eMudhra
  4. eMudhra Intermediate CA Compromise: client check and patched-software list — we-have-a-problem.com (reporter’s test site)
  5. Bug 2083449 — eMudhra: Private key compromise of Intermediate Certificates — Mozilla Bugzilla
  6. Bug 2084101 — Remove eMudhra emSign Root CA - G3 from NSS — Mozilla Bugzilla
  7. Compromised eMudhra Intermediate Certificates (guidance for trust store operators) — Mozilla dev-security-policy
  8. Indian certification authority eMudhra’s private keys compromised – one of them was the number 4 (20 October 2026) — The Register
  9. eMudhra’s weak P-384 CA keys: testing curl, Node.js and uv (21 October 2026) — lilting channel
  10. CA certificates extracted from Mozilla (cacert.pem) — curl project
  11. composer/ca-bundle 1.6.0 and 1.4.16: distrust compromised eMudhra intermediates — Composer (GitHub)
  12. OpenSSL runtime configuration (openssl.cafile, openssl.capath) — PHP manual
  13. cURL runtime configuration (curl.cainfo) — PHP manual