Nou bones pràctiques per revisar la seguretat del codi del vostre web

23 juny, 2020

Avui al nostre bloc us oferim un conjunt de nou bones pràctiques que hauríeu d’implantar en la vostra rutina de funcionament per revisar la seguretat del codi del vostre web i mantenir-lo aïllat dels atacs dels cibercriminals. Aquestes propostes us recomanem que les incorporeu en el cicle de vida del desenvolupament del programari, altrament conegut com a Software Development Life Cycle (SDLC).

La constant i creixent demanda del mercat de noves aplicacions de tota mena fa que les empreses que les creen centrin la seva feina més en proporcionar una bona experiència a l’usuari que no pas en garantir la seguretat de l’aplicació mateixa i, per tant, dels aparells on aquesta està instal·lada. Massa sovint trobem vulnerabilitatas als sistemes que ni tan sols han estat detectats pels creadors de les aplicacions.

Revisar el codi ajuda a identificar les vulnerabilitats i debilitats de la seguretat del sistema. El que anomenem “revisions segures” permeten crear un conjunt d’estàndards de seguretat vinculades al codi que garanteix que s’han seguit les millors pràctiques i que el desenvolupament de la codificació s’ha fet amb totes les garanties i sense vulnerabilitats. Les revisions segures de codi fan servir eines automatitzades, llistes de comprovació i altres experiències de testeig d ela seguretat que permeten identificar les vulnerabilitats de la seguretat.

A continuació us recomanem alguns dels processos més efectius de revisió segura del codi:

1. Crear una llista de verificació completa de revisió segura dels codis

Cada solució de programari té els seus propis requisits i característiques de seguretat, de manera que una revisió de codi pot variar d’una aplicació de programari a una altra. Disposar d’una llista segura i completa de revisió de codis us ajuda a garantir que no us perdeu els articles clau i que realitzeu una revisió completa del codi.

Aquestes són algunes de les preguntes que us heu de plantejar mentre feu una revisió segura del codi:

• Heu implementat controls d’autorització adequats?
• Heu implementat controls d’autenticació adequats? Teniu una autenticació de dos factors o multi-factor?
• Es xifren les dades sensibles? Com es gestionen les claus de xifratge?
• Els missatges d’error mostren informació sensible a l’usuari?
• Teniu altres controls de seguretat que impedeixin la injecció SQL; els atacs XSS; el programari maliciós, entre d’altres?

Aquestes són només algunes de les preguntes que podeu incloure a la llista segura de verificació de revisió de codis. Heu de tenir en compte que pot ser que una llista de comprovació no sigui exhaustiva en molts casos, però pot proporcionar una adreça al revisador de codis i ajudar-lo a fer revisions de codi de seguretat efectives i a lliurar codis de gran qualitat i seguretat.

2. Revisió constant

És imprescindible que les empreses realitzin revisions segures de codi regularment per assegurar-se que, sempre que es produeixi un canvi significatiu en el codi, es revisi de manera efectiva.

Una revisió segura del codi no necessita que espereu que es finalitzi el procés de desenvolupament. Més aviat podeu realitzar una revisió del codi a mesura que avança el desenvolupament.

Revisant el codi de manera regular, podeu identificar espitlleres o extrems solts que podrien ser explotats pels atacants i arreglar-los de manera oportuna. També millora la seguretat general del codi i dóna lloc a un codi de major qualitat, fent que les futures implementacions siguin ràpides, fàcils i assequibles.

3. Utilitzeu les amenaces model

Les amenaces model permeten a les organitzacions identificar amenaces i desenvolupar respostes eficients. Tenir en marxa un procés de model d’amenaces estructurat ajuda a detectar, entendre i comunicar amenaces i mitigacions per protegir els actius de l’aplicació.

El model de amenaça es pot produir durant les fases de planificació, disseny, desenvolupament i/o posterior desplegament. No només ajuda a identificar riscos, sinó que ajuda els equips a comprendre millor la relació entre els diversos components de l’aplicació.

