La lliçó de DevSecOps va tancar amb una idea incòmoda: cap pipeline substitueix el criteri de qui escriu el codi i aprova els pull requests. Un escàner SAST detecta un patró conegut, però és un desenvolupador qui decideix validar una entrada, qui reconeix que un preu no ha de venir del client, qui escriu una prova per a una amenaça del threat model. La seguretat, en última instància, la produeixen persones. Per això el factor humà no és un complement del programa de seguretat: és el seu fonament. En aquesta lliçó dissenyem la formació i conscienciació de BazarNube, amb security champions, formació en secure coding i gamificació, i ho emmarquem en la pràctica d'Education & Guidance de SAMM.
Contingut
- Per què el factor humà és decisiu
- Formació en secure coding per a desenvolupadors
- Security champions: seguretat distribuïda
- Gamificació: aprendre atacant (Juice Shop, CTFs)
- Conscienciació general i phishing awareness
- Mètriques d'un programa de conscienciació
- El programa de conscienciació de BazarNube
- Errors comuns i consells
- Exercicis
- Conclusió
Per què el factor humà és decisiu
La majoria de les vulnerabilitats del Top Ten neixen d'una decisió humana: concatenar SQL en lloc de parametritzar, oblidar una comprovació d'autorització, confiar en una dada del client. Les eines ajuden a atrapar patrons, però no totes les decisions són un patró detectable. Una fallada de lògica de negoci o de disseny (A04) rarament la troba un escàner; l'evita un desenvolupador que ha après a pensar com un atacant.
A més, la conscienciació és el que fa que la resta del programa funcioni. Un pipeline DevSecOps amb gates pressuposa un equip que entén per què existeixen i no els sabota; un threat model pressuposa gent capaç d'imaginar amenaces. Sense cultura, les eines es converteixen en obstacles que la gent aprèn a esquivar.
Formació en secure coding per a desenvolupadors
La formació genèrica de "conscienciació en seguretat" (no cliquis enllaços estranys) és necessària per a tothom, però insuficient per a qui construeix programari. Els desenvolupadors necessiten secure coding: aprendre a escriure codi que resisteix atacs, amb exemples en el seu propi stack.
Característiques d'una formació de secure coding eficaç:
- Específica de l'stack: exemples en React, Node/Express i Java/Spring —el que l'equip usa de veritat—, no diapositives genèriques.
- Basada en el Top Ten i ASVS: ensenya a prevenir els riscos reals i a complir requisits verificables.
- Pràctica, no només teòrica: s'aprèn corregint codi vulnerable, no escoltant.
- Contínua: una sessió anual s'oblida; millor píndoles freqüents lligades a troballes reals del backlog.
- Contextual (just-in-time): el millor moment per ensenyar sobre injecció és quan el SAST en marca una al PR d'aquesta persona.
Una bona font de contingut són les OWASP Cheat Sheets (guies concises per tema) i la WSTG, que veurem catalogades a 07-05.
Security champions: seguretat distribuïda
Un equip de seguretat central mai escala a desenes d'equips de desenvolupament. La solució que promouen tant OWASP com SAMM són els security champions: desenvolupadors dins de cada equip que assumeixen un rol addicional de referent de seguretat.
Un security champion:
- No és un expert en seguretat a temps complet, sinó un desenvolupador amb interès i una mica de formació extra.
- És el pont entre el seu equip i l'equip de seguretat central.
- Ajuda a revisar PRs amb focus de seguretat, facilita el threat modeling del seu equip (recordem qui va revisar el model del checkout a 07-02) i triatja les troballes del pipeline.
- Difon la cultura des de dins, amb la credibilitat d'un igual.
| Aspecte | Equip de seguretat central | Security champion |
|---|---|---|
| Dedicació | Temps complet | Parcial, dins del seu equip |
| Coneixement | Profund en seguretat | Profund en el seu producte, bàsic-mitjà en seguretat |
| Escalabilitat | Limitada | Alta (un per equip) |
| Rol | Defineix, habilita, forma | Aplica, revisa, difon |
El programa de champions és una de les inversions de major retorn per elevar la maduresa, precisament perquè escala la cultura.
Gamificació: aprendre atacant (Juice Shop, CTFs)
S'aprèn molt més trencant un sistema que llegint sobre com es trenca. La gamificació converteix l'aprenentatge en un repte atractiu:
- OWASP Juice Shop: aplicació web deliberadament vulnerable, moderna (JavaScript), amb desenes de reptes que cobreixen tot el Top Ten. L'alumne explota vulnerabilitats reals en un entorn segur i guanya punts. Ideal per a tallers interns.
- CTF (Capture The Flag): competicions on els equips resolen reptes de seguretat per capturar "banderes". Fomenten l'aprenentatge col·laboratiu i la sana competició.
- Entorns vulnerables: WebGoat (també d'OWASP), DVWA i similars, per practicar tècniques concretes.
La gamificació té un benefici cultural extra: en posar-se al costat de l'atacant, el desenvolupador interioritza per què importen les defenses que abans veia com a burocràcia.
Conscienciació general i phishing awareness
Més enllà de qui programa, tota l'organització maneja informació i accessos. La conscienciació general cobreix tothom, inclosos rols no tècnics (product, vendes, direcció):
- Higiene bàsica: gestió de contrasenyes, MFA, bloqueig d'equips, no reutilitzar credencials.
- Phishing awareness: el phishing segueix sent una de les principals vies d'entrada. A alt nivell, un programa inclou formació sobre com reconèixer correus sospitosos i simulacions de phishing controlades per mesurar i millorar. La simulació s'ha d'usar per educar, mai per castigar o avergonyir: una cultura punitiva fa que la gent amagui els errors en lloc de reportar-los.
- Report fàcil: un canal clar i sense fricció per avisar d'alguna cosa sospitosa; reportar ha de ser fàcil i ben rebut.
Mètriques d'un programa de conscienciació
El que no es mesura no es pot millorar. Un programa seriós defineix mètriques, evitant les purament vanitoses (nombre d'hores de formació) a favor de les que reflecteixen canvi de comportament i reducció de risc.
| Mètrica | Què indica | Tipus |
|---|---|---|
| % de desenvolupadors formats en secure coding | Cobertura de la formació | Activitat |
| Nº de security champions actius / equips | Abast del programa distribuït | Cobertura |
| Tendència de vulnerabilitats per categoria | Es reintrodueixen els mateixos errors? | Resultat |
| Taxa de clics en simulacions de phishing | Resistència real al phishing | Resultat |
| Taxa i temps de report de phishing | Cultura de report activa | Resultat |
| Temps mitjà de correcció de troballes | L'equip prioritza la seguretat? | Resultat |
Les mètriques de resultat (baixen els errors reals?) valen més que les d'activitat (quanta formació vam donar?). L'objectiu últim és que la tendència de vulnerabilitats reintroduïdes baixi amb el temps.
El programa de conscienciació de BazarNube
A BazarNube la seguretat la portava de facto Lucía en els seus estones lliures. El programa formalitza i distribueix aquesta responsabilitat, emmarcat explícitament en la pràctica Education & Guidance del domini Govern de SAMM.
Estructura de security champions:
graph TD
SecCore[Equip de seguretat: Lucia + SRE]
ChFront[Champion Frontend: Marc]
ChBack[Champion Backend]
ChLegacy[Champion Legacy Java]
SecCore -->|forma i habilita| ChFront
SecCore -->|forma i habilita| ChBack
SecCore -->|forma i habilita| ChLegacy
ChFront -->|difon a| EqFront[Equip Frontend]
ChBack -->|difon a| EqBack[Equip Backend]
ChLegacy -->|difon a| EqLegacy[Equip Legacy]
Pla de formació (primer any):
| Trimestre | Activitat | Públic | Objectiu |
|---|---|---|---|
| Q1 | Onboarding de secure coding (Top Ten al seu stack) | Tots els desenvolupadors | Base comuna |
| Q1 | Selecció i formació de champions | 1 per equip | Arrencar el programa distribuït |
| Q2 | Taller pràctic amb OWASP Juice Shop | Desenvolupadors | Aprendre atacant |
| Q2 | Conscienciació general + 1a simulació de phishing | Tota l'empresa | Higiene i baseline |
| Q3 | Píndoles just-in-time lligades a troballes del pipeline | Autor del PR | Aprenentatge contextual |
| Q3 | CTF intern per equips | Desenvolupadors + champions | Cohesió i pràctica |
| Q4 | Revisió de mètriques i ajust del programa | Seguretat + CTO | Millora contínua (SAMM) |
El programa no és un curs puntual, sinó un cicle que es retroalimenta amb les mètriques i amb les troballes reals, pujant el nivell de maduresa any rere any.
Errors Comuns i Consells
- Formació genèrica i anual. Una xerrada d'una hora a l'any no canvia comportaments. Prioritza formació específica de l'stack, contínua i contextual (just-in-time sobre troballes reals).
- Phishing punitiu. Usar les simulacions per assenyalar culpables destrueix la confiança i fa que la gent amagui incidents. Usa-les per educar i per mesurar la tendència, no per castigar.
- Champions sense temps ni suport. Anomenar champions i no donar-los hores, formació ni reconeixement condemna el programa. El rol necessita suport explícit de direcció.
- Mesurar només activitat. "Vam donar 200 hores de formació" no diu si l'equip és més segur. Mesura resultats: baixen els errors reintroduïts?, millora el temps de correcció?
- Consell: aprofita la curiositat. Un taller de Juice Shop on la gent "hackeja" de veritat genera més aprenentatge i entusiasme que deu presentacions. L'engagement és el millor multiplicador de la formació.
Exercicis
Exercici 1. BazarNube té un equip central de dues persones i sis equips de desenvolupament. Proposa un mecanisme per escalar la cultura de seguretat sense contractar i explica'n la lògica.
Exercici 2. Classifica cada mètrica com d'activitat o de resultat i indica quina és més valuosa: (a) hores de formació impartides, (b) tendència de vulnerabilitats d'injecció per trimestre, (c) taxa de clics en simulacions de phishing.
Exercici 3. El SAST marca una injecció SQL al PR d'un desenvolupador júnior. Descriu com aprofitar aquest moment com a oportunitat de formació just-in-time.
Solucions
Solució 1. Un programa de security champions: un desenvolupador per equip (sis en total) rep formació extra i actua de referent i pont amb l'equip central. La seva lògica és que un equip central no escala a sis equips, però sí que pot habilitar sis champions que difonen la cultura des de dins, amb la credibilitat d'un igual i el coneixement profund del seu propi producte. Multiplica l'abast sense multiplicar la plantilla i és la pràctica que SAMM recomana.
Solució 2.
- (a) Activitat. (b) Resultat. (c) Resultat.
- La més valuosa és (b): mesura si la formació realment redueix la reintroducció de l'error, que és l'objectiu final. (a) només mesura esforç, no efecte.
Solució 3. En lloc de només rebutjar el PR, el security champion o un revisor comenta la troballa explicant per què és vulnerable, enllaça la Cheat Sheet de prevenció d'injecció, mostra la correcció amb consulta parametritzada i, si escau, demana una prova que cobreixi el cas. Així l'aprenentatge passa en el context real, sobre el codi d'aquesta persona i en el moment en què és més memorable, en lloc d'en una xerrada abstracta mesos després.
Conclusió
El factor humà és el fonament de tot el programa: les eines atrapen patrons, però són les persones qui prenen les decisions de disseny i qui fan que gates, threat models i pipelines funcionin en lloc d'estorbar. Hem dissenyat el programa de BazarNube amb secure coding específic de l'stack, security champions que escalen la cultura, gamificació amb Juice Shop i CTFs, i mètriques de resultat, tot emmarcat en la pràctica Education & Guidance de SAMM. Al llarg d'aquestes lliçons han aparegut moltes eines i recursos pel seu nom. A l'última lliçó del mòdul, 07-05, els reunim en un panorama ordenat per categories i definim l'stack de seguretat recomanat per a BazarNube, tancant així les bones pràctiques abans de passar a posar-les en joc.
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)
- Altres Projectes Clau: WSTG, Cheat Sheets i Dependency-Check
Mòdul 3: OWASP Top Ten 2021 en Profunditat
- A01:2021 – Pèrdua de Control d'Accés
- A02:2021 – Errors Criptogràfics i Exposició de Dades Sensibles
- A03:2021 – Injecció
- Cross-Site Scripting (XSS) en Profunditat
- A04:2021 – Disseny Insegur
- A05:2021 – Configuració de Seguretat Incorrecta
- Entitats Externes XML (XXE)
- A06:2021 – Components Vulnerables i Desactualitzats
- A07:2021 – Errors d'Identificació i Autenticació
- A08:2021 – Errors d'Integritat de Programari i Dades (Deserialització Insegura)
- A09:2021 – Errors de Registre i Monitorització
- A10:2021 – Server-Side Request Forgery (SSRF)
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)
- Modelatge d'Amenaces (Threat Modeling)
- Integració de Seguretat en DevOps (DevSecOps)
- Formació i Conscienciació 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
