- Les vulnerabilitats de programari són debilitats explotables que poden provocar filtracions de dades, ransomware i caigudes de servei si no es gestionen a temps.
- Les fallades més comunes inclouen injeccions (SQL, ordres), XSS, desbordaments de memòria intermèdia, control d'accés defectuós, APIs insegures i programari sense pegats.
- La combinació de revisions de codi, proves de penetració, escàners especialitzats i una bona gestió de pegats redueix dràsticament la superfície datac.
- La protecció efectiva també exigeix abordar vulnerabilitats de maquinari i del factor humà mitjançant polítiques, formació i una cultura sòlida de ciberseguretat.
Les vulnerabilitats de programari són la baula feble de la majoria de sistemes digitals actuals: una petita falla al codi, una mala configuració o un pegat sense aplicar poden obrir la porta a bretxes de dades, ransomware o interrupcions de servei molt serioses. Encara que moltes organitzacions ja tenen antivirus, tallafocs i altres capes de defensa, si el programari és vulnerable, tot aquest esforç es pot ensorrar en qüestió de minuts.
Qualsevol cosa dissenyada per persones és susceptible de fallar i el programari no n'és cap excepció. Des d'aplicacions web i API fins a sistemes operatius, firmware o controladors del nucli, totes aquestes peces poden contenir errors explotables. Entendre què són les vulnerabilitats, quins tipus hi ha, com es detecten i, sobretot, com es corregeixen i es gestionen a temps és clau per evitar ensurts que acabin en pèrdues milionàries, sancions regulatòries o danys reputacionals.
Què és una vulnerabilitat de programari i per què tant importa
En l'àmbit de la informàtica, una vulnerabilitat és una debilitat en un sistema, aplicació, dispositiu o procés que un atacant pot aprofitar per fer malbé, alterar o accedir a informació o serveis de manera no autoritzada. Aquesta debilitat pot estar al codi (errors de programació), al maquinari, a la configuració, als procediments interns o fins i tot en el comportament de les persones.
Una vulnerabilitat per si sola no és encara un atac , és un risc latent. El problema sorgeix quan algú aconsegueix explotar-la, ja sigui de manera intencionada (un ciberdelinqüent llançant un exploit) o accidental (un usuari provocant un bloqueig en introduir dades inesperades). Un simple desbordament de memòria intermèdia mal gestionada pot desencadenar des d'una denegació de servei fins a l'execució de codi arbitrari.
L'impacte d'una vulnerabilitat explotada pot ser enorme : robatori o exposició de dades personals i financeres, desplegament de codi maliciós (malware), xifrat d'informació mitjançant ransomware, caiguda de serveis crítics o fins i tot comprometre infraestructures d'alt nivell. En el cas d'aplicacions web, per exemple, una injecció SQL o XSS es poden convertir a la porta d'entrada a la resta de la xarxa corporativa.
Detectar i arreglar les vulnerabilitats com més aviat millor és molt més barat que reaccionar després d'un incident. Integrar la seguretat en el cicle de vida del desenvolupament de programari (SDLC) i adoptar enfocaments tipus DevSecOps permet “moure la seguretat a l'esquerra”: trobar fallades en fases primerenques de disseny i codificació, quan corregir-los és menys costós que pegats sistemes ja desplegats en producció.
Una vulnerabilitat es pot materialitzar de formes molt diferents . Pot ser un servei escoltant en un port innecessari, una xarxa Wi-Fi oberta, un port exposat al tallafoc, una política de contrasenyes inexistent o unes instal·lacions sense control d'accés físic. Totes aquestes situacions, encara que no semblin purament “de programari”, formen part del conjunt de vulnerabilitats que un atacant pot encadenar per assolir el seu objectiu.

Principals tipus de vulnerabilitats de programari
Les vulnerabilitats de programari abasten múltiples categories , des d'errors clàssics de memòria fins a errors de lògica en l'autenticació o mancances en el disseny arquitectònic. A continuació es reuneixen els tipus més habituals i rellevants avui dia, molts directament reflectits en llistes com OWASP Top 10.
Vulnerabilitats de dia zero
Una vulnerabilitat de dia zero és una fallada desconeguda pel fabricant que ja està sent explotada per atacants abans que hi hagi un pegat disponible. Casos com la vulnerabilitat de Log4j van mostrar com de perilloses poden ser aquestes situacions: milions de sistemes van quedar exposats mentre els proveïdors preparaven correccions contrarellotge.
En una vulnerabilitat de dia zero, els atacants tenen avantatge temporal perquè disposen d'un exploit funcional mentre els defensors segueixen “a cegues”. En aquest escenari, la detecció basada en comportament, el filtratge de trànsit, la segmentació de xarxes i les polítiques de mínim privilegi són essencials per reduir l'impacte mentre arriben els pegats oficials.
Execució remota de codi (RCE)
Una vulnerabilitat dexecució remota de codi permet a un atacant executar instruccions malicioses en un sistema objectiu sense necessitat daccés físic. És una de les categories més crítiques perquè, una vegada aconseguida, pot servir per instal·lar codi maliciós (malware), accedir a dades sensibles, crear portes del darrere o pivotar cap a altres sistemes interns.
Les RCE solen recolzar-se en altres fallades subjacents , com ara desbordaments de memòria, injeccions o problemes en la deserialització de dades. La seva explotació amb èxit sol equivaldre a comprometre completament el sistema afectat, sobretot si l'aplicació vulnerable s'executa amb privilegis elevats.
Problemes de validació i desinfecció de dades
Una enorme quantitat d'atacs neix de dades d'entrada mal validades . Si una aplicació no comprova ni neteja les dades que rep (formularis, paràmetres d'URL, capçaleres, JSON, etc.), un atacant pot colar contingut maliciós que s'interpreti com a codi o instruccions inesperades.
Aquí encaixen diverses vulnerabilitats molt conegudes , com la injecció SQL, el Cross-Site Scripting (XSS), els errors de format en cadenes o certs desbordaments de memòria intermèdia. Validar tipus, rangs, formats i longitud de tots els camps, així com fer servir llistes blanques i preparar les consultes de forma segura, és la base per minimitzar aquest tipus de riscos i forma part de les bones pràctiques de desenvolupament segur.
Injecció SQL i altres tipus d'injecció
La injecció SQL (SQLi) és un dels atacs més freqüents contra aplicacions web que interactuen amb bases de dades. Consisteix a inserir sentències SQL manipulades en camps d'entrada no protegits (formularis de login, cerques, filtres, etc.) per forçar l'aplicació a executar consultes no previstes pel desenvolupador.
Aquest tipus de vulnerabilitat permet des de llegir taules completes (incloent-hi contrasenyes i informació de targetes de crèdit) fins a modificar o esborrar registres, canviar credencials o inutilitzar bases de dades senceres. Atès que els formularis i consultes SQL són omnipresents, gairebé qualsevol motor (MySQL, PostgreSQL, SQL Server, Oracle, fins i tot algunes implementacions tipus MongoDB que suporten consultes similars) es pot veure afectat si el codi no està ben protegit.
Les injeccions no es limiten a SQL . També hi ha injeccions d'ordres del sistema operatiu, injecció LDAP, injecció en plantilles, injecció de capçaleres o deserialització insegura. Totes comparteixen una idea: el programari interpreta com a instruccions una cosa que només hauria de ser dades, perquè no s'han aplicat controls ni separació adequats.
Cross-Site Scripting (XSS) i falsificació de petició en llocs creuats (CSRF)
El Cross-Site Scripting permet a un atacant injectar scripts a pàgines legítimes que altres usuaris visiten amb normalitat. Si l'aplicació no filtra correctament el contingut mostrat, l'script maliciós pot robar sessions, capturar credencials o alterar el comportament del web des del navegador de la víctima.
Per la seva banda, la falsificació de petició en llocs creuats (CSRF) enganya el navegador d'un usuari autenticat perquè executi accions no desitjades en una aplicació fiable (com canviar una contrasenya o fer una transferència), aprofitant que el navegador envia automàticament les galetes de sessió. La protecció es basa en tokens anti-CSRF, capçaleres adequades i mesures addicionals de verificació.
Desbordament de memòria intermèdia i errors de format
El desbordament de memòria intermèdia és un clàssic de la seguretat en C i C++ . Es produeix quan un programa escriu més dades de les que caben en una zona de memòria reservada (búfer), sobreescrivint àrees adjacents i podent alterar variables, adreces de retorn o estructures internes del sistema.
Aquest comportament no controlat pot provocar errors, bloquejos o, en el pitjor dels casos, l'execució arbitrària de codi. De manera similar, els errors de format en cadenes (per exemple, ús inadequat de funcions d'impressió amb paràmetres controlats per l'usuari) permeten manipular la memòria o filtrar informació sensible si no es programen amb cura.
Control d'accés defectuós i disseny insegur
El control d'accés defectuós apareix quan l'aplicació no comprova correctament què pot fer cada usuari, i permet accions o accessos que haurien d'estar restringits. Això inclou des de funcions d'administració visibles per a qualsevol autenticat, fins a API que no apliquen controls basats en rol.
El disseny insegur, per la seva banda, reflecteix errors arquitectònics més profunds, no simples errors de codificació. Són decisions estructurals problemàtiques, com ara no contemplar la separació per capes, no incloure mecanismes de registre i traçabilitat, o no planificar la protecció de dades sensibles des de l'inici. Corregir aquests punts sol requerir canvis importants a la base del sistema.
Errors criptogràfics i manca de xifrat
Els errors criptogràfics abasten des d'usar algorismes obsolets (com xifrats ja trencats o funcions hash insegures) fins a implementar mal protocols o reutilitzar claus de forma inadequada. Tot això provoca que la protecció teòrica que ofereix la criptografia s'evapori a la pràctica.
L'absència de xifrat també és una vulnerabilitat en si mateixa . Emmagatzemar dades clarament en bases de dades, fitxers o còpies de seguretat, o no xifrar la comunicació entre client i servidor, facilita enormement la tasca d'un atacant que aconsegueixi accés a l'entorn o intercepti el trànsit de xarxa.
API febles i mal configurades
Les API han esdevingut un objectiu prioritari en la gestió de riscos de ciberseguretat perquè són la porta d'entrada silenciosa a dades i funcions crítiques. Moltes organitzacions blinden les interfícies web visibles, però deixen menys protegides les API internes, mòbils o de tercers.
Entre les fallades típiques a API trobem la manca d'autenticació robusta, una autorització deficient, exposició excessiva de dades, missatges d'error massa detallats o absència de limitació de peticions (rate limiting). Tot això converteixen les APIs en un vector perfecte per automatitzar atacs a gran escala.
Vulnerabilitats per programari desactualitzat i sense pegats

El programari sense pegats és probablement el taló d'Aquil·les més comú en qualsevol organització. Cada cop que un fabricant publica una actualització de seguretat i no s'aplica, es deixa una porta oberta amb un pany el funcionament del qual ja és públic, sovint documentat en bases de dades com el llistat CVE (Common Vulnerabilities and Exposures); per això el manteniment preventiu de programari és essencial.
Aquestes vulnerabilitats sense pegats afecten tot tipus de components : sistemes operatius, aplicacions de negoci, navegadors, plugins, firmware de dispositius de xarxa, controladors de maquinari, etc. Com més temps passa sense aplicar el pegat, més gran és la probabilitat que apareguin exploits funcionals i comencin a ser utilitzats de forma massiva.
Els ciberdelinqüents busquen activament sistemes desactualitzats perquè són objectius de baix esforç: només cal escanejar rangs d'IP o serveis publicats per localitzar versions conegudes com a vulnerables i llançar atacs automatitzats, sense necessitat d'enginyeria complexa.
Per què moltes vulnerabilitats no es fan pegats
Tot i que evident que sembla “pegat sempre” , les organitzacions es troben amb diversos obstacles pràctics: volum d'actualitzacions, dependència entre sistemes, manca de temps o personal, i entorns cada vegada més distribuïts.
Entre els factors més habituals hi ha els problemes logístics (milers d'aplicacions diferents per actualitzar), les limitacions de recursos (equips de TI saturats, manca de pressupost), la complexitat de sistemes molt interconnectats (un pegat pot trencar compatibilitats) i, més recentment, la dificultat de gestionar pegats en dispositius remots o fora de la xarxa corporativa.
Els sistemes heretats representen un cas especialment delicat . Molts equips antics deixen de rebre suport del fabricant, de manera que ja no hi ha pegats oficials. Tot i això, continuen sent fonamentals per a processos crítics, per la qual cosa retirar-los no és tan senzill. En aquests casos cal contemplar mesures com ara el seu aïllament de la xarxa o la virtualització controlada.
Riscos del programari sense pegats
Les conseqüències de no aplicar pegats de seguretat són molt àmplies . En primer lloc, augmenten exponencialment l'exposició a ciberatacs; en segon lloc, poden implicar incompliments normatius; i, finalment, arrosseguen efectes econòmics i reputacionals que es poden prolongar durant anys.
Des del punt de vista de ciberseguretat, el programari sense pegats s'aprofita per llançar filtracions de dades, infeccions de codi maliciós variades o grans campanyes de ransomware. Casos mediàtics com l'atac de WannaCry van explotar vulnerabilitats conegudes en sistemes Windows que no havien estat actualitzats, afectant centenars de milers d'equips a tot el món.
En sectors regulats (finances, salut, serveis de pagament) , mantenir sistemes desactualitzats pot violar normes com ara el RGPD, HIPAA o PCI DSS, que exigeixen aplicar mesures raonables per protegir les dades. Les sancions poden arribar a un percentatge significatiu de la facturació anual, a més a més del cost reputacional associat a una bretxa pública.
El dany econòmic directe d'un incident per vulnerabilitats sense pegats inclou resposta a incidents, anàlisi forense, restauració de còpies, assessoria legal, avisos a clients i possibles compensacions. A això se sumen les pèrdues per inactivitat, la fugida de clients i el cost de reforçar després les mesures de seguretat.
Altres àrees de vulnerabilitat: maquinari i factor humà
La seguretat no acaba al programari de les aplicacions . El maquinari sobre el qual s'executen aquestes aplicacions i les persones que les fan servir són part essencial de la superfície d'atac. Un pla de ciberseguretat seriós no pot ignorar aquests elements.
Vulnerabilitats de maquinari
En l'àmbit del maquinari, moltes debilitats vénen de fàbrica o de mala gestió posterior. Dispositius que surten amb contrasenyes per defecte, encaminadors o càmeres no actualitzats, equips falsificats o firmware amb errors coneguts són exemples habituals.
Alguns riscos habituals de maquinari inclouen contrasenyes predeterminades mai canviades, absència de mesures contra l'accés físic no autoritzat, microprogramari sense actualitzar, dispositius sense suport oficial, atacs per fallades (fault injection) o l'ús de maquinari falsificat amb possibles modificacions malicioses.
A més, molts components d'infraestructura tenen una vida útil llarga i es queden obsolets mentre noves amenaces van apareixent. Sense plans de renovació, segmentació i enduriment, es converteixen en baules febles molt difícils de protegir.
Vulnerabilitats relacionades amb el personal
El factor humà segueix sent un dels majors vectors de risc . Empleats que usen contrasenyes febles o repetides, cauen en correus de phishing, connecten dispositius no autoritzats, comparteixen credencials o ignoren els procediments de seguretat, sense mala intenció en molts casos, poden tirar per terra les millors defenses tècniques.
Entre les vulnerabilitats més comunes vinculades al personal hi ha els accessos a xarxes insegures, la manca de consciència davant del phishing, l'ús de contrasenyes previsibles, la instal·lació de programari sense autorització, l'incompliment de polítiques corporatives o les amenaces internes per part de treballadors descontents.
Mitigar aquests riscos exigeix molt més que una política escrita . Cal formar i conscienciar de manera contínua, realitzar simulacions (per exemple, campanyes de pesca intern controlat), supervisar el compliment de normes i fomentar una cultura en què reportar incidents o comportaments sospitosos sigui natural.
CVE i vulnerabilitats avançades: exemple d'un cas al nucli Linux
Algunes vulnerabilitats afecten capes molt baixes del sistema , com el nucli del sistema operatiu o els mòduls de virtualització. Un exemple il·lustratiu és una fallada documentada com a CVE-2026-23005, relacionada amb la gestió de l'estat de la FPU i les instruccions XSAVE/XRSTOR en entorns x86 amb virtualització KVM.
En aquest cas concret, el problema sorgeix amb el maneig del registre XFD i el camp XSTATE_BV dins de l'estat XSAVE de les màquines virtuals convidades. Si determinades característiques de la FPU (com extensions avançades tipus AMX) es deshabiliten mitjançant XFD però romanen marcades com “en ús” a XSTATE_BV, el nucli pot intentar restaurar un estat inconsistent i provocar una excepció #NM que arribi fins i tot a causar un pànic del sistema.
El desencadenant pot ser, per exemple, una escriptura al MSR IA32_XFD per part de la màquina convidada, combinada amb una interrupció o un canvi de context just en el moment en què encara no s'ha sincronitzat correctament l'estat FPU de la VM. També es pot produir si l'espai d'usuari introdueix estats XSAVE incoherents mitjançant interfícies com KVM_SET_XSAVE.
La solució adoptada al nucli consisteix a netejar XSTATE_BV per a aquelles característiques deshabilitades per XFD sempre que s'actualitza l'estat XSAVE de la màquina convidada. D'aquesta manera, es garanteix que XRSTOR no intenti restaurar informació de components que segons XFD estan inactius. Aquesta correcció manté el comportament coherent amb les especificacions d'Intel i evita que es produeixin excepcions de dispositiu no disponible.
Aquest exemple mostra que les vulnerabilitats no sempre són òbvies per a les persones que només veuen la capa d'aplicacions. Sovint resideixen en la interacció entre maquinari, nucli i virtualització, i requereixen un alt grau de coneixement per ser identificades i corregides. Per això és important seguir de prop els avisos de seguretat del sistema operatiu i aplicar actualitzacions de baix nivell amb diligència.
Mètodes i eines per detectar vulnerabilitats
Detectar vulnerabilitats de manera sistemàtica implica combinar mètodes tant manuals com automatitzats. No n'hi ha prou amb un únic enfocament: revisar codi, fer proves de penetració, escanejar sistemes i realitzar proves amb usuaris maliciosos simulats són peces que es complementen entre si.
Revisió de codi font
La revisió de codi és una de les defenses més eficaces per detectar vulnerabilitats abans que el programari arribi a producció. Pot ser manual mitjançant peer review entre desenvolupadors o assistida per eines d'anàlisi estàtica que automàticament busquen patrons de risc.
En revisions manuals, els responsables han de conèixer bé el llenguatge utilitzat, les bones pràctiques de seguretat (control d'errors, validació d'entrades, gestió de memòria, autenticació, xifratge) i disposar de llistes de comprovació clares. Revisar únicament el “happy path” no és suficient; cal cercar casos límit i condicions de carrera.
Les eines d'anàlisi estàtica i SAST complementen aquest procés escanejant grans bases de codis a la recerca de patrons coneguts vinculats a vulnerabilitats típiques: injeccions, XSS, buffer overflows, ús de funcions perilloses, etc. Tot i que generen falsos positius, ajuden a no passar per alt certs problemes recurrents.
Proves de penetració i escanejaments de vulnerabilitats
Les proves de penetració simulen atacs reals contra aplicacions, infraestructures i API per identificar vectors d'intrusió, encadenant vulnerabilitats tal com faria un atacant. Poden ser de caixa negra (sense informació prèvia), caixa grisa (amb una mica de context) o caixa blanca (amb accés al codi ia l'arquitectura).
En paral·lel, els escàners de vulnerabilitats recorren ports , serveis i aplicacions cercant versions conegudes com a vulnerables o configuracions problemàtiques. Són eines ideals per mantenir un mapa actualitzat dels riscos presents a l'organització i prioritzar la remediació.
Eines especialitzades: OWASP ZAP, Nikto i Acunetix
OWASP ZAP és una eina open source molt estesa per analitzar aplicacions web. Permet interceptar trànsit, automatitzar atacs de descoberta, llançar proves d'injecció SQL, XSS, comprovacions d'autenticació, etc. i genera informes amb les vulnerabilitats detectades i el seu impacte.
Nikto se centra en l'anàlisi de servidors web , comprovant configuracions febles, versions obsoletes, directoris i fitxers sensibles, així com capçaleres mal configurades. És especialment útil com a escàner ràpid per identificar problemes bàsics però perillosos en entorns web.
Acunetix és una solució comercial més completa que combina escanejats automàtics profunds sobre aplicacions web i mòbils, amb proves específiques per a injeccions de codi, errors d'autenticació i autorització, XSS, CSRF i moltes altres categories. Els seus informes solen incloure recomanacions concretes per solucionar cada troballa.
Proves d'usuari amb enfocament de seguretat
A més de les proves tècniques, és clau incorporar proves dusuari orientades a seguretat. No es tracta només de verificar que l'aplicació “funciona”, sinó de comprovar com es comporta davant d'usuaris maliciosos, entrades incorrectes o fluxos no previstos.
Les proves d'injecció de dades, per exemple , se centren a introduir dades especialment construïdes (caràcters especials, càrregues llargues, estructures sospitoses) per comprovar com les processa l'aplicació. Si es detecta que el programari no filtra adequadament, la porta s'obre a injeccions SQL, XSS i altres atacs.
Les proves d'autenticació verifiquen la robustesa del login , la gestió de sessions, els mecanismes de recuperació de contrasenya i el control d'accessos per rol. S'intenta saltar-se el login, escalar privilegis, reutilitzar sessions o manipular tokens per avaluar la solidesa de tot el sistema d'identificació.
Bones pràctiques per prevenir i gestionar vulnerabilitats
Una estratègia eficaç davant de vulnerabilitats combina prevenció , detecció primerenca i resposta ràpida. No es pot evitar el 100 % de les fallades, però sí que se'n pot reduir el nombre, la gravetat i el temps en què romanen explotables.
Manteniment i gestió de pegats
Mantenir sistemes i aplicacions actualitzats és bàsic i forma part del manteniment de programari . Això implica aplicar pegats de seguretat tan aviat com sigui raonable, establir finestres de manteniment regulars, provar les actualitzacions en entorns de preproducció i automatitzar al màxim el desplegament.
Les solucions de gestió automatitzada de pegats ajuden enormement a orquestrar les actualitzacions de sistemes operatius i programari de tercers, prioritzant segons criticitat i reduint la intervenció manual. Integrar aquestes eines amb la seguretat d'endpoints (antivirus, EDR, tallafocs) aporta una visió unificada de l'estat de protecció.
La priorització basada en riscos és clau : no tots els pegats són igual d'urgents. Utilitzar mètriques com CVSS, combinar informació d'intel·ligència d'amenaces (saber quines vulnerabilitats s'estan explotant activament) i considerar el paper de cada sistema al negoci ajuda a decidir què corregir primer.
Formació del personal i cultura de seguretat
Cap tecnologia compensa la manca de conscienciació . Formar periòdicament tot el personal sobre phishing, ús de contrasenyes, protecció de dispositius, manipulació d'informació sensible i informe d'incidents redueix de forma tangible la superfície d'atac.
A més, és important fomentar una cultura on la seguretat sigui responsabilitat de tots, no només del departament d'IT. Això inclou desenvolupadors, operacions, recursos humans, finances i alta direcció. La seguretat ha d'incorporar-se a processos i decisions diàries, no ser un afegit d'última hora.
Polítiques, auditories i resposta davant d'incidents
Definir polítiques clares de seguretat ajuda a marcar límits sobre què és permès i què no: ús de programari, accessos remots, gestió de contrasenyes, emmagatzematge de dades, dispositius personals (BYOD), etc. Però aquestes polítiques s'han de revisar i auditar regularment per comprovar que es compleixen.
Les auditories de seguretat periòdiques permeten detectar desviacions , identificar sistemes obsolets, processos mal implementats o vulnerabilitats que han passat desapercebudes. A partir d'elles s'elaboren plans d'acció correctius i se'n reevaluen les prioritats.
Comptar amb un pla de resposta davant d'incidents ben definit és fonamental per minimitzar l'impacte quan, inevitablement, falli alguna cosa. Aquest pla ha dincloure procediments de detecció, contenció, eradicació, recuperació i comunicació, així com responsabilitats clares per a cada equip implicat.
En un entorn on les amenaces evolucionen constantment , l'única forma realista de mantenir-se fora de perill és assumir que les vulnerabilitats sempre existiran, però treballar perquè siguin menys, es descobreixin abans i s'explotin durant el menor temps possible; combinant bon disseny, desenvolupament segur, gestió de pegats disciplinats, eines especialitzades, maquinari protegit i, sobretot, persones formades i conscients del seu paper en la seguretat de l'organització.