A mesura que l’entorn i el disseny de l’aplicació canvien al llarg de la vida del projecte, és útil tenir coneixement respecte com s’interconnecten els components amb el producte. Això us pot ajudar a comprendre millor les amenaces i riscos de seguretat.

4. Utilitzeu les eines d’automatització per estalviar temps (però no deixeu que l’automatització ho faci TOT)

Les eines d’automatització poden tenir un paper crucial, sobretot a l’hora de protegir tant el programari com el vostre codi. L’automatització és sempre més eficaç que no pas que vosaltres us dediqueu a revisar el codi línia per línia per detectar-ne defectes.

Amb aplicacions que consisteixen en centenars de milers, si no milions, de línies de codi, és impossible realitzar una revisió manual de codi de línia completa per línia en un temps raonable.

Les eines d’automatització permeten processos racionalitzats amb una mínima intervenció humana, permetent-los centrar-se en tasques més complexes que requereixen una anàlisi lògica o empresarial. Les eines d’anàlisi de codis estàtics automatitzats ofereixen una cobertura gairebé completa del codi juntament amb la possibilitat de revelar vulnerabilitats que d’una altra manera podrien ser desapercebudes si es revisen manualment.

Per exemple, si una eina d’anàlisi de codi estàtic descobreix una vulnerabilitat d’injecció de SQL o una injecció XSS, pot exedcutar cercques en altres bases de dades similars, una tasca que requereix temps i que és pràcticament impossible de fer a mà.

Tot i que es pot confiar en l’automatització per a moltes coses, no se li pot deixar tota la feina. Malgrat oferir  nombrosos beneficis, també planteja certs reptes: per exemple, l’automatització no pot trobar defectes de disseny i arquitectònics, entre molts altres. Atès que les eines d’automatització no tenen una comprensió adequada dels processos empresarials, no poden trobar defectes en les àrees lògiques tampoc. A més d’això, l’automatització també crea molts falsos positius, que poden descarrilar tot el procés de prova ja que els revisors han de comprovar manualment aquestes vulnerabilitats identificades.

5. Aprofiteu l’expertesa d’un professional de seguretat en aplicacions

Si bé les eines automatitzades són més eficients que els seus homòlegs humans en la realització de tasques que requereixen un gran temps, com la cerca de patrons de codi vulnerables dins d’una base massiva de codis, no són competitives en altres aspectes.

Per aquest motiu necessiteu un professional de la seguretat en aplicacions, cosa que us permetrà unir el procés de revisió de codi segur i proporcionar-li claredat i context. L’experiència i el coneixement d’un analista de seguretat o revisor de codis són indispensables en la revisió segura de codi d’una aplicació web. Per exemple, en tasques on la revisió del codi necessita la seva capacitat per identificar problemes de lògica d’aplicacions.

Tanmateix, podeu aprofitar els punts forts dels professionals de la seguretat i els de les eines automatitzades per avançar en el vostre procés de revisió de codis segurs, permetent als equips de seguretat determinar una àmplia gamma de riscos i vulnerabilitats.

6. Valideu la vostra entrada i sortida

Una part important d’una revisió segura del codi consisteix en analitzar la superfície d’atac del programari. Els atacants solen utilitzar l’entrada i la sortida per explotar vulnerabilitats d’una aplicació i obtenir accés a la informació o realitzar altres activitats malintencionades.

L’objectiu principal és identificar i revisar les diverses entrades de totes les fonts de dades no fiables i validar les sortides també. Si valideu l’entrada, podeu assegurar-vos que l’aplicació gestiona l’entrada no fidedigna de manera adequada perquè no s’utilitzi l’entrada potencialment maliciosa per atacar l’aplicació.

Si es valida la sortida, es pot garantir que l’aplicació no perjudiqui l’usuari final ni altres sistemes que ingereixin dades de l’aplicació.

Les entrades poden provenir de cookies, fonts de dades, respostes de serveis, línies d’ordres, fitxers plans, fitxers de propietats, variables d’entorn, processos externs i el navegador. Comproveu la semàntica i la sintaxi vàlides de les entrades del sistema d’informació (com ara la longitud dels caràcters, el conjunt, els valors acceptables i l’interval numèric) per assegurar-vos que les entrades coincideixen amb els estàndards i continguts especificats.

