La evaluación final del curso de OWASP tiene como objetivo medir tu comprensión y aplicación de los conceptos y prácticas de seguridad en aplicaciones web que has aprendido a lo largo del curso. Esta evaluación está diseñada para ser integral y cubrirá todos los módulos del curso.
Estructura de la Evaluación
La evaluación final se dividirá en tres secciones principales:
- Preguntas de Opción Múltiple
- Preguntas Abiertas
- Ejercicios Prácticos
- Preguntas de Opción Múltiple
Esta sección evaluará tu conocimiento teórico sobre los conceptos clave de OWASP. A continuación, se presentan algunos ejemplos de preguntas de opción múltiple:
Ejemplo de Pregunta 1:
¿Cuál de las siguientes vulnerabilidades se refiere a la inyección de código malicioso en una aplicación web?
a) Cross-Site Scripting (XSS)
b) Inyección SQL
c) Deserialización Insegura
d) Control de Acceso Roto
Respuesta Correcta: b) Inyección SQL
Ejemplo de Pregunta 2:
¿Qué herramienta de OWASP se utiliza principalmente para escanear vulnerabilidades en aplicaciones web?
a) OWASP SAMM
b) OWASP ASVS
c) OWASP ZAP
d) OWASP Top Ten
Respuesta Correcta: c) OWASP ZAP
- Preguntas Abiertas
En esta sección, se te pedirá que expliques conceptos y prácticas de seguridad en tus propias palabras. Aquí hay algunos ejemplos de preguntas abiertas:
Ejemplo de Pregunta 1:
Explica la importancia de la seguridad en el ciclo de vida del desarrollo de software (SDLC).
Respuesta Esperada: La seguridad en el ciclo de vida del desarrollo de software (SDLC) es crucial porque permite identificar y mitigar vulnerabilidades desde las primeras etapas del desarrollo. Esto no solo reduce el costo y el esfuerzo necesarios para corregir problemas de seguridad más adelante, sino que también ayuda a asegurar que el producto final sea seguro y confiable. Integrar prácticas de seguridad en cada fase del SDLC, desde la planificación hasta el mantenimiento, garantiza que la seguridad no sea una consideración de último momento, sino una parte integral del proceso de desarrollo.
Ejemplo de Pregunta 2:
Describe cómo OWASP ASVS puede ayudar a mejorar la seguridad de una aplicación web.
Respuesta Esperada: OWASP ASVS (Application Security Verification Standard) proporciona un marco estructurado para verificar la seguridad de las aplicaciones web. Al seguir los niveles de verificación y los requisitos de seguridad definidos en ASVS, los desarrolladores y evaluadores pueden asegurarse de que la aplicación cumple con los estándares de seguridad necesarios. ASVS ayuda a identificar y corregir vulnerabilidades, mejorar la calidad del código y garantizar que las prácticas de seguridad se implementen de manera consistente. Además, facilita la comunicación de los requisitos de seguridad entre los equipos de desarrollo y las partes interesadas.
- Ejercicios Prácticos
Esta sección evaluará tu capacidad para aplicar los conocimientos adquiridos en situaciones prácticas. A continuación, se presentan algunos ejemplos de ejercicios prácticos:
Ejemplo de Ejercicio 1:
Utiliza OWASP ZAP para escanear una aplicación web de prueba y genera un informe de vulnerabilidades. Describe los pasos que seguiste y las vulnerabilidades que encontraste.
Respuesta Esperada:
-
Instalación y Configuración de OWASP ZAP:
- Descargué e instalé OWASP ZAP desde el sitio oficial.
- Configuré el proxy de ZAP para interceptar el tráfico de la aplicación web de prueba.
-
Escaneo de la Aplicación Web:
- Navegué por la aplicación web de prueba para que ZAP pudiera capturar todas las solicitudes y respuestas.
- Utilicé la función de escaneo automático de ZAP para identificar vulnerabilidades.
-
Generación del Informe:
- Revisé los resultados del escaneo y generé un informe detallado de las vulnerabilidades encontradas.
- Las vulnerabilidades identificadas incluyeron inyección SQL, XSS y configuración incorrecta de seguridad.
-
Análisis de Resultados:
- Analicé cada vulnerabilidad y proporcioné recomendaciones para su mitigación.
Ejemplo de Ejercicio 2:
Implementa un control de acceso basado en roles (RBAC) en una aplicación web de ejemplo. Proporciona el código y explica cómo garantiza la seguridad.
Respuesta Esperada:
# Ejemplo de implementación de RBAC en una aplicación web usando Flask (Python) from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy from flask_bcrypt import Bcrypt from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' app.config['JWT_SECRET_KEY'] = 'super-secret' # Cambiar a una clave secreta segura en producción db = SQLAlchemy(app) bcrypt = Bcrypt(app) jwt = JWTManager(app) # Modelos de base de datos class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(150), unique=True, nullable=False) password = db.Column(db.String(150), nullable=False) role = db.Column(db.String(50), nullable=False) # Crear la base de datos with app.app_context(): db.create_all() # Ruta de registro de usuario @app.route('/register', methods=['POST']) def register(): data = request.get_json() hashed_password = bcrypt.generate_password_hash(data['password']).decode('utf-8') new_user = User(username=data['username'], password=hashed_password, role=data['role']) db.session.add(new_user) db.session.commit() return jsonify(message="User registered successfully"), 201 # Ruta de inicio de sesión de usuario @app.route('/login', methods=['POST']) def login(): data = request.get_json() user = User.query.filter_by(username=data['username']).first() if user and bcrypt.check_password_hash(user.password, data['password']): access_token = create_access_token(identity={'username': user.username, 'role': user.role}) return jsonify(access_token=access_token), 200 return jsonify(message="Invalid credentials"), 401 # Decorador para verificar roles def role_required(role): def wrapper(fn): @jwt_required() def decorator(*args, **kwargs): claims = get_jwt_identity() if claims['role'] != role: return jsonify(message="Access forbidden: insufficient privileges"), 403 return fn(*args, **kwargs) return decorator return wrapper # Ruta protegida solo para administradores @app.route('/admin', methods=['GET']) @role_required('admin') def admin(): return jsonify(message="Welcome, admin!") if __name__ == '__main__': app.run(debug=True)
Explicación:
- Registro e Inicio de Sesión: Los usuarios pueden registrarse y obtener un token JWT al iniciar sesión.
- Roles: Cada usuario tiene un rol asignado (por ejemplo, 'admin').
- Decorador
role_required
: Verifica que el usuario tenga el rol necesario para acceder a ciertas rutas. - Ruta Protegida: La ruta
/admin
solo es accesible para usuarios con el rol 'admin'.
Conclusión
La evaluación final te permitirá demostrar tu comprensión de los conceptos de OWASP y tu capacidad para aplicar prácticas de seguridad en aplicaciones web. Asegúrate de revisar todos los módulos del curso y practicar con las herramientas y técnicas presentadas. ¡Buena suerte!
Curso de OWASP: Directrices y Estándares para la Seguridad en Aplicaciones Web
Módulo 1: Introducción a OWASP
Módulo 2: Principales Proyectos de OWASP
- OWASP Top Ten
- OWASP ASVS (Application Security Verification Standard)
- OWASP SAMM (Software Assurance Maturity Model)
- OWASP ZAP (Zed Attack Proxy)
Módulo 3: OWASP Top Ten
- A1: Inyección
- A2: Pérdida de Autenticación
- A3: Exposición de Datos Sensibles
- A4: Entidades Externas XML (XXE)
- A5: Control de Acceso Roto
- A6: Configuración Incorrecta de Seguridad
- A7: Cross-Site Scripting (XSS)
- A8: Deserialización Insegura
- A9: Uso de Componentes con Vulnerabilidades Conocidas
- A10: Registro y Monitoreo Insuficientes
Módulo 4: OWASP ASVS (Application Security Verification Standard)
- Introducción a ASVS
- Niveles de Verificación
- Requisitos de Seguridad
- Implementación de ASVS en Proyectos
Módulo 5: OWASP SAMM (Software Assurance Maturity Model)
Módulo 6: OWASP ZAP (Zed Attack Proxy)
- Introducción a ZAP
- Instalación y Configuración
- Escaneo de Vulnerabilidades
- Automatización de Pruebas de Seguridad
Módulo 7: Buenas Prácticas y Recomendaciones
- Ciclo de Vida de Desarrollo Seguro (SDLC)
- Integración de Seguridad en DevOps
- Capacitación y Concienciación en Seguridad
- Herramientas y Recursos Adicionales
Módulo 8: Ejercicios Prácticos y Casos de Estudio
- Ejercicio 1: Identificación de Vulnerabilidades
- Ejercicio 2: Implementación de Controles de Seguridad
- Caso de Estudio 1: Análisis de un Incidente de Seguridad
- Caso de Estudio 2: Mejora de la Seguridad en una Aplicación Web