A05: Injection · 2025
Datos no confiables se interpretan como comandos o consultas
Resumen
Datos no confiables se interpretan como comandos o consultas. La inyección puede alterar consultas, ejecutar instrucciones o acceder a información fuera del flujo previsto.
Cómo funciona el ataque
El payload ' OR '1'='1 se concatena en SQL y hace verdadera la condición WHERE, devolviendo filas ajenas a la búsqueda.
Ejemplo
Vulnerable · Pseudocódigoname = "' OR '1'='1"
sql = "SELECT id FROM users\n" +
"WHERE name = '" + name + "'"
db.query(sql)Corrección: Usar db.query("SELECT id FROM users WHERE name = ?", [name]).
Prevención
- Usar APIs parametrizadas y evitar concatenar entradas en comandos.
- Validar con listas permitidas cuando la parametrización no sea posible.
- Separar datos de instrucciones y probar los puntos de entrada con casos adversarios.
Linaje
- 2013 · A1: Injection Continúa en 2017
- 2013 · A3: Cross-Site Scripting (XSS) Baja al puesto 7 en 2017
- 2017 · A1: Injection Continúa
- 2017 · A7: Cross-Site Scripting (XSS) Se integra en Injection
- 2021 · A03: Injection Absorbe XSS
- 2025 · A05: Injection Baja desde el puesto 3
- 2013:A1 → 2017:A1: Injection conserva el primer puesto.
- 2013:A3 → 2017:A7: XSS baja del puesto 3 al 7.
- 2017:A1 → 2021:A03: Injection baja del puesto 1 al 3.
- 2017:A7 → 2021:A03: XSS se integra dentro de Injection.
- 2021:A03 → 2025:A05: Injection baja del puesto 3 al 5.