A la lliçó anterior vam veure que cada requisit de l'ASVS està marcat per a un o diversos nivells d'assegurament. Aquesta és una de les grans virtuts de l'estàndard: no exigeix el mateix a un blog de receptes que a una passarel·la de pagaments. L'ASVS defineix tres nivells —L1, L2 i L3— que van sumant rigor. Triar bé el nivell és la decisió més important en adoptar l'estàndard, perquè determina quants requisits apliquen i amb quina profunditat cal verificar-los. En aquesta lliçó entendrem què exigeix cada nivell, com triar l'adequat segons la criticitat de l'aplicació, i decidirem amb arguments quin nivell objectiu té sentit per a BazarNube.
Contingut
- Per què l'ASVS té nivells
- Nivell 1 (L1): oportunista / bàsic
- Nivell 2 (L2): estàndard
- Nivell 3 (L3): avançat / crític
- Taula comparativa L1 / L2 / L3
- Com triar el nivell segons criticitat i dades
- Quin nivell tria BazarNube i per què
Per què l'ASVS té nivells
Aplicar els centenars de requisits de l'ASVS a tota aplicació per igual seria absurd: un formulari de contacte estàtic no necessita el mateix blindatge que un sistema bancari. Els nivells resolen aquest problema graduant l'exigència. Són acumulatius: cada nivell superior inclou tots els requisits de l'inferior i hi afegeix els seus.
graph LR L1[L1 Basic] --> L2[L2 Estandard] L2 --> L3[L3 Avancat] L1 -.conte.-> R1[Requisits L1] L2 -.conte.-> R2[Requisits L1 + L2] L3 -.conte.-> R3[Requisits L1 + L2 + L3]
La idea és senzilla: pujar de nivell no canvia de checklist, amplia l'existent i augmenta la profunditat amb què cal verificar cada control.
Nivell 1 (L1): oportunista / bàsic
El Nivell 1 és el mínim de seguretat que tota aplicació hauria d'assolir. Cobreix els controls davant les amenaces més comunes i de menor esforç —l'atacant "oportunista" que fa servir eines automàtiques i tècniques conegudes sense dedicar recursos especials.
Característiques clau:
- Verificable de manera totalment externa, sense accés al codi font ni a la documentació. Es pot comprovar mitjançant proves de caixa negra / pentest.
- Protegeix davant vulnerabilitats àmpliament conegudes (bona part del Top Ten es cobreix aquí).
- És el terra, no l'objectiu, per a gairebé qualsevol aplicació que gestioni dades d'usuaris.
Exemples d'exigències típiques de L1:
- Existeix control d'accés i les funcions sensibles requereixen autenticació.
- Les contrasenyes tenen una longitud mínima i no són les d'una llista de compromeses.
- L'aplicació codifica la sortida per prevenir XSS.
- El trànsit va sobre TLS.
Aplicacions típiques L1: llocs de baix risc, aplicacions internes sense dades sensibles, o com a pas previ de maduresa abans d'assolir L2.
Nivell 2 (L2): estàndard
El Nivell 2 és el recomanat per a la majoria de les aplicacions, especialment les que gestionen dades personals, transaccions o informació de negoci significativa. Defensa davant atacants hàbils i motivats que fan servir eines i tècniques avançades de manera dirigida.
Característiques clau:
- Requereix accés a documentació, disseny i codi font per verificar-se correctament (no n'hi ha prou amb caixa negra). Es combina revisió de codi amb proves.
- Afegeix controls de defensa en profunditat: gestió de sessions robusta, control d'accés a nivell d'objecte, criptografia ben aplicada, logging d'esdeveniments de seguretat, validació exhaustiva.
- És el nivell que solen exigir clients enterprise, normatives de protecció de dades i auditories serioses.
Exemples d'exigències que L2 afegeix sobre L1:
- Verificació de propietat del recurs en cada accés (evita IDOR de manera sistemàtica).
- Dades sensibles xifrades en repòs amb gestió de claus adequada.
- Registre d'esdeveniments de seguretat rellevants amb protecció davant manipulació.
- Anti-automatització i protecció davant credential stuffing.
Aplicacions típiques L2: comerç electrònic, SaaS B2B, aplicacions amb dades personals o de pagament. Aquí encaixa BazarNube.
Nivell 3 (L3): avançat / crític
El Nivell 3 és el més alt i es reserva per a aplicacions crítiques: aquelles el compromís de les quals tindria conseqüències greus per a la vida, la seguretat nacional, grans volums econòmics o infraestructures essencials.
Característiques clau:
- Exigeix el màxim rigor: revisió de codi exhaustiva, anàlisi d'arquitectura, modelatge d'amenaces documentat i defensa en profunditat en totes les capes.
- Requereix justificar el disseny de seguretat, no només que els controls existeixin: cal demostrar que l'arquitectura és resistent.
- L'esforç de verificació és substancialment més gran; s'aplica només quan el risc ho justifica.
Exemples d'exigències que L3 afegeix sobre L2:
- Segregació estricta de components i confiança mínima entre mòduls.
- Verificació que existeix modelatge d'amenaces i que el disseny el reflecteix.
- Controls criptogràfics avançats i gestió de claus de màxim nivell.
- Traçabilitat i logging aptes per a anàlisi forense complet.
Aplicacions típiques L3: banca core, salut, sistemes militars, infraestructures crítiques, plataformes que processen grans volums de pagaments com a nucli del negoci.
Taula comparativa L1 / L2 / L3
| Criteri | L1 – Oportunista | L2 – Estàndard | L3 – Avançat |
|---|---|---|---|
| Amenaça que cobreix | Atacant oportunista, eines automàtiques | Atacant hàbil i motivat | Atacant amb recursos, atac dirigit |
| Mètode de verificació | Caixa negra / pentest | Codi + disseny + proves | Revisió exhaustiva + arquitectura + threat modeling |
| Necessita codi font | No (desitjable) | Sí | Sí, en profunditat |
| Defensa en profunditat | Bàsica | Mitjana–alta | Màxima |
| Modelatge d'amenaces | No obligatori | Recomanat | Obligatori i documentat |
| Nre. de requisits | Menor | Intermedi | Major (tots) |
| A qui va dirigit | Apps de baix risc | La majoria d'apps amb dades | Apps crítiques |
| Exemple d'aplicació | Web informativa | Comerç electrònic, SaaS | Banca, salut, infraestructura |
Com triar el nivell segons criticitat i dades
L'elecció del nivell no és una preferència estètica: es deriva del risc, que depèn de quines dades es gestionen i què passaria si es comprometessin. Un procediment pràctic:
- Inventaria les dades i funcions sensibles. Hi ha dades personals? Mitjans de pagament? Historials mèdics? Diners reals movent-se?
- Estima l'impacte d'un compromís. Molèstia, pèrdua econòmica moderada, dany greu a persones o al negoci?
- Considera obligacions externes. Normativa (RGPD, PCI-DSS), exigències contractuals de clients, sector regulat.
- Mapeja a nivell:
| Situació | Nivell recomanat |
|---|---|
| Sense dades sensibles, impacte baix | L1 |
| Dades personals, pagaments, negoci significatiu | L2 |
| Vides, grans volums financers, infraestructura crítica | L3 |
Un antipatró habitual és "aspirar a L3 perquè sona més segur". L3 té un cost de verificació molt alt i només es justifica quan el risc ho exigeix; sobredimensionar el nivell consumeix recursos que estarien millor invertits a complir bé el nivell correcte.
Quin nivell tria BazarNube i per què
Apliquem el procediment a BazarNube:
- Dades que gestiona: comptes d'usuari, adreces, historial de compres i, sobretot, dades de pagament i dades personals de compradors i venedors del marketplace.
- Impacte d'un compromís: frau econòmic, filtració de dades personals (amb sanció RGPD), pèrdua de confiança i del contracte amb el client enterprise.
- Obligacions externes: el client corporatiu exigeix conformitat demostrable; el tractament de pagaments acosta a exigències tipus PCI-DSS; el RGPD aplica per les dades personals.
- Però no és banca core ni infraestructura crítica que posi vides en joc.
La conclusió de l'equip és clara:
BazarNube adopta ASVS Nivell 2 (L2) com a objectiu.
Raonament que Lucía documenta al backlog:
- L1 es queda curt: gestiona pagaments i dades personals; el terra bàsic no cobreix els seus riscos ni satisfà el client enterprise.
- L3 és sobredimensionat: no és un sistema on un error costi vides ni un banc core; el cost de verificació L3 no està justificat pel risc real.
- L2 és el punt correcte: exigeix defensa en profunditat, verificació amb codi i disseny, control d'accés a nivell d'objecte, criptografia i logging robustos —just el que un marketplace amb pagaments necessita— i és el nivell que clients i auditors esperen.
Es deixa la porta oberta a elevar puntualment certs mòduls (per exemple, el subsistema de pagaments) a exigències de L3, sense portar tota l'aplicació a aquest nivell. Aquesta idea de "L2 general amb reforços selectius" és una estratègia madura i realista.
Errors Comuns i Consells
- Triar el nivell per ambició i no per risc. "Anem a per L3" sense justificar-ho dispara el cost i alenteix sense aportar seguretat proporcional.
- Creure que L1 es verifica igual que L2. L1 admet caixa negra; L2 i L3 exigeixen accés a codi i disseny. Prometre L2 amb només un pentest de caixa negra és incomplir el mètode.
- Oblidar que els nivells són acumulatius. L2 inclou tots els requisits L1; no es "salta" el nivell inferior.
- Aplicar un únic nivell a un sistema molt heterogeni. És vàlid fixar L2 general i reforçar a L3 els components més crítics (com pagaments).
- Consell: documenta per què tries el nivell (dades, impacte, obligacions). Aquesta justificació és la primera evidència que demanarà un auditor.
Exercicis
Exercici 1. Una startup llança una web informativa sense comptes d'usuari ni dades personals, només contingut públic. Quin nivell ASVS li recomanaries i per què? Quin mètode de verificació n'hi hauria prou?
Exercici 2. Justifica en 3–4 frases, com si ho escrivissis al backlog de BazarNube, per què L2 és més adequat que L3 per al marketplace tot i gestionar pagaments.
Exercici 3. L'equip de pagaments de BazarNube proposa: "tot el marketplace a L3 per estar segurs". Rebat o matisa la proposta proposant una alternativa més eficient.
Solucions
Solució 1. Nivell 1 (L1). No gestiona dades personals ni sensibles i l'impacte d'un compromís és baix (com a molt defacement del contingut públic). El terra bàsic davant atacants oportunistes és proporcional al risc. En ser L1, n'hi hauria prou amb una verificació de caixa negra / pentest sense necessitat d'accés al codi, tot i que revisar-lo sempre és desitjable.
Solució 2. "BazarNube gestiona dades personals i de pagament, així que L1 no cobreix els seus riscos ni satisfà el client enterprise. Tanmateix, no és banca core ni infraestructura crítica amb impacte sobre vides, per la qual cosa L3 —amb el seu cost de threat modeling exhaustiu i verificació d'arquitectura— està sobredimensionat. L2 exigeix defensa en profunditat, control d'accés per objecte, criptografia i logging robustos verificats amb codi i disseny, que és just el nivell de rigor que un marketplace amb pagaments necessita i que auditors i clients esperen."
Solució 3. Portar tot el marketplace a L3 dispara enormement el cost de verificació (revisió exhaustiva d'arquitectura, threat modeling documentat de cada component) sense que la majoria de mòduls (catàleg, ressenyes, perfil) ho justifiquin pel seu risc. Alternativa més eficient: fixar L2 com a objectiu general i reforçar selectivament a exigències de L3 només el subsistema de pagaments, que és on l'impacte d'un error és més gran. S'obté el blindatge on importa sense pagar el cost L3 en tota l'aplicació.
Conclusió
L'ASVS gradua la seva exigència en tres nivells acumulatius: L1 (bàsic, davant atacants oportunistes, verificable en caixa negra), L2 (estàndard, per a la majoria d'apps amb dades, verificable amb codi i disseny) i L3 (avançat, per a sistemes crítics, amb threat modeling i revisió d'arquitectura). El nivell es tria per risc: quines dades es gestionen i quin impacte tindria el seu compromís. BazarNube adopta L2 per gestionar pagaments i dades personals sense ser un sistema crític, amb l'opció de reforçar puntualment el mòdul de pagaments.
Ja sabem quin estàndard fem servir i a quin nivell aspirem. Toca ara obrir el catàleg i veure els requisits concrets. A la lliçó següent, 04-03 Requisits de Seguretat, recorrerem els capítols més rellevants (autenticació, sessions, control d'accés, validació, criptografia, logging...), aprendrem a llegir un requisit verificable i mapejarem les troballes del Top Ten de BazarNube a requisits ASVS concrets.
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
