Posada en Producció Segura
Proposta didàctica
En aquesta unitat treballem la RA5: Prova aplicacions web i mòbils analitzant el seu codi i model d'execució, detecta i corregeix vulnerabilitats, determina el nivell de seguretat requerit i implanta sistemes segurs de desplegat.
Criteris d'avaluació
-
CA1.1 Comparació de llenguatges de programació des del punt de vista de la seguretat.
-
CA1.2 Models d'execució de programari i les seves implicacions en la seguretat.
-
CA1.3 Elements bàsics del codi font que afecten la seguretat.
-
CA1.4 Tipus de proves de programari orientades a la seguretat.
-
CA1.5 Avaluació de seguretat en llenguatges i entorns d'execució.
-
CA2.1 Nivells ASVS (Application Security Verification Standard).
-
CA2.2 Nivell de verificació requerit per a cada tipus d'aplicació.
-
CA2.3 Requisits de verificació necessaris per al nivell determinat.
-
CA2.4 Riscos principals d'aplicacions segons OWASP.
-
CA3.1 Validació d'entrades d'usuari com a mesura preventiva.
-
CA3.2 Detecció de riscos d'injecció (SQL, XSS, SSTI).
-
CA3.3 Gestió correcta de sessions d'usuari.
-
CA3.4 Control d'accés per rols (RBAC).
-
CA3.5 Emmagatzematge segur de contrasenyes (bcrypt, Argon2).
-
CA3.6 Configuració segura de servidors web.
-
CA3.7 Contramesures contra bots (CAPTCHAs, rate limiting).
-
CA4.1 Models de permisos en plataformes mòbils (Android/iOS).
-
CA4.2 Emmagatzematge segur en dispositius mòbils.
-
CA4.3 Validació de compres integrades en aplicacions mòbils.
-
CA4.4 Monitoratge de tràfic d'aplicacions mòbils.
-
CA4.5 Inspecció de binaris mòbils i enginyeria inversa.
-
CA5.1 DevOps: integració de Dev i Ops en el cicle de vida del programari.
-
CA5.2 Sistemes de control de versions amb Git flow segur.
-
CA5.3 Integració contínua (CI) segura.
-
CA5.4 Plans de desplegat automatitzat (CD).
-
CA5.5 Avaluació de resiliència del sistema desplegat.
-
CA5.6 Documentació de recuperació davant desastres.
-
CA5.7 Bucles de retroalimentació àgils en el desenvolupament segur.
Continguts de referència
-
Fonaments de seguretat en aplicacions i proves de programari
- 1.1 Tipus de proves de seguretat: SAST, DAST, IAST, SCA
- 1.2 Secure Software Development Lifecycle (SSDLC)
- 1.3 Threat Modeling: STRIDE i PASTA
- 1.4 Sandboxes i entorns d'execució aïllats
- 1.5 Seguretat en els principals llenguatges de programació
- 1.6 Eines d'anàlisi estàtica: SonarQube, Semgrep
-
ASVS i nivells de seguretat d'aplicacions
- 2.1 OWASP ASVS: Application Security Verification Standard
- 2.2 Nivells de verificació: L1, L2, L3
- 2.3 Categories ASVS: V1-V14
- 2.4 Aplicació pràctica de l'ASVS en projectes reals
- 2.5 Eines d'avaluació: OWASP ZAP, Burp Suite
-
Vulnerabilitats web OWASP Top Ten i remediació
- 3.1 A01: Broken Access Control
- 3.2 A02: Cryptographic Failures
- 3.3 A03: Injection (SQL, XSS, SSTI, LDAP)
- 3.4 A04: Insecure Design
- 3.5 A05: Security Misconfiguration
- 3.6 A06: Vulnerable and Outdated Components
- 3.7 A07: Identification and Authentication Failures
- 3.8 A08: Software and Data Integrity Failures
- 3.9 A09: Security Logging and Monitoring Failures
- 3.10 A10: Server-Side Request Forgery (SSRF)
-
Seguretat en aplicacions mòbils
- 4.1 OWASP Mobile Top Ten
- 4.2 Model de seguretat Android: sandboxing, permisos, APK
- 4.3 Model de seguretat iOS: entitlements, keychain
- 4.4 Emmagatzematge segur: Keystore i Keychain
- 4.5 Comunicació segura: certificate pinning, HSTS
- 4.6 Obfuscació i enginyeria inversa
- 4.7 Eines d'anàlisi: MobSF
-
DevSecOps i CI/CD segur
- 5.1 DevSecOps: filosofia "Shift Left"
- 5.2 Git flow segur i gestió de secrets
- 5.3 CI/CD security: GitHub Actions, GitLab CI/CD
- 5.4 Seguretat en contenidors: Trivy, Docker Scout
- 5.5 Infrastructure as Code security: Checkov, tfsec
- 5.6 SAST i DAST en pipelines CI/CD
- 5.7 Supply chain security: SBOM, Sigstore
- 5.8 Blue-green deployments i canary releases
- 5.9 Documentació de recuperació davant desastres
Questionari inicial
- Què és una vulnerabilitat de tipus SQL Injection i com es pot prevenir?
- Quina diferència hi ha entre autenticació i autorització en una aplicació web?
- Què significa XSS (Cross-Site Scripting) i quins tipus existeixen?
- Per a què serveix el protocol HTTPS i com protegeix les dades?
- Què és una cookie de sessió i per què és important gestionar-la de forma segura?
- Què és OWASP i quina és la seva funció en el món de la ciberseguretat?
- Quina diferència hi ha entre una prova de caixa negra i una prova de caixa blanca en seguretat?
- Què és el principi de mínim privilegi i per a què s'aplica?
- Que és un token JWT (JSON Web Token) i com funciona?
- Quina diferència hi ha entre hash i xifrat en l'emmagatzematge de contrasenyes?
- Què és el control d'accés basat en rols (RBAC)?
- Que és DevOps i com es diferencia de DevSecOps?
- Què és un pipeline de CI/CD i per a què serveix?
- Que és Docker i quin avantatge aporta al desplegat d'aplicacions?
- Què és una API REST i quins riscos de seguretat pot presentar?
- Que és el CORS (Cross-Origin Resource Sharing) i per a què es configura?
- Quina diferència hi ha entre una aplicació nativa i una aplicació híbrida mòbil?
- Que és un certificat digital i com valida la identitat d'un servidor?
- Que és el rate limiting i per a quin propòsit s'utilitza en aplicacions web?
- Que és una anàlisi de codi estàtic (SAST) i quins avantatges té respecte l'anàlisi dinàmica?
Programació d'aula
Aquesta unitat té una duració de 99 hores lectives distribuïdes en 5 blocs temàtics al llarg del curs.
| Sessió | Continguts | Activitats | CAs Treballats |
|---|---|---|---|
| 1 | Presentació del mòdul. Introducció a la seguretat en aplicacions | Questionari inicial | |
| 2 | SSDLC: Cicle de vida de desenvolupament segur | Anàlisi de casos reals | CA1.2 |
| 3 | Tipus de proves: SAST, DAST, IAST, SCA | Comparativa d'eines | CA1.4 |
| 4 | Threat Modeling: STRIDE | Exercici d'identificació d'amenaces | CA1.3 |
| 5 | Threat Modeling: PASTA | Diagrama de flux d'amenaces | CA1.3 |
| 6 | Seguretat en Python: eval, pickle, deserialització | Miniactivitat: codi vulnerable | CA1.1, CA1.5 |
| 7 | Seguretat en JavaScript/Node.js: prototype pollution | Miniactivitat: codi vulnerable | CA1.1, CA1.5 |
| 8 | Seguretat en Java i PHP: XXE, RFI, LFI | Miniactivitat: codi vulnerable | CA1.1, CA1.5 |
| 9 | SonarQube: anàlisi estàtica de codi | Instal·lació i ús de SonarQube | CA1.4, CA1.5 |
| 10 | Semgrep: regles d'anàlisi personalitzades | Creació de regles Semgrep | CA1.4, CA1.5 |
| 11 | Sandboxes i entorns aïllats | Configuració d'un sandbox Docker | CA1.2 |
| 12 | Revisió i consolidació Bloc 1 | Avaluació formativa | CA1.1–CA1.5 |
| 13 | Repàs i ampliació Bloc 1 | Resolució de dubtes | CA1.1–CA1.5 |
| 14–15 | Pràctica Bloc 1: SAST amb Semgrep en projecte real | Entrega parcial | CA1.4, CA1.5 |
| 16–20 | Sessions de reforç i ampliació Bloc 1 | Exercicis addicionals | Tots CA1.x |
| 21 | Introducció a OWASP ASVS | Lectura guiada ASVS | CA2.1 |
| 22 | ASVS Nivell 1: Seguretat bàsica | Aplicació de checklist L1 | CA2.1, CA2.2 |
| 23 | ASVS Nivell 2: Aplicacions estàndard | Aplicació de checklist L2 | CA2.1, CA2.2 |
| 24 | ASVS Nivell 3: Aplicacions crítiques | Aplicació de checklist L3 | CA2.1, CA2.2 |
| 25 | Categories ASVS: V1 Arquitectura, V2 Autenticació | Anàlisi de requisits | CA2.3 |
| 26 | Categories ASVS: V3 Sessions, V4 Control d'accés | Anàlisi de requisits | CA2.3 |
| 27 | Categories ASVS: V5 Validació, V7 Criptografia | Anàlisi de requisits | CA2.3 |
| 28 | OWASP ZAP: escaneig automatitzat | Escaneig d'aplicació de prova | CA2.4 |
| 29 | Burp Suite Community: interceptació i prova manual | Interceptació de peticions HTTP | CA2.4 |
| 30 | Bug Bounty: HackerOne i Bugcrowd | Anàlisi d'informes públics | CA2.4 |
| 31 | Aplicació ASVS en projecte real | Exercici guiat | CA2.2, CA2.3 |
| 32–35 | Pràctica Bloc 2: Auditoria ASVS d'aplicació web | Entrega parcial | CA2.1–CA2.4 |
| 36–40 | Sessions de reforç i ampliació Bloc 2 | Exercicis addicionals | Tots CA2.x |
| 41 | OWASP Top Ten 2021: Introducció | Presentació del top ten | CA3.2 |
| 42 | A01: Broken Access Control | Explotar i corregir | CA3.4 |
| 43 | A02: Cryptographic Failures | Identificar xifrats febles | CA3.5 |
| 44 | A03: SQL Injection | Laboratori SQLi | CA3.1, CA3.2 |
| 45 | A03: XSS i SSTI | Laboratori XSS | CA3.1, CA3.2 |
| 46 | A04: Insecure Design i Threat Modeling | Disseny segur d'una API | CA3.6 |
| 47 | A05: Security Misconfiguration | Identificar misconfiguracions | CA3.6 |
| 48 | A06: Components vulnerables i SCA | Auditoria amb Trivy/Snyk | CA3.6 |
| 49 | A07: Authentication Failures | Laboratori autenticació | CA3.3, CA3.5 |
| 50 | A08: Software and Data Integrity (SolarWinds) | Anàlisi de l'incident | CA3.6 |
| 51 | A09: Logging i Monitoring | Configuració de logs segurs | CA3.6 |
| 52 | A10: SSRF | Laboratori SSRF | CA3.2 |
| 53 | Gestió de sessions: tokens, cookies, JWT | Anàlisi de tokens | CA3.3 |
| 54 | RBAC i control d'accés | Implementació RBAC | CA3.4 |
| 55 | Emmagatzematge segur: bcrypt, Argon2 | Comparativa d'algoritmes | CA3.5 |
| 56 | Rate limiting i contramesures anti-bots | Configuració CAPTCHA | CA3.7 |
| 57 | Configuració segura de capçaleres HTTP | Auditoria securityheaders.com | CA3.6 |
| 58–60 | Pràctica Bloc 3: WebGoat i remediació OWASP | Entrega pràctica | CA3.1–CA3.7 |
| 61 | Introducció a la seguretat mòbil | Lectura OWASP Mobile Top Ten | CA4.1 |
| 62 | Model de seguretat Android | Anàlisi de permisos d'APK | CA4.1, CA4.2 |
| 63 | Model de seguretat iOS | Anàlisi d'entitlements | CA4.1, CA4.2 |
| 64 | Keystore (Android) i Keychain (iOS) | Implementació emmagatzematge segur | CA4.2 |
| 65 | Certificate pinning i HSTS | Implementació en app de prova | CA4.4 |
| 66 | Obfuscació i enginyeria inversa | Anàlisi amb APKTool/jadx | CA4.5 |
| 67 | Frida: instrumentació dinàmica d'apps mòbils | Hooks bàsics amb Frida | CA4.4, CA4.5 |
| 68 | MobSF: Mobile Security Framework | Anàlisi estàtica d'APK | CA4.5 |
| 69 | Interceptació de tràfic mòbil: Burp/mitmproxy | Configuració proxy mòbil | CA4.4 |
| 70 | Validació de compres integrades | Anàlisi de flux de compra | CA4.3 |
| 71–75 | Pràctica Bloc 4: Anàlisi d'APK amb MobSF | Entrega pràctica | CA4.1–CA4.5 |
| 76–80 | Sessions de reforç i ampliació Bloc 4 | Exercicis addicionals | Tots CA4.x |
| 81 | Introducció a DevSecOps: "Shift Left" | Presentació del concepte | CA5.1 |
| 82 | Git flow segur: branques, signatura i secret scanning | Configuració Git segur | CA5.2 |
| 83 | GitHub Actions: pipeline bàsic | Creació d'un workflow | CA5.3 |
| 84 | SAST en CI: SonarQube integrat | Integració SonarQube + GitHub | CA5.3 |
| 85 | DAST en CI: OWASP ZAP automation | Escaneig automatitzat | CA5.3 |
| 86 | Secrets management: HashiCorp Vault | Configuració de Vault | CA5.2, CA5.3 |
| 87 | Seguretat en contenidors: Trivy i Docker Scout | Escaneig d'imatges Docker | CA5.3 |
| 88 | Infrastructure as Code: Checkov i tfsec | Auditoria d'IaC | CA5.3 |
| 89 | Supply chain security: SBOM i Sigstore | Generació d'SBOM | CA5.3 |
| 90 | CD segur: blue-green i canary deployments | Simulació de desplegat | CA5.4 |
| 91 | Disaster Recovery: documentació i plans | Redacció de pla DR | CA5.6 |
| 92 | Resiliència: chaos engineering i tests de fallada | Exercici de resiliència | CA5.5 |
| 93 | Bucles de retroalimentació àgils | Retrospectiva i millora | CA5.7 |
| 94–99 | Pràctica Bloc 5: Pipeline CI/CD segur | Entrega pràctica final | CA5.1–CA5.7 |
Introducció
Què és la Posada en Producció Segura?
El desplegat d'aplicacions en entorns de producció és una de les fases més crítiques del cicle de vida del programari. En els darrers anys, els incidents de seguretat relacionats amb aplicacions web han crescut de forma exponencial: el Cost of a Data Breach Report d'IBM (2023) estima que el cost mitjà d'una bretxa de seguretat és de 4,45 milions de dòlars.
La posada en producció segura no és un pas final, sinó un procés transversal que s'integra en totes les fases del desenvolupament. Engloba:
- Proves de seguretat (SAST, DAST, IAST) des del primer dia de codificació
- Revisió de vulnerabilitats conegudes i emergents (OWASP Top Ten)
- Gestió segura del desplegat mitjançant pipelines de CI/CD
- Monitoratge continu un cop l'aplicació és en producció
Per què és important?
Alguns incidents reals que demostren la criticitat d'aquest tema:
-
Log4Shell (CVE-2021-44228, desembre 2021): Vulnerabilitat crítica en la biblioteca Log4j de Java. Va afectar milions de servidors a tot el món, incloent serveis d'Amazon, Apple, Microsoft i governs. El temps de resposta va ser crític.
-
SolarWinds (2020): Atac a la cadena de subministrament que va comprometre el pipeline de CI/CD de SolarWinds. Milers d'organitzacions governamentals i empresarials van ser infectades a través d'una actualització legítima del programari.
-
Equifax (2017): La bretxa de dades d'Equifax va exposar les dades personals de 147 milions de persones. La causa? Un component Apache Struts vulnerable (CVE-2017-5638) que no havia estat actualitzat.
-
Heartbleed (CVE-2014-0160, 2014): Error en OpenSSL que permetia llegir la memòria del servidor. Va afectar el 17% de tots els servidors web segurs d'Internet en el moment del descobriment.
El cicle DevSecOps
graph LR
A[Planificació<br/>Threat Modeling] --> B[Codificació<br/>SAST / Code Review]
B --> C[Build<br/>SCA / Deps Scan]
C --> D[Test<br/>DAST / IAST]
D --> E[Release<br/>Signatura / SBOM]
E --> F[Deploy<br/>Config Scan / IaC]
F --> G[Operate<br/>Runtime Protection]
G --> H[Monitor<br/>SIEM / Alertes]
H --> A
style A fill:#4CAF50,color:#fff
style B fill:#2196F3,color:#fff
style C fill:#2196F3,color:#fff
style D fill:#FF9800,color:#fff
style E fill:#FF9800,color:#fff
style F fill:#F44336,color:#fff
style G fill:#F44336,color:#fff
style H fill:#9C27B0,color:#fff
Estructura del mòdul
Aquest mòdul s'organitza en 5 blocs temàtics:
| Bloc | Tema | Hores | Sessions |
|---|---|---|---|
| 1 | Fonaments de seguretat en aplicacions | ~20h | 1–20 |
| 2 | ASVS i nivells de seguretat | ~20h | 21–40 |
| 3 | Vulnerabilitats web OWASP Top Ten | ~20h | 41–60 |
| 4 | Seguretat en aplicacions mòbils | ~20h | 61–80 |
| 5 | DevSecOps i CI/CD segur | ~19h | 81–99 |
Pràctiques
| Pràctica | Descripció | Hores |
|---|---|---|
| Pràctica OWASP | Explotació i remediació de vulnerabilitats OWASP amb WebGoat | ~10h |
| Pràctica CI/CD Segur | Pipeline CI/CD segur amb GitHub Actions i SonarQube | ~9h |
El panorama actual de les amenaces
Estadístiques clau (2023–2024)
Segons el Verizon Data Breach Investigations Report (DBIR) 2024:
- El 74% de les bretxes involucren l'element humà (errors, ús incorrecte de privilegis, enginyeria social)
- El 50% de les vulnerabilitats crítiques triguen més de 55 dies a ser pegades
- Les aplicacions web són el vector d'atac més comú en el 26% de les bretxes
Segons l'ENISA Threat Landscape 2023:
- Els atacs a la cadena de subministrament han crescut un 400% des de 2020
- El ransomware continua sent l'amenaça principal
- Els atacs a APIs REST han augmentat significativament
Les vulnerabilitats més explotades
pie title Tipus de vulnerabilitats més explotades (DBIR 2024)
"Injection (SQLi, XSS)" : 28
"Broken Access Control" : 22
"Misconfiguration" : 18
"Outdated Components" : 15
"Auth Failures" : 10
"Altres" : 7
Competències professionals
En completar aquest mòdul, l'estudiant serà capaç de:
- Identificar vulnerabilitats en codi font utilitzant eines SAST professionals
- Explotar de forma controlada i ètica les vulnerabilitats del OWASP Top Ten
- Remediar vulnerabilitats aplicant patrons de codi segur
- Auditar aplicacions web i mòbils aplicant l'estàndard ASVS
- Implementar pipelines de CI/CD amb controls de seguretat integrats
- Documentar processos de recuperació davant desastres
- Comunicar els riscos de seguretat a equips tècnics i no tècnics