Skip to content

Es cuando una API tiene configuraciones de seguridad incorrectas, incompletas o por defecto que permiten a atacantes explotar vulnerabilidades que deberían estar prevenidas.

El Problema Fundamental:

No se trata de un bug en el código, sino de CONFIGURACIÓN incorrecta:

✅ Código seguro + ❌ Configuración insegura = ⚠️ Sistema vulnerable

Tipos Comunes de Security Misconfiguration

Configuraciones por Defecto Peligrosas

c
# Credenciales por defecto
admin:admin
root:password
guest:guest

# Endpoints por defecto habilitados
/phpmyadmin
/admin
/debug
/console

Headers de Seguridad Faltantes

c
# MAL: Headers de seguridad ausentes
HTTP/1.1 200 OK
Content-Type: application/json

# BIEN: Headers de seguridad implementados
HTTP/1.1 200 OK
Content-Type: application/json
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Content-Security-Policy: default-src 'self'
X-XSS-Protection: 1; mode=block

Falta de Validación de Entradas

c
# CÓDIGO VULNERABLE - Concatenación directa en SQL
def get_product_count(name_substring):
    query = f"SELECT COUNT(*) FROM products WHERE name LIKE '%{name_substring}%'"
    result = db.execute(query)  # ¡SQL Injection posible!
    return result
c
// Endpoint vulnerable a SQL Injection
GET /api/v1/products/{Name}/count

// Ejemplo normal:
GET /api/v1/products/laptop/count
→ Respuesta: {"productsCount": 18}

// Ejemplo con SQL Injection:
GET /api/v1/products/laptop' OR 1=1 --/count
→ Respuesta: {"productsCount": 720}  // ¡Todos los productos!