La seguretat informàtica s'explica malament quan s'explica en abstracte. Per això aquest curs sencer gira al voltant d'una empresa concreta, amb els seus servidors, els seus clients, les seves presses i el seu pressupost limitat. En aquesta primera lliçó coneixeràs aquesta empresa, aprendràs què és exactament la seguretat informàtica i en què es diferencia de termes que es fan servir com a sinònims sense ser-ho, i fixaràs el vocabulari que faràs servir durant els set mòduls següents. Si confons amenaça amb vulnerabilitat o risc amb impacte, tota la resta es torna confusa: les converses amb proveïdors, els informes d'auditoria i fins i tot els butlletins de seguretat es llegeixen malament. Aquí posem aquest vocabulari en ordre.
Contingut
- Nimbus Reservas, S.L.: l'empresa que ens acompanyarà tot el curs
- Què és la seguretat informàtica (i què no és)
- La tríada CIA: confidencialitat, integritat i disponibilitat
- Com es trenca cada propietat: exemples en codi
- Més enllà de la tríada: autenticitat, no-repudi i traçabilitat
- El trio AAA: autenticació, autorització i auditoria
- Vocabulari base: actiu, amenaça, vulnerabilitat, exploit, risc, impacte i control
- La seguretat com a procés continu i com a compromís
- Nimbus Reservas, S.L.: l'empresa que ens acompanyarà tot el curs
Nimbus Reservas, S.L. és una pime espanyola de 38 empleats amb oficina a València. Desenvolupa i opera un SaaS (programari com a servei) de gestió de reserves i cites que utilitzen clíniques de fisioteràpia, gimnasos i acadèmies de tot Espanya. Els seus clients no compren un programa: entren en un web, i els seus pacients o alumnes reserven hora des del mòbil.
Quines dades tracta Nimbus:
| Dada | Exemple | Per què és sensible |
|---|---|---|
| Identitat del client final | Nom, cognoms, DNI en alguns casos | Permet identificar persones concretes |
| Contacte | Correu electrònic, telèfon | Vector directe de frau i suplantació |
| Historial de cites | «15/03, fisioteràpia, rehabilitació de genoll» | En clíniques revela indirectament informació de salut |
| Facturació | Imports, conceptes, dades fiscals del negoci client | Informació econòmica subjecta a obligacions legals |
| Pagaments | Token de targeta retornat per la passarel·la externa | Nimbus no guarda el número de targeta, però sí la referència |
Aquest tercer punt és el que ho canvia tot. Nimbus no es considera una empresa «de dades sensibles» perquè només gestiona agendes, però una agenda d'una clínica de fisioteràpia és, a la pràctica, un llistat de persones amb dolències. El curs tornarà sobre les implicacions legals d'això a la lliçó de RGPD (06-03); de moment queda't amb la idea: la dada aparentment innòcua pot ser sensible pel context en què viu.
Com està muntat tècnicament:
flowchart LR
subgraph Clients
SPA[SPA web]
APP[App movil]
end
SPA --> API
APP --> API
API["API REST\nPython / FastAPI"]
API --> DB[(PostgreSQL)]
API --> S3[Bucket S3\nadjunts i copies]
API --> MAIL[Proveidor de correu\ntransaccional]
API --> PAY[Passarela de pagament]
CI["GitHub Actions\nCI/CD"] -->|desplega contenidors| API
Les persones:
- Marta — CTO. Decideix arquitectura i prioritats; és qui ha de justificar el pressupost de seguretat davant la direcció.
- Iván — desenvolupador de backend. Escriu l'API en Python/FastAPI.
- Lucía — administradora de sistemes i DevOps. Porta el núvol, els contenidors i el CI/CD.
- Rubén — suport a clients. És qui més vegades al dia toca dades reals de clients finals.
- Sara — responsable d'administració i RH. Custodia nòmines, contractes i facturació.
L'entorn físic i humà: oficina a València amb una wifi corporativa i una de convidats, uns 40 portàtils, i la meitat de la plantilla treballant en remot. Hi ha tres tercers dels quals Nimbus depèn: una consultoria que dona suport de sistemes amb accés remot, el proveïdor de correu transaccional i la passarel·la de pagament.
Totes les dades, els noms i els incidents d'aquest curs són ficticis. Nimbus no existeix; la seva semblança amb empreses reals és exactament el punt.
- Què és la seguretat informàtica (i què no és)
Tres termes es fan servir com a sinònims i no ho són. La diferència no és pedanteria: determina qui és responsable de què dins d'una organització.
| Terme | Què protegeix | Abast | Exemple a Nimbus |
|---|---|---|---|
| Seguretat de la informació | La informació, en qualsevol suport | El més ampli: inclou paper, converses, processos, persones | Sara guarda els contractes signats en un armari tancat amb clau |
| Seguretat informàtica | La informació i els recursos en sistemes informàtics | Sistemes, xarxes, programari, maquinari, dades digitals | Xifrar el disc dels 40 portàtils |
| Ciberseguretat | Els sistemes davant amenaces provinents del ciberespai | Centrada en l'adversari i en sistemes connectats | Defensar l'API de Nimbus de l'escaneig automatitzat d'Internet |
Una manera senzilla de recordar-ho:
flowchart TD
SI[Seguretat de la informacio\nqualsevol suport] --> SINF[Seguretat informatica\nsistemes i dades digitals]
SINF --> CIBER[Ciberseguretat\namenaces des de xarxes connectades]
Cada cercle és dins de l'anterior, però no encaixen perfectament: la ciberseguretat també s'ocupa de coses que no són informació (la disponibilitat d'un servei, per exemple, o el control d'un dispositiu industrial).
Definició de treball per a aquest curs:
La seguretat informàtica és el conjunt de mesures tècniques, organitzatives i humanes destinades a preservar la confidencialitat, la integritat i la disponibilitat de la informació i dels sistemes que la tracten, davant fallades accidentals o accions deliberades.
Fixa't en tres paraules d'aquesta definició:
- «Conjunt»: no és un producte que es compra. Un tallafoc no «dona seguretat»; és una peça.
- «Humanes»: la majoria d'incidents comença amb una persona fent alguna cosa raonable en un context enganyós.
- «Fallades accidentals o accions deliberades»: si la Lucía esborra per error el bucket de còpies, el dany és idèntic al d'un atacant que l'esborri. La seguretat informàtica cobreix els dos casos; la ciberseguretat se centra sobretot en el segon.
L'abast complet de la ciberseguretat, amb la seva terminologia pròpia i el seu marc de treball, es desenvolupa a la lliçó 02-01. Aquí ens quedem amb la distinció.
- La tríada CIA: confidencialitat, integritat i disponibilitat
La tríada CIA (per les sigles en anglès: Confidentiality, Integrity, Availability) és el model mental damunt del qual s'aguanta tota la resta. Quan no sàpigues si una cosa és «un problema de seguretat», pregunta't: trenca alguna de les tres?
3.1 Confidencialitat
Definició: la informació només és accessible per a qui està autoritzat a accedir-hi.
Confidencialitat no és el mateix que secret. L'horari d'obertura d'una clínica client de Nimbus és públic i no perd res per ser-ho. Confidencialitat significa que cada dada té un cercle d'accés definit i aquest cercle es respecta.
Contraexemples concrets a Nimbus (fallades de confidencialitat):
- Un endpoint
/api/v1/reservas/{id}que retorna la reserva demanada sense comprovar que pertany al client que la demana. Un usuari del Gimnàs Levante pot llegir les cites de la Clínica Turia canviant el número a l'URL. - El Rubén, a suport, exporta a un CSV la llista completa de clients finals per «fer una prova» i la deixa a la seva carpeta de Descàrregues, en un portàtil sense xifrar.
- El bucket S3 d'adjunts configurat amb lectura pública perquè així era més fàcil servir les imatges de perfil.
- Els registres de l'API imprimeixen el cos complet de les peticions, inclosos telèfons i notes de la cita, i aquests registres els veu tota la consultoria externa.
3.2 Integritat
Definició: la informació és exacta i completa, i només es modifica de manera autoritzada i controlada.
La integritat té dues cares que convé separar:
- Integritat de la dada: la dada no ha estat alterada (ni per un atacant, ni per un error de programari, ni per una fallada de disc).
- Integritat de l'origen: la dada ve de qui diu que ve (això se solapa amb l'autenticitat, que veurem a l'apartat 5).
Contraexemples concrets a Nimbus (fallades d'integritat):
- Un script de manteniment executa un
UPDATEsenseWHEREi posa el mateix estat a les 240.000 reserves de la base de dades. - L'import d'una factura es recalcula al navegador i l'API es refia del que li envia el client, en comptes de recalcular-lo al servidor.
- Dues peticions simultànies reserven la mateixa franja horària perquè no hi ha control de concurrència: l'agenda queda inconsistent.
- Un atacant modifica un registre d'auditoria per esborrar el rastre del que va fer.
3.3 Disponibilitat
Definició: la informació i els serveis són accessibles quan qui està autoritzat els necessita.
És la propietat que més sovint s'oblida quan es parla de «seguretat», i la que el client nota més de pressa. Si la Clínica Turia obre a les 8:00 i l'API de Nimbus no respon, a les 8:05 el telèfon del Rubén està sonant.
Contraexemples concrets a Nimbus (fallades de disponibilitat):
- Un ransomware xifra els servidors i les còpies de seguretat accessibles des de la mateixa xarxa.
- El certificat TLS del domini caduca un diumenge i l'app mòbil deixa de connectar.
- Un desplegament trenca una migració de base de dades i s'ha de revertir a mà durant tres hores.
- El proveïdor de correu transaccional pateix una caiguda i no surten els recordatoris de cita: tècnicament l'API funciona, però el servei que el client va comprar, no.
3.4 Les tres juntes, i les seves tensions
| Propietat | Pregunta que respon | Es trenca quan... | Control típic |
|---|---|---|---|
| Confidencialitat | Qui ho pot veure? | Algú no autoritzat ho llegeix | Xifratge, control d'accés, minimització |
| Integritat | És correcte i no ha canviat? | Algú o alguna cosa l'altera indegudament | Validació, hashes/signatures, transaccions, permisos d'escriptura |
| Disponibilitat | Hi és quan cal? | El servei o la dada no es pot fer servir | Còpies, redundància, capacitat, pla de recuperació |
Les tres competeixen entre si. Si la Marta decideix xifrar la base de dades amb una clau que només ella coneix, guanya confidencialitat i perd disponibilitat (si la Marta està de baixa, ningú restaura). Si la Lucía dona permisos de lectura a tot l'equip perquè ningú es quedi bloquejat, guanya disponibilitat i perd confidencialitat. Bona part de la feina de seguretat consisteix a triar conscientment el punt d'equilibri, no a maximitzar una propietat.
- Com es trenca cada propietat: exemples en codi
Veure la fallada en codi ho fixa molt millor que la definició. Els tres exemples següents estan escrits sobre l'API de l'Iván i la base de dades de Nimbus.
4.1 Trencar la confidencialitat: la consulta que retorna de més
# api/reservas.py -- VERSIO VULNERABLE
from fastapi import APIRouter
router = APIRouter()
@router.get("/api/v1/reservas/{reserva_id}")
async def obtenir_reserva(reserva_id: int, db=Depends(get_db)):
fila = await db.fetch_one(
"SELECT * FROM reserves WHERE id = :id",
{"id": reserva_id},
)
return filaQuè fa, línia a línia:
- Declara un endpoint que rep un
reserva_idper l'URL. - Consulta la taula
reservesfiltrant només per aquest identificador. - Retorna la fila sencera tal qual.
Per què trenca la confidencialitat: hi ha dues fallades independents.
- No comprova la propietat del recurs. La consulta no filtra pel negoci (
tenant) de l'usuari autenticat. Qualsevol que tingui una sessió vàlida pot demanar/api/v1/reservas/91544i llegir la cita d'un pacient d'un altre client. Aquest patró té nom propi: IDOR (referència directa insegura a objectes), i el veurem entre els atacs del mòdul 2. SELECT *retorna columnes de més. Encara que l'usuari tingués dret a veure la reserva, la fila inclou camps interns (notes_internes,id_passarela_pagament,creat_per_usuari_id) que no haurien de sortir de la base de dades.
Versió corregida:
# api/reservas.py -- VERSIO CORREGIDA
@router.get("/api/v1/reservas/{reserva_id}")
async def obtenir_reserva(reserva_id: int, usuari=Depends(get_usuari_actual), db=Depends(get_db)):
fila = await db.fetch_one(
"""
SELECT id, data_hora, servei, estat, client_final_nom
FROM reserves
WHERE id = :id
AND tenant_id = :tenant -- el recurs ha de ser del negoci de l usuari
""",
{"id": reserva_id, "tenant": usuari.tenant_id},
)
if fila is None:
raise HTTPException(status_code=404, detail="No trobada")
return filaDos canvis i tots dos importen: l'AND tenant_id = :tenant lliga el recurs a l'usuari autenticat, i la llista explícita de columnes evita filtrar camps interns. A més, es retorna 404 i no 403: així l'atacant no aprèn si l'identificador existeix o no.
4.2 Trencar la integritat: l'UPDATE sense control
-- Executat per error en produccio durant un manteniment nocturn
UPDATE reserves
SET estat = 'cancellada';Què passa: sense clàusula WHERE, PostgreSQL actualitza totes les files de la taula. Les 240.000 reserves de tots els clients de Nimbus passen a estat «cancel·lada». Ningú ha entrat al sistema; no hi ha hagut atac. La integritat s'ha trencat igualment.
Com es protegeix una operació així:
-- 1. Embolcallar sempre en una transaccio i comprovar abans de confirmar
BEGIN;
UPDATE reserves
SET estat = 'cancellada'
WHERE tenant_id = 42
AND data_hora::date = DATE '2026-08-14' -- el dia que la clinica tanca
AND estat = 'confirmada';
-- 2. Verificar el nombre de files afectades ABANS de confirmar
-- Si el nombre no quadra amb l esperat, es desfa tot:
-- ROLLBACK;
COMMIT;Explicació de cada defensa:
BEGIN/COMMITcreen una transacció: fins que no es confirma, res no és definitiu. Si el recompte de files sorprèn, unROLLBACKho deixa tot com estava.- El
WHEREacota per tres criteris en comptes d'un. Com més específic, menys mal pot fer un error. - La condició
estat = 'confirmada'fa l'operació idempotent i acotada: no toca reserves ja cancel·lades.
A això s'hi afegeixen defenses estructurals que veurem a 01-03: el compte amb què l'API es connecta a la base de dades no hauria de tenir permís per fer un UPDATE massiu, i els manteniments s'haurien d'executar amb un compte diferent i revisat per una segona persona.
4.3 Trencar la disponibilitat: la consulta que tomba el servei
# Endpoint d informes -- VERSIO PERILLOSA
@router.get("/api/v1/informes/historico")
async def informe_historic(db=Depends(get_db)):
# Sense limit de dates, sense paginacio, sense timeout
return await db.fetch_all("SELECT * FROM reserves ORDER BY data_hora")Per què trenca la disponibilitat: cada crida carrega en memòria la taula sencera i l'ordena. N'hi ha prou que el Rubén premi «Actualitza» cinc vegades seguides perquè el procés de l'API consumeixi tota la memòria del contenidor, l'orquestrador el reiniciï i tots els clients vegin errors. No cal cap atacant: la fragilitat ja hi és, i un atacant l'únic que fa és descobrir-la i repetir-la.
Versió defensada:
@router.get("/api/v1/informes/historico")
async def informe_historic(
des_de: date, fins_a: date, pagina: int = 1,
usuari=Depends(get_usuari_actual), db=Depends(get_db),
):
if (fins_a - des_de).days > 366:
raise HTTPException(400, "El rang maxim es de 366 dies")
return await db.fetch_all(
"""
SELECT id, data_hora, servei, estat
FROM reserves
WHERE tenant_id = :tenant AND data_hora BETWEEN :des_de AND :fins_a
ORDER BY data_hora
LIMIT 500 OFFSET :offset
""",
{"tenant": usuari.tenant_id, "des_de": des_de, "fins_a": fins_a,
"offset": (pagina - 1) * 500},
)Tres defenses de disponibilitat en poques línies: límit de rang (ningú demana deu anys de cop), paginació amb LIMIT (el cost de cada petició està acotat) i filtre per tenant (que a més torna a protegir la confidencialitat). Una sola correcció pot reforçar diverses propietats alhora; és l'habitual.
- Més enllà de la tríada: autenticitat, no-repudi i traçabilitat
La tríada CIA cobreix molt, però no tot. Tres propietats addicionals apareixen constantment en normatives i contractes.
5.1 Autenticitat
Definició: la garantia que una entitat (persona, sistema, missatge) és realment qui o el que diu ser.
És diferent de la confidencialitat. Un correu pot arribar xifrat —confidencial— i venir d'un remitent fals —no autèntic—. A Nimbus: quan arriba un correu que diu «Sóc la Marta, canvia el compte bancari de la nòmina», la pregunta que falla no és qui ho pot llegir? sinó realment ho va escriure la Marta?.
5.2 No-repudi
Definició: la impossibilitat que qui va fer una acció pugui negar després haver-la feta.
És una propietat jurídica abans que tècnica. Si un client de Nimbus reclama que ell mai no va cancel·lar 200 cites, Nimbus necessita poder demostrar que la petició va venir de la seva sessió, des de la seva IP, a aquella hora i amb el seu token. Tècnicament s'aguanta en signatures digitals (mòdul 3) i en registres d'auditoria íntegres.
5.3 Traçabilitat
Definició: la capacitat de reconstruir què va passar, qui ho va fer, quan i sobre quin recurs.
Sense traçabilitat no hi ha investigació possible d'un incident. És la diferència entre poder dir a un client «es va accedir a aquests 14 registres el dimarts a les 03:12 des d'aquest compte» i haver-li de dir «no ho sabem». Davant d'un regulador, la segona resposta és molt pitjor que la primera.
| Propietat | Pregunta | S'aguanta en | Exemple a Nimbus |
|---|---|---|---|
| Autenticitat | Ets qui dius que ets? | Credencials, signatures, certificats | Verificar la signatura del webhook de la passarel·la de pagament |
| No-repudi | Pots negar que ho vas fer? | Signatura digital + registre íntegre | Registre signat de les cancel·lacions massives |
| Traçabilitat | Què va passar exactament? | Registres amb actor, acció, recurs i hora | Registre d'accessos del Rubén a fitxes de clients |
Exemple d'una línia de registre de Nimbus que sosté la traçabilitat:
2026-07-30T03:12:44Z level=INFO event=data_access actor_id=u-1042 [email protected]
tenant=42 action=read resource=client_final:88231 fields=[nom,telefon,historial]
ip=203.0.113.55 user_agent="NimbusSuport/2.1" request_id=7f3a91cc trace_id=b21e...Fixa't en què conté i en què no conté: hi ha qui, què, quan, sobre què i des d'on, però no hi ha valors de les dades llegides. Un registre d'auditoria que copiï les dades sensibles es converteix ell mateix en un problema de confidencialitat.
- El trio AAA: autenticació, autorització i auditoria
AAA és el model operatiu que implementa bona part de l'anterior. Els dos primers es confonen constantment, així que anem a poc a poc.
| Pregunta | Moment | A l'API de Nimbus | |
|---|---|---|---|
| Autenticació (Authentication) | Qui ets? | En iniciar sessió / en cada petició | Validar el token JWT de la capçalera Authorization |
| Autorització (Authorization) | Què pots fer? | En cada acció | Comprovar que el rol permet cancel·lar reserves d'aquell tenant |
| Auditoria / Accounting | Què has fet? | Després, i de manera contínua | Registrar l'esdeveniment al registre d'accessos |
Vist com a flux en una petició real de Nimbus:
sequenceDiagram
participant R as Ruben (suport)
participant API as API Nimbus
participant DB as PostgreSQL
participant LOG as Registre auditoria
R->>API: DELETE /api/v1/reservas/91544 (token)
API->>API: 1. AUTENTICACIO: token valid i no caducat?
API->>API: 2. AUTORITZACIO: rol suport + reserva del tenant 42?
API->>DB: UPDATE reserves SET estat='cancellada' WHERE id=91544 AND tenant_id=42
API->>LOG: 3. AUDITORIA: actor, accio, recurs, hora, IP
API-->>R: 204 No Content
I en codi, separant explícitament les tres responsabilitats:
@router.delete("/api/v1/reservas/{reserva_id}", status_code=204)
async def cancellar_reserva(
reserva_id: int,
peticio: Request,
usuari=Depends(get_usuari_actual), # (1) AUTENTICACIO
db=Depends(get_db),
):
# (2) AUTORITZACIO: dues comprovacions diferents i totes dues necessaries
if "reserves:cancellar" not in usuari.permisos:
raise HTTPException(403, "Permis insuficient")
afectades = await db.execute(
"UPDATE reserves SET estat='cancellada' WHERE id=:id AND tenant_id=:t AND estat='confirmada'",
{"id": reserva_id, "t": usuari.tenant_id}, # ...i el recurs ha de ser seu
)
if afectades == 0:
raise HTTPException(404, "No trobada")
# (3) AUDITORIA
logger.info(
"event=reserva_cancellada actor_id=%s tenant=%s recurs=reserva:%s ip=%s",
usuari.id, usuari.tenant_id, reserva_id, peticio.client.host,
)Els tres errors clàssics que aquest codi evita:
- Confondre autenticar amb autoritzar. «Té la sessió iniciada» no significa «ho pot fer». La comprovació de permisos és una línia diferent de la validació del token.
- Autoritzar només per rol i oblidar el recurs. El Rubén té el permís
reserves:cancellar, sí — però només sobre les reserves dels tenants que li corresponen. Rol i pertinença. - Registrar només els errors. El registre d'auditoria ha de registrar també les accions reeixides sobre dades sensibles; són precisament les que cal poder reconstruir després.
Les tècniques concretes per autenticar bé —MFA, SSO, gestió de sessions, models RBAC i ABAC— es desenvolupen a la lliçó 02-05. Aquí només necessites tenir clars els tres conceptes i el seu ordre.
- Vocabulari base: actiu, amenaça, vulnerabilitat, exploit, risc, impacte i control
Aquest és l'apartat que rellegiràs més vegades. Aquests set termes es fan servir malament cada dia, fins i tot en informes professionals.
| Terme | Definició | Naturalesa | Exemple a Nimbus |
|---|---|---|---|
| Actiu | Alguna cosa que té valor per a l'organització i que per tant mereix protecció | El que tens | La base de dades PostgreSQL amb les reserves |
| Amenaça | Un esdeveniment o actor potencial capaç de causar dany a un actiu | El que existeix aquí fora, no ho controles | Un grup de ransomware que escaneja Internet buscant bases de dades exposades |
| Vulnerabilitat | Una debilitat d'un actiu o d'un control que una amenaça pot aprofitar | El que falla al teu costat, sí que ho controles | El port 5432 de PostgreSQL accessible des d'Internet amb contrasenya feble |
| Exploit | El mitjà concret (codi, tècnica o procediment) que aprofita una vulnerabilitat | L'eina que materialitza l'amenaça | Un script que prova credencials per defecte contra aquell port |
| Risc | La combinació de la probabilitat que una amenaça aprofiti una vulnerabilitat i de l'impacte resultant | Una estimació, no un fet | «Alta probabilitat d'accés no autoritzat a la BD, amb impacte crític» |
| Impacte | La conseqüència real per al negoci si el risc es materialitza | El dany, mesurable | Aturada de 2 dies, notificació a l'AEPD, pèrdua de 6 clients |
| Control | La mesura (tècnica, organitzativa o física) que redueix el risc | El que hi fas al respecte | Tancar el port, exigir VPN, rotar credencials, alertar d'intents |
La frase-tipus que els encadena. Memoritza aquesta estructura; serveix per escriure qualsevol troballa de seguretat de manera professional:
Una amenaça [grups de ransomware que escanegen Internet] podria aprofitar una vulnerabilitat [el port 5432 exposat amb credencials febles] mitjançant un exploit [un script de força bruta de credencials] sobre un actiu [la base de dades de reserves], amb un impacte [xifratge de dades, aturada del servei i notificació obligatòria a l'autoritat]. El risc resultant s'estima alt, i es mitiga amb el control [restringir l'accés a la xarxa privada i exigir autenticació per certificat].
Practica reescrivint troballes amb aquesta plantilla. Un informe que diu «tenim una amenaça de port obert» està fent servir malament les paraules: un port obert és una vulnerabilitat, no una amenaça.
Les tres confusions més freqüents:
- Amenaça vs. vulnerabilitat. L'amenaça és a fora i no l'elimines (no pots fer que els grups de ransomware deixin d'existir). La vulnerabilitat és a dins i sí que la pots tancar. La teva feina s'exerceix sobre les vulnerabilitats i els controls, no sobre les amenaces.
- Risc vs. impacte. L'impacte és «quant fa mal si passa». El risc hi incorpora a més «com de probable és que passi». Un impacte catastròfic amb probabilitat ínfima pot ser un risc menor que un impacte moderat que passa cada setmana.
- Vulnerabilitat vs. exploit. La vulnerabilitat és el forat; l'exploit és el rossinyol. Hi ha vulnerabilitats sense exploit conegut (menys urgents) i vulnerabilitats amb exploit públic i automatitzat (molt més urgents).
El catàleg detallat d'amenaces i de tipus de vulnerabilitat, amb els seus identificadors CVE i CVSS, és el contingut de la lliçó següent (01-02). La manera de calcular i prioritzar el risc amb matrius arriba a 04-01.
- La seguretat com a procés continu i com a compromís
8.1 No és un estat, és un cicle
La Marta podria contractar una auditoria, corregir totes les troballes i declarar «Nimbus és segur». Duraria poc:
- Cada setmana es publiquen vulnerabilitats noves a les dependències que fa servir l'Iván.
- Cada desplegament de CI/CD canvia el sistema, i amb ell la superfície d'atac.
- Cada persona que entra o surt de l'empresa canvia el mapa d'accessos.
- Els atacants canvien de tècnica quan l'anterior deixa de funcionar.
Per això la seguretat es modela com un cicle continu, no com un projecte amb data de fi:
flowchart LR
ID[Identificar\nactius i riscos] --> PR[Protegir\ncontrols]
PR --> DE[Detectar\nmonitoratge]
DE --> RE[Respondre\nincidents]
RE --> RC[Recuperar\ncontinuitat]
RC --> ID
Aquest cicle —identificar, protegir, detectar, respondre, recuperar— és la columna vertebral del curs: els mòduls 4 i 5 el desenvolupen sencer. Fixa't que protegir és només una cinquena part. Una organització que només inverteix en protecció i no pot detectar ni respondre està apostant a no fallar mai, cosa que no és una estratègia.
8.2 El compromís: seguretat, usabilitat i cost
Tota mesura de seguretat es paga en alguna d'aquestes monedes:
| Mesura a Nimbus | Guanya | Costa |
|---|---|---|
| Xifrar els 40 portàtils | Confidencialitat si se'n perd un | Temps de desplegament, risc de perdre claus de recuperació |
| Exigir segon factor al Rubén en cada accés | Confidencialitat, autenticitat | Segons per sessió; possible rebuig de l'equip |
| Còpies de seguretat cada hora en una altra regió | Disponibilitat, integritat | Cost d'emmagatzematge i transferència |
| Revisió manual de cada desplegament | Integritat | Velocitat de lliurament; frustració de l'equip |
| Bloquejar l'accés a la BD excepte per VPN | Confidencialitat | Fricció per a la consultoria externa |
La pregunta correcta mai no és «això és segur?», perquè la resposta sempre és «no del tot». La pregunta correcta és:
Quant risc estem acceptant, qui l'ha acceptat per escrit i a canvi de què?
Aquest «qui» importa molt: l'acceptació d'un risc és una decisió de negoci, no tècnica. La Lucía pot explicar que no xifrar les còpies suposa tal risc, però qui accepta conviure-hi és la direcció. Hi tornarem a la lliçó de polítiques de seguretat (04-02).
I un corol·lari pràctic: una mesura de seguretat que la gent no pot complir no protegeix, sinó que genera dreceres. Si Nimbus obliga a canviar la contrasenya cada 30 dies amb regles impossibles, acabarà havent-hi un post-it sota el teclat. Aquest és el principi d'acceptabilitat psicològica, que veurem formalment a 01-03.
Errors Comuns i Consells
Errors comuns en començar en seguretat:
- Creure que «no tenim res interessant». És l'error més car en una pime. Nimbus no té secrets d'estat, però té dades personals de milers de persones, una infraestructura al núvol que un atacant pot fer servir per minar criptomonedes i una relació de confiança amb clients que serveix de pont cap a ells. La majoria d'atacs són oportunistes i automatitzats: no trien la víctima, la troben.
- Reduir la seguretat a la confidencialitat. Molts equips pensen només en «que no robin dades» i descuiden integritat i disponibilitat, que són les que aturen el negoci de manera més immediata.
- Fer servir «amenaça» per a tot. «Tenim diverses amenaces a l'informe d'escaneig» — no: tens vulnerabilitats. Fer servir el vocabulari amb precisió millora les decisions, perquè cada terme apunta a un tipus d'acció diferent.
- Confondre autenticat amb autoritzat. És l'origen d'una fracció enorme de fuites de dades en APIs multiclient com la de Nimbus.
- Tractar la seguretat com una fase final. «Quan acabem el producte, fem la revisió de seguretat». Corregir una fallada de disseny després costa ordres de magnitud més que evitar-la.
- Confiar que el proveïdor de núvol «ja se n'encarrega». El proveïdor assegura la infraestructura; la configuració, els permisos i les dades són responsabilitat de Nimbus. És el model de responsabilitat compartida, que es detalla a 05-07.
Consells:
- Davant de qualsevol decisió tècnica, pregunta't: això afecta la C, la I o la D? És un filtre sorprenentment eficaç.
- Escriu les troballes amb la frase-tipus de l'apartat 7. T'obligarà a saber si estàs descrivint una amenaça, una vulnerabilitat o un risc.
- Quan proposis un control, indica sempre el seu cost i la seva fricció. Una proposta de seguretat sense cost declarat no s'aprova, s'ignora.
- Comença pel que saps que tens. Res del que ve en aquest curs funciona sense inventari (01-04).
Exercicis
Exercici 1 — Classificar incidents segons la tríada CIA
Per a cada situació de Nimbus, indica quina propietat o propietats de la tríada CIA es veuen afectades i justifica-ho breument:
- La Lucía descobreix que el bucket S3 amb els adjunts de les cites (informes mèdics escanejats) permet lectura anònima des de fa 4 mesos.
- Un desplegament introdueix un error que fa que el camp
estatde les reserves es desi sempre com apendent, encara que l'usuari la confirmi. - El proveïdor de correu transaccional pateix una caiguda de 6 hores i no surten els recordatoris de cita.
- Un exempleat conserva el seu compte actiu i accedeix al tauler d'administració dues setmanes després de marxar, exporta la llista de clients i esborra el seu propi registre del log.
Exercici 2 — Reescriure una troballa amb vocabulari correcte
El paràgraf següent, escrit per un becari, barreja els termes. Identifica els usos incorrectes i reescriu-lo utilitzant la frase-tipus de l'apartat 7.
«Hem detectat un risc greu: el servidor de proves té una amenaça perquè fa servir la contrasenya
admin1234. L'impacte és que hi ha un exploit. Recomanem un control de vulnerabilitat.»
Exercici 3 — Separar autenticació, autorització i auditoria
Llegeix aquest endpoint de l'API de Nimbus i identifica quins elements d'AAA hi són presents, quins falten i quina propietat de seguretat queda compromesa per cada absència.
@router.get("/api/v1/clientes-finales/exportar")
async def exportar_clients(usuari=Depends(get_usuari_actual), db=Depends(get_db)):
files = await db.fetch_all("SELECT * FROM clients_finals")
return {"total": len(files), "dades": files}Solucions
Solució 1
- Confidencialitat, de manera greu: documents amb informació de salut accessibles sense autorització. Afegit: si el bucket també permetés escriptura, hi hauria a més un problema d'integritat; convé comprovar-ho. El fet que porti 4 mesos agreuja l'impacte, perquè no es pot acotar qui hi va accedir (fallada de traçabilitat).
- Integritat: la dada emmagatzemada no reflecteix la realitat. No hi ha accés indegut ni caiguda del servei, però la informació és incorrecta. Secundàriament afecta la disponibilitat funcional del servei (les clíniques no poden operar amb una agenda que no confirma), tot i que la causa arrel és d'integritat.
- Disponibilitat: el servei contractat (avisar els pacients) no està disponible, encara que l'API respongui. És un bon exemple que la disponibilitat es mesura des del punt de vista del client, no del servidor, i que depèn també de tercers.
- Les tres, i a més propietats esteses: confidencialitat (exporta dades sense autorització), integritat (altera el registre esborrant el seu rastre), disponibilitat no directament, però sí traçabilitat i no-repudi destruïts en manipular l'auditoria. És també una fallada de procés: la baixa de l'empleat no va desencadenar la revocació d'accessos.
Solució 2
Usos incorrectes:
- «té una amenaça perquè fa servir la contrasenya
admin1234» → una contrasenya feble és una vulnerabilitat, no una amenaça. - «L'impacte és que hi ha un exploit» → un exploit no és un impacte; l'impacte és la conseqüència per al negoci.
- «control de vulnerabilitat» → un control és una mesura concreta; cal anomenar-la.
- «Hem detectat un risc greu» aplicat a un fet observat: el que s'ha observat és la vulnerabilitat; el risc és l'estimació que se'n deriva.
Reescriptura correcta:
Hem identificat una vulnerabilitat al servidor de proves: el compte administratiu fa servir la contrasenya per defecte
admin1234. L'amenaça corresponent són els processos automatitzats que rastregen Internet provant credencials conegudes, que disposen d'exploits públics i trivials per a aquest cas. L'actiu afectat és el servidor de proves, que a més conté una còpia parcial de dades reals de reserves. L'impacte estimat inclou l'accés no autoritzat a dades personals, l'ús del servidor com a punt de salt cap a la xarxa interna i la possible notificació obligatòria a l'autoritat de control. Valorem el risc com a alt per la facilitat d'explotació. Controls proposats: rotar la credencial a una contrasenya única generada, restringir l'accés administratiu a la xarxa privada i eliminar les dades reals de l'entorn de proves.
Solució 3
- Autenticació: present. La dependència
get_usuari_actualvalida qui fa la petició. - Autorització: absent per partida doble. No es comprova (a) que l'usuari tingui un permís específic d'exportació, ni (b) que les dades retornades pertanyin al seu tenant. La consulta
SELECT * FROM clients_finalssenseWHEREretorna els clients finals de tots els negocis clients de Nimbus. Qualsevol usuari autenticat, inclòs el recepcionista d'un gimnàs, obté la base de dades completa. Propietat compromesa: confidencialitat, de manera massiva. - Auditoria: absent. Una exportació completa de dades personals és exactament el tipus d'acció que ha de quedar registrada. Sense això es perden traçabilitat i no-repudi: si demà apareixen aquestes dades publicades, Nimbus no podrà saber qui les va treure.
- Extra — disponibilitat: carregar la taula sencera en memòria i serialitzar-la en JSON, sense paginació ni límits, fa l'endpoint vulnerable a un esgotament de recursos, igual que a l'apartat 4.3.
Versió corregida en l'essencial:
@router.get("/api/v1/clientes-finales/exportar")
async def exportar_clients(peticio: Request, usuari=Depends(get_usuari_actual), db=Depends(get_db)):
if "clients:exportar" not in usuari.permisos: # autoritzacio per permis
raise HTTPException(403, "Permis insuficient")
files = await db.fetch_all(
"SELECT id, nom, email FROM clients_finals WHERE tenant_id = :t LIMIT 5000",
{"t": usuari.tenant_id}, # autoritzacio per recurs
)
logger.info("event=exportacio_clients actor_id=%s tenant=%s files=%s ip=%s",
usuari.id, usuari.tenant_id, len(files), peticio.client.host) # auditoria
return {"total": len(files), "dades": files}Conclusió
En aquesta lliçó has conegut Nimbus Reservas —la pime valenciana el SaaS de reserves de la qual ens servirà de laboratori durant tot el curs— i has fixat el vocabulari que fa possible la resta. Has vist que seguretat de la informació, seguretat informàtica i ciberseguretat són cercles concèntrics i no sinònims; que la tríada CIA (confidencialitat, integritat, disponibilitat) és el filtre amb què avaluar qualsevol decisió tècnica, i com es trenca cadascuna de les seves propietats amb codi real: una consulta sense filtre de tenant, un UPDATE sense WHERE, un endpoint sense paginació. Has afegit a la tríada l'autenticitat, el no-repudi i la traçabilitat, i has ordenat el trio AAA —autenticar, autoritzar, auditar— separant explícitament les tres responsabilitats en un endpoint de FastAPI.
Sobretot, has separat set paraules que es confonen cada dia: actiu, amenaça, vulnerabilitat, exploit, risc, impacte i control, i tens una frase-tipus que les encadena per redactar qualsevol troballa amb precisió. I has acceptat la premissa incòmoda de l'ofici: la seguretat no és un estat que s'assoleix, sinó un cicle que es manté, i sempre es paga en usabilitat o en diners.
Amb el vocabulari ja al seu lloc, toca omplir-lo de contingut. A la lliçó següent, Tipus d'Amenaces i Vulnerabilitats (01-02), veurem el catàleg real: quines amenaces existeixen segons el seu origen i el seu objectiu, quines famílies de programari maliciós hi ha i com es distingeixen, quins tipus de vulnerabilitats trobarem a l'entorn de Nimbus, i com es llegeixen els identificadors que fa servir tota la indústria —CWE, CVE i CVSS— per anomenar i prioritzar els forats que cal tancar.
Curs de Fonaments de Seguretat Informàtica
Mòdul 1: Introducció a la Seguretat Informàtica
- Conceptes Bàsics de Seguretat Informàtica
- Tipus d'Amenaces i Vulnerabilitats
- Principis de la Seguretat Informàtica
- Actius, Superfície d'Atac i Actors d'Amenaça
Mòdul 2: Ciberseguretat
- Definició i Abast de la Ciberseguretat
- Tipus d'Atacs Cibernètics
- Enginyeria Social i Pesca de Credencials
- Mesures de Protecció en Ciberseguretat
- Identitat, Autenticació i Control d'Accés
- Casos d'Estudi d'Incidents de Ciberseguretat
Mòdul 3: Criptografia
- Introducció a la Criptografia
- Criptografia Simètrica
- Criptografia Asimètrica
- Funcions Hash, HMAC i Emmagatzematge de Contrasenyes
- Protocols Criptogràfics
- Gestió de Claus, Certificats i PKI
- Aplicacions de la Criptografia
Mòdul 4: Gestió de Riscos i Mesures de Protecció
- Avaluació de Riscos
- Polítiques de Seguretat
- Controls de Seguretat
- Risc de Tercers i Cadena de Subministrament
- Pla de Resposta a Incidents
- Recuperació davant Desastres i Continuïtat de Negoci
Mòdul 5: Eines i Tècniques de Seguretat
- Eines d'Anàlisi de Vulnerabilitats
- Tècniques de Monitoratge i Detecció
- Proves de Penetració
- Seguretat en Xarxes
- Seguretat en Aplicacions
- Enfortiment de Sistemes i Seguretat de l'Endpoint
- Seguretat al Núvol i en Contenidors
Mòdul 6: Bones Pràctiques i Normatives
- Bones Pràctiques en Seguretat Informàtica
- Normatives i Estàndards de Seguretat
- Protecció de Dades Personals i RGPD a la Pràctica
- Compliment i Auditoria
- Formació i Sensibilització
- Ètica, Aspectes Legals i Divulgació Responsable
