[php-src] Issue #23015: Matar todo el sistema
[email protected] (gmeue65-cmd) Tue, 4 Aug 2026 03:47:59 +0000
| Newsgroups | php.bugs |
|---|---|
| Message-ID | <ATszvTf3AIwIjRdAmwD7E7A86vklOE3I591LTaL6siQ@main.internal.php.net> |
Issue: https://github.com/php/php-src/issues/23015
Author: gmeue65-cmd
<?php
// 1. Verificar si el sistema ya fue apagado previamente por seguridad
if (file_exists(__DIR__ . '/panic_lock.safe')) {
http_response_code(503);
die("CRITICAL SECURITY ERROR: System permanently suspended by security protocols.");
}
// 2. Función para inspeccionar datos en busca de código malicioso
function detect_malicious_payload($data) {
if (is_array($data)) {
foreach ($data as $value) {
if (detect_malicious_payload($value)) return true;
}
return false;
}
// Patrones regex para detectar SQLi, XSS, Path Traversal y RCE
$patterns = [
'/UNION\s+SELECT/i', // SQL Injection clásico
'/SELECT\s+.*\s+FROM/i', // Intentos de extracción SQL
'/(["\'])\s*(OR|AND)\s*\1\s*=\s*\1/i', // Bypass de autenticación ' OR '1'='1
'/<script\b[^>]*>(.*?)<\/script>/is', // XSS por etiquetas script
'/javascript\s*:/i', // XSS mediante esquemas URI
'/(\.\.\/|\.\.\\\\)/', // Path Traversal (../ o ..\)
'/(eval|passthru|shell_exec|system|base64_decode)\s*\(/i' // Ejecución remota de comandos
];
foreach ($patterns as $pattern) {
if (preg_match($pattern, (string)$data)) {
return true;
}
}
return false;
}
// 3. Evaluar todas las entradas posibles del usuario
$is_malicious = detect_malicious_payload($_GET) ||
detect_malicious_payload($_POST) ||
detect_malicious_payload($_COOKIE) ||
detect_malicious_payload($_SERVER['REQUEST_URI'] ?? '');
// 4. Si se detecta un ataque, activar el bloqueo total e inmutable
if ($is_malicious) {
// Generar candado físico en el disco
file_put_contents(__DIR__ . '/panic_lock.safe', 'SYSTEM_KILL_SWITCH_ACTIVATED_BY_INJECTION_ATTACK');
// Opcional: Registrar detalles del atacante antes de morir (para auditoría)
error_log("ATAQUE DETECTADO - IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'UNKNOWN') . " | URI: " . ($_SERVER['REQUEST_URI'] ?? ''));
// Destruir la ejecución
http_response_code(503);
die("CRITICAL SECURITY ERROR: System permanently suspended by security protocols.");
}
?>
From manual page: https://php.net/function.htmlspecialchars-decode
---