Contexto: Internet
Posibles ataques desde cualquier lugar del mundo
¿Que Cosas estan fuera de nuestro control (como desarrolladores)?
Hardware
Red
Plataforma (nube)
La aplicación debe ser en si misma segura
Estandares
Controles
Metodologías
Controlar el Estandar y las Metodologias
Control de Versiones
Testing
CI -> CD
Estandarizar como Proceso
Formato de Código
Como se gestiona una excepción
Como se valida / sanitiza
Como detectar vulnerabilidades
Como Rankear vulnerabilidades
Spoofing Identity - Suplantación
Tampering Data - Manipulación de datos
Repudiation - Negar la autoría de una acción.
Information Disclosure - Revelación de Información
Denial of Service - Denegación de Servicio
Elevation of Privilege - Obtener mayores capacidades que las permitidas
(DAMAGE + REPRODUCIBILITY + EXPLOITABILITY + AFFECTED USERS + DISCOVERABILITY) / 5
Open Web Application Security Project
Si lo tuyo no es la seguridad, algunos de sus proyectos es lo mínimo necesario para saber
Esfuerzo global por catalogar las 10 vulnerabilidades mas comunes en proyectos web
A1:2017 - Inyección de Código
$query = "SELECT * FROM accounts WHERE custID='" . request->getParameter("id") . "'";
// URL: http://example.com/app/accountView?id=' or '1'='1
// $query == SELECT * FROM accounts WHERE custID='' or '1'='1'
A2:2017 - Pérdida de autenticación
A3:2017 - Exposición de datos sensibles
A3:2017 - Exposición de datos sensibles
$password = 'Password';
$hash_pass = password_hash($password, PASSWORD_DEFAULT);
password_verify('Password', $hash_default_salt ) # true
A5:2017 - Pérdida del Control de Acceso
A6:2017 - Configuraciones de Seguridad Incorrectas
A6:2017 - Configuraciones de Seguridad Incorrectas
Web Server Configs En produccion
ServerSignature Off
ServerTokens Prod
FileETag None
# En virtualhosts
Options -Indexes
AllowOverride None
A6:2017 - Configuraciones de Seguridad Incorrectas
Configuraciones de Seguridad en Lenguajes
php -m # ver modulos activos
# En php.ini
display_errors=Off # production; On para dev
max_execution_time = 30
max_input_time = 30
memory_limit = 40M
post_max_size=1K
upload_max_filesize=1M
A7:2017 - Secuencia de Comandos en Sitios Cruzados (XSS)
No mantenerse actualizado (A9:2017)
Falta de Logs (A10:2017)
Falta de Monitoreo (A10:2017)
Mitnick, K. D., & Simon, W. L. (2011). The art of deception: Controlling the human element of security. John Wiley & Sons.
Tori, C. (2008). Hacking ético.
Viega, J., & McGraw, G. R. (2001). Building secure software: how to avoid security problems the right way. Pearson Education.