Frameworks y librerías escaneados
Probamos la cobertura mediante fixtures en estos frameworks. Se añaden nuevos patrones en cada release de reglas integradas.
Principales clases CWE detectadas
Estas clases CWE aparecen con mayor frecuencia en bases de código modernas de este lenguaje. StaticCodeAudit incluye reglas dedicadas para cada una, mapeadas a OWASP Top 10 / ISO 27001 / ASVS cuando es pertinente.
CWE-89
Inyección SQL
mysql_query("... " . $_GET['id']), $pdo->query() con concat, Laravel DB::raw() con entrada user, WordPress $wpdb->query con vars sin escapar.
Detectado por la regla SCA: sql_injection_concat
CWE-79
Cross-Site Scripting (XSS)
echo $_GET['name'] sin htmlspecialchars, Twig {{ var|raw }}, WordPress esc_attr faltante en datos user.
Detectado por la regla SCA: xss_raw_html
CWE-78
Inyección de comando OS
system($cmd), exec(), shell_exec(), passthru() con entrada user. Las funciones shell PHP interpretan metacaracteres por defecto.
Detectado por la regla SCA: command_injection_php
CWE-98
File Inclusion (RFI/LFI)
include $_GET['page'] o require con rutas controladas por usuario. Permite lectura arbitraria de archivos, a veces ejecución remota.
Detectado por la regla SCA: path_traversal_os_join
CWE-502
Deserialización insegura
unserialize($_GET['data']) sobre entrada user. La serialización nativa PHP es un vector gadget conocido (phpggc).
Detectado por la regla SCA: unsafe_deserialization
CWE-798
Credenciales hardcoded
Credenciales DB en config.php commiteado, WordPress wp-config.php en repo público, API keys como constantes.
Detectado por la regla SCA: hardcoded_secret
Vulnerable vs. seguro — tres ejemplos rápidos
CWE-89
Detectado por la regla SCA: sql_injection_concat
// Vulnerable — concatenación directa
$sql = "SELECT * FROM users WHERE id = " . $_GET['id'];
$result = $mysqli->query($sql);
// Seguro — consulta preparada
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $_GET['id']);
$stmt->execute();
CWE-79
Detectado por la regla SCA: xss_raw_html
// Vulnerable — echo crudo
echo "<p>Hello, " . $_GET['name'] . "</p>";
// Seguro — htmlspecialchars con ENT_QUOTES + UTF-8
echo "<p>Hello, " . htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8') . "</p>";
CWE-78
Detectado por la regla SCA: command_injection_php
// Vulnerable — abuso metacaracteres shell
system("convert " . $_FILES['img']['tmp_name'] . " /var/thumb.jpg");
// Seguro — escapeshellarg + forma 2-arg
$src = escapeshellarg($_FILES['img']['tmp_name']);
system("convert {$src} /var/thumb.jpg");
Qué detecta StaticCodeAudit (este lenguaje)
- Inyección SQL en PDO concat, mysqli sin prepared statements, Laravel DB::raw, WordPress $wpdb concat
- XSS vía echo crudo, Twig
|raw,htmlspecialchars/esc_attrfaltantes - Inyección de comando en
system,exec,shell_exec,passthru,popen - File inclusion (LFI/RFI) vía
include,requiresobre rutas user - Deserialización insegura vía
unserializesobre datos user - Credenciales hardcoded en
config.php,wp-config.php,.envcommiteado - Config sesión insegura (
session.cookie_secure,session.cookie_httponlyoff) - Open redirect vía
header("Location: " . $_GET['url']) - Path traversal en
file_get_contents,fopencon rutas user - Cripto insegura (MD5/SHA1, mcrypt deprecado, claves/IV hardcoded)
- Token CSRF faltante en endpoints POST
- Display de errores PHP activado en producción (
display_errors=On) - APIs deprecadas (mysql_*, ereg, split, php-fpm pm.user=root)
- Misconfiguraciones CI/CD (.gitlab-ci, GitHub Actions, scripts Composer)
Audite su código
Audite Laravel, Symfony, WordPress y PHP legacy contra inyección SQL, XSS, file inclusion y deriva de configuración — sin subir código a la nube de un tercero.
Descargar el binario demo Reservar una demo guiada