Introducció
L'exposició de dades sensibles és una de les vulnerabilitats més crítiques en aplicacions web. Aquesta vulnerabilitat es produeix quan dades confidencials, com ara informació personal, financera o de salut, no estan adequadament protegides i poden ser accedides per actors no autoritzats.
Conceptes Clau
- Dades Sensibles: Inclou informació personal identificable (PII), dades financeres, credencials d'accés, informació de salut, etc.
- Protecció de Dades: Mecanismes com el xifrat, hashing, i controls d'accés per assegurar que només usuaris autoritzats puguin accedir a les dades sensibles.
- Exposició: Pot ocórrer a través de diverses vies, com la transmissió no segura, emmagatzematge inadequat, o vulnerabilitats en l'aplicació.
Exemples d'Exposició de Dades Sensibles
-
Transmissió No Segura:
- HTTP en lloc de HTTPS: Transmetre dades sensibles sense xifrar-les pot permetre que un atacant les intercepti.
- Protocol de Comunicació No Segur: Utilitzar protocols com FTP en lloc de SFTP.
-
Emmagatzematge No Segur:
- Bases de Dades No Xifrades: Emmagatzemar dades sensibles en text pla.
- Fitxers de Configuració: Incloure credencials en fitxers de configuració sense xifrar.
-
Vulnerabilitats en l'Aplicació:
- SQL Injection: Permet que un atacant accedeixi a dades sensibles a través de consultes malicioses.
- Falta de Controls d'Accés: No restringir adequadament l'accés a dades sensibles.
Pràctiques Recomanades per a la Protecció de Dades Sensibles
-
Xifrat de Dades:
- En Trànsit: Utilitzar HTTPS per a totes les comunicacions entre el client i el servidor.
- En Repòs: Xifrar les dades emmagatzemades en bases de dades i altres mitjans d'emmagatzematge.
-
Hashing de Credencials:
- Utilitzar algoritmes de hashing segurs com bcrypt, scrypt o Argon2 per emmagatzemar contrasenyes.
-
Controls d'Accés:
- Implementar controls d'accés basats en rols (RBAC) per assegurar que només els usuaris autoritzats puguin accedir a dades sensibles.
-
Auditoria i Monitoratge:
- Registrar i monitoritzar els accessos a dades sensibles per detectar i respondre a accessos no autoritzats.
Exemple Pràctic
Xifrat de Dades en Trànsit amb HTTPS
# Configuració d'un servidor web per utilitzar HTTPS amb un certificat SSL server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Explicació del Codi
- Redirecció HTTP a HTTPS: La primera secció redirigeix totes les peticions HTTP a HTTPS.
- Configuració del Certificat SSL: La segona secció configura el servidor per utilitzar un certificat SSL per xifrar les comunicacions.
Exercici Pràctic
Exercici: Implementació de Xifrat en una Base de Dades
Objectiu: Implementar el xifrat de dades sensibles en una base de dades MySQL.
Passos:
-
Crear una Taula amb Dades Sensibles:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARBINARY(255) NOT NULL );
-
Xifrar les Contrasenyes Abans d'Emmagatzemar-les:
import mysql.connector from cryptography.fernet import Fernet # Generar una clau de xifrat key = Fernet.generate_key() cipher_suite = Fernet(key) # Connexió a la base de dades conn = mysql.connector.connect( host="localhost", user="root", password="password", database="security_db" ) cursor = conn.cursor() # Xifrar la contrasenya password = "my_secure_password" encrypted_password = cipher_suite.encrypt(password.encode()) # Inserir l'usuari amb la contrasenya xifrada cursor.execute("INSERT INTO users (username, password) VALUES (%s, %s)", ("user1", encrypted_password)) conn.commit()
Solució:
- Generació de Clau de Xifrat: Utilitzar la biblioteca
cryptography
per generar una clau de xifrat. - Xifrat de Contrasenya: Xifrar la contrasenya abans d'emmagatzemar-la a la base de dades.
Errors Comuns i Consells
- No Utilitzar HTTPS: Un error comú és no utilitzar HTTPS per a totes les comunicacions. Assegura't de configurar correctament el certificat SSL.
- Emmagatzemar Dades en Text Pla: Evita emmagatzemar dades sensibles en text pla. Utilitza xifrat i hashing adequats.
- Falta de Controls d'Accés: Implementa controls d'accés rigorosos per assegurar que només els usuaris autoritzats puguin accedir a dades sensibles.
Conclusió
L'exposició de dades sensibles és una vulnerabilitat crítica que pot tenir conseqüències greus per a la seguretat i la privacitat dels usuaris. Implementar pràctiques recomanades com el xifrat, hashing, i controls d'accés és essencial per protegir aquestes dades. En el proper tema, explorarem la vulnerabilitat de les Entitats Externes XML (XXE) i com prevenir-la.
Curs d'OWASP: Directrius i Estàndards per a la Seguretat en Aplicacions Web
Mòdul 1: Introducció a OWASP
Mòdul 2: Principals Projectes d'OWASP
- OWASP Top Ten
- OWASP ASVS (Application Security Verification Standard)
- OWASP SAMM (Software Assurance Maturity Model)
- OWASP ZAP (Zed Attack Proxy)
Mòdul 3: OWASP Top Ten
- A1: Injecció
- A2: Pèrdua d'Autenticació
- A3: Exposició de Dades Sensibles
- A4: Entitats Externes XML (XXE)
- A5: Control d'Accés Trencat
- A6: Configuració Incorrecta de Seguretat
- A7: Cross-Site Scripting (XSS)
- A8: Deserialització Insegura
- A9: Ús de Components amb Vulnerabilitats Conegudes
- A10: Registre i Monitoratge Insuficients
Mòdul 4: OWASP ASVS (Application Security Verification Standard)
Mòdul 5: OWASP SAMM (Software Assurance Maturity Model)
Mòdul 6: OWASP ZAP (Zed Attack Proxy)
- Introducció a ZAP
- Instal·lació i Configuració
- Escaneig de Vulnerabilitats
- Automatització de Proves de Seguretat
Mòdul 7: Bones Pràctiques i Recomanacions
- Cicle de Vida de Desenvolupament Segur (SDLC)
- Integració de Seguretat en DevOps
- Capacitació i Sensibilització en Seguretat
- Eines i Recursos Addicionals
Mòdul 8: Exercicis Pràctics i Casos d'Estudi
- Exercici 1: Identificació de Vulnerabilitats
- Exercici 2: Implementació de Controls de Seguretat
- Cas d'Estudi 1: Anàlisi d'un Incident de Seguretat
- Cas d'Estudi 2: Millora de la Seguretat en una Aplicació Web