La validació d’entrada ajuda a garantir els accesos precisos i a prevenir atacs com ara la injecció SQL, scripts de llocs creuats i una àmplia gamma d’altres atacs d’injecció. Per tant, és crític que les aplicacions validin les dades d’entrada abans de processar-les.

A més, quan envieu dades de sortida al navegador web d’un usuari, a una xarxa, a un fitxer o a algun altre lloc, heu de garantir que les dades que envieu siguin segures.

7. Atorgueu els privilegis mínims

Una altra de les bones pràctiques de codi segur inclou la implementació del model de “menys privilegi”, que permet als usuaris autoritzats accedir específicament només a la informació que necessiten per realitzar les seves funcions o tasques laborals. Per exemple, un compte d’usuari responsable de mantenir els registres de clients no necessita tenir accés als registres financers d’altres empleats.

Sorprenentment, l’informe de risc global de dades del 2019 va revelar que més del 22% de les carpetes estaven obertes a tots els empleats. Aquestes carpetes poden contenir dades sensibles i un actor privilegiat que pot utilitzar aquestes carpetes per realitzar incompliments de dades a la seva organització. Per tant, és molt crucial atorgar els privilegis mínims als usuaris.

En alguns casos, si un usuari necessita drets d’administració o privilegis superiors per accedir a dades concretes, s’han de proporcionar només el temps mínim necessari per completar la tasca. El model de “menys privilegi” redueix significativament l’abast dels perjudicis que poden ser causats per l’ús no autoritzat o no desitjat de privilegis de xarxa.

8. Formeu el personal sobre el desenvolupament d’aplicacions segures

A mesura que es produeixen més problemes pels atacs dels hackers, els professionals de la ciberseguretat intenten estar al dia de les últimes tecnologies i eines per garantir una aplicació o fer que un sistema sigui segur. Però no és només l’equip de seguretat l’encarregat de protegir el vostre programari.

Heu de portar realitzar sessions de formació periòdiques sobre desenvolupament d’aplicacions segures, per informar els vostres desenvolupadors sobre la codificació segura i com poden utilitzar-la per millorar els processos de desenvolupament de programari, alhora que redueixen les vulnerabilitats del codi.

El desenvolupament segur d’aplicacions ajudarà a identificar i mitigar els riscos a principis del procés de desenvolupament, cosa que reduirà encara més la possibilitat d’incompliments de dades i ciberatacs.

9. Gestionar les vulnerabilitats

Una revisió segura de codi pot revelar un seguit de riscos i vulnerabilitats de seguretat. És important identificar, avaluar, mitigar i informar d’aquestes vulnerabilitats de seguretat del sistema i del programari que s’executa.

El control de les vulnerabilitats és fonamental perquè les organitzacions prioritzin la protecció envers les possibles amenaces, i minimitzin les possibilitats de rebre un atac.

Algunes eines d’exploració també inclouen una correcció de vulnerabilitat, que categoritza i classifica la vulnerabilitat segons el risc i la gravetat. Això es fa sovint comparant les vulnerabilitats amb les polítiques de seguretat.

Amb cada canvi en l’aplicació, hi ha el risc que s’obri un potencial forat de seguretat al vostre programari que pugui ser explotat pels atacants. Això pot afectar la reputació i la credibilitat del vostre mercat.

A tall de conclusió

Una revisió segura de codis és un procés que requereix temps. El procés es pot fer de manera eficient fent servir tant els punts forts de les eines automatitzades com l’experiència dels professionals de la seguretat.

Una revisió segura del codi revela sovint moltes visions del codi. A més de trobar nous riscos per a la seguretat o aprendre noves tècniques, també podeu comprovar com el vostre equip de desenvolupament s’acosta a la codificació . Es poden adoptar millors pràctiques per dur a terme una revisió del codi més precisa i eficaç.