CyberLab Checklist lv1

#1

Verifica que les contrasenyes establertes pels usuaris tinguin almenys 12 caràcters de longitud (després de combinar diversos espais).

#2

Verifica que les contrasenyes d'almenys 64 caràcters siguin permeses, i que les contrasenyes de més de 128 caràcters siguin denegades.

#3

Verifica que no es realitzi cap truncament de contrasenya. No obstant això, els espais múltiples consecutius poden ser reemplaçats per un únic espai.

#4

Verifica que qualsevol caràcter Unicode imprimible, incloent-hi caràcters neutres respecte a l'idioma com ara espais i Emojis, sigui permès en les contrasenyes.

#5

Verifica que els usuaris puguin canviar la seva contrasenya.

#6

Verifica que la funcionalitat de canvi de contrasenya requereixi la contrasenya actual i la nova contrasenya de l'usuari.

#7

Verifica que les contrasenyes enviades durant el registre de compte, l'inici de sessió i el canvi de contrasenya siguin verificades contra un conjunt de contrasenyes compromeses ja sigui localment o mitjançant una API externa. Si la contrasenya està compromesa, l'aplicació ha de requerir que l'usuari establir una nova contrasenya no compromesa.

#8

Verifica que es proporcioni un medidor de força de contrasenya per ajudar els usuaris a establir una contrasenya més segura.

#9

Verifica que no hi hagi normes de composició de contrasenya que limitin el tipus de caràcters permesos. No ha d'haver-hi cap requisit per majúscules o minúscules, números o caràcters especials.

#10

Verifica que no hi hagi requisits de rotació periòdica de credencials o requisits d'historial de contrasenyes.

#11

Verifica que la funcionalitat de 'enganxar', els ajudants de contrasenya del navegador i els gestors de contrasenyes externs siguin permesos.

#12

Verifica que l'usuari pugui optar per veure temporalment tota la contrasenya mascarada o veure temporalment l'últim caràcter escrit de la contrasenya en plataformes que no tinguin aquesta funcionalitat incorporada.

#13

Verifica que els controls anti-automatització siguin efectius per mitigar proves de credencials compromeses, atacs de força bruta i bloqueig de comptes. Verifica que no sigui possible fer més de 100 intents fallits per hora en un sol compte.

#14

Verifica que l'ús d'autenticadors febles estigui limitat a la verificació secundària i a l'aprovació de transaccions i no com a substitut de mètodes d'autenticació més segurs. Verifica que s'ofereixin mètodes més forts abans que mètodes febles, que els usuaris siguin conscients dels riscos o que es prenguin mesures adequades per limitar els riscos de compromís del compte.

#15

Verifica que es facin arribar notificacions segures als usuaris després d'actualitzacions de detalls d'autenticació, com ara restabliments de credencials, canvis d'adreça de correu electrònic o d'adreça, inici de sessió des de llocs desconeguts o amb risc. S'accepta l'ús de notificacions push preferiblement, però en absència de notificacions push, es considera acceptable SMS o correu electrònic sempre que no es reveli informació sensible a la notificació.

#16

Verifica que les contrasenyes inicials generades pel sistema o codis d'activació siguin generats de manera segura i aleatòria, tinguin almenys 6 caràcters de longitud i puguin contenir lletres i números, i expirin després d'un curt període de temps. Aquestes secrets inicials no es permetran convertir-se en la contrasenya a llarg termini.

#17

Verifica que un codi d'activació o secret de recuperació inicial generat pel sistema no sigui enviat en text clar a l'usuari.

#18

Verifica que no hi hagi indicis de contrasenya o autenticació basada en coneixements presents.

#19

Verifica que la recuperació de credencials de contrasenya no reveli la contrasenya actual de cap manera.

#20

Verifica que no hi hagi comptes compartits o per defecte presents.

#21

Verifica que si es canvia o es reemplaça un factor d'autenticació, l'usuari sigui notificat d'aquest esdeveniment.

#22

Verifica que la contrasenya oblidada i altres vies de recuperació utilitzin un mecanisme de recuperació segur, com ara OTP basat en temps (TOTP) o un altre token suau, notificació mòbil o un altre mecanisme de recuperació fora de línia.

#23

Verifica que els autenticadors fora de banda en text clar no siguin oferts per defecte i que alternatives més segures, com ara notificacions push, siguin ofertes primer.

#24

Verifica que el verificador fora de banda faci expirar les sol·licituds d'autenticació fora de banda, codis o tokens després de 10 minuts.

#25

Verifica que les sol·licituds d'autenticació fora de banda, codis o tokens del verificador fora de banda només siguin utilitzables un cop, i només per a la sol·licitud d'autenticació original.

#26

Verifica que l'autenticador fora de banda i el verificador es comuniquin mitjançant un canal independent segur.

#27

Verifica que els OTP basats en temps tinguin una vida útil definida abans d'expirar.

#28

Verifica que l'aplicació mai reveli els tokens de sessió als paràmetres de l'URL.

#29

Verifica que l'aplicació generi un nou token de sessió en l'autenticació de l'usuari.

#30

Verifica que els tokens de sessió tinguin com a mínim 64 bits d'entropia.

#31

Verifica que l'aplicació només emmagatzemi tokens de sessió al navegador utilitzant mètodes segurs com ara galetes adequament protegides (consulta la secció 3.4) o emmagatzematge de sessió HTML 5.

#32

Verifica que el tancament de sessió i l'expiració invalidin el token de sessió, de manera que el botó de retrocés o un servidor que depèn d'aquesta informació no pugui reprendre una sessió autenticada, incloent-hi altres servidors.

#33

Si els autenticadors permeten als usuaris romandre autenticats, verifica que la re-autenticació es produeixi periòdicament tant si s'utilitza activament com després d'un període d'inactivitat.

#34

Verifica que les galetes basades en tokens de sessió tinguin l'atribut 'Secure' configurat.

#35

Verifica que les galetes basades en tokens de sessió tinguin l'atribut 'HttpOnly' configurat.

#36

Verifica que les galetes basades en tokens de sessió utilitzin l'atribut 'SameSite' per limitar l'exposició als atacs de falsificació de petició entre llocs.

#37

Verifica que les galetes basades en tokens de sessió utilitzin el prefixe '__Host-' de manera que només es facin servir a l'amfitrió que inicialment va establir la galeta.

#38

Verifica que si l'aplicació està publicada sota un nom de domini amb altres aplicacions que establisquen o facin servir galetes de sessió que podrien revelar aquestes galetes de sessió, es configuri l'atribut de ruta en els tokens de sessió basats en galetes amb la ruta més precisa possible.

#39

Verifica que l'aplicació asseguri una sessió de connexió completa i vàlida o requereixi re-autenticació o verificació secundària abans de permetre qualsevol transacció sensible o modificació de compte.

#40

Verifica que l'aplicació imposi les regles de control d'accés en una capa de servei de confiança, especialment si hi ha controls d'accés al costat del client que podrien ser eludits.

#41

Verifica que totes les atribucions d'usuaris i dades i la informació de política utilitzades pels controls d'accés no puguin ser manipulades pels usuaris finals llevat que sigui específicament autoritzat.

#42

Verifica que existeixi el principi del menor privilegi - els usuaris només haurien de poder accedir a funcions, fitxers de dades, URL, controladors, serveis i altres recursos pels quals tinguin autorització específica. Això implica protecció contra l'usurpació d'identitat i l'elevació de privilegis.

#43

Verifica que els controls d'accés fallin de manera segura fins i tot quan es produeix una excepció.

#44

Verifica que les dades i les APIs sensibles estiguin protegides contra atacs d'Insecure Direct Object Reference (IDOR) que apuntin a la creació, lectura, actualització i eliminació de registres, com ara crear o actualitzar el registre d'algú altre, veure els registres de tothom o eliminar tots els registres.

#45

Verifica que l'aplicació o el marc imposin un fort mecanisme anti-CSRF per protegir la funcionalitat autenticada i que una protecció eficaç contra la automatització o anti-CSRF protegeixi la funcionalitat no autenticada.

#46

Verifica que les interfícies administratives facin servir autenticació multifactor adequada per prevenir l'ús no autoritzat.

#47

Verifica que la navegació de directoris estigui desactivada llevat que es desitgi explícitament. A més, les aplicacions no haurien de permetre la descoberta o divulgació de metadades de fitxers o directoris, com ara carpetes Thumbs.db, .DS_Store, .git o .svn.

#48

Verifica que l'aplicació es defensi contra els atacs de contaminació de paràmetres HTTP, especialment si el marc de l'aplicació no fa cap distinció sobre la font dels paràmetres de la sol·licitud (GET, POST, galetes, capçaleres o variables d'entorn).

#49

Verifica que els marcs protegeixin contra els atacs d'assignació massiva de paràmetres o que l'aplicació tingui contramesures per protegir-se contra assignacions de paràmetres no segures, com ara marcar els camps com a privats o similar.

#50

Verifica que totes les dades d'entrada (camps de formulari HTML, sol·licituds REST, paràmetres d'URL, capçaleres HTTP, galetes, fitxers per lots, canals RSS, etc.) es validin mitjançant una validació positiva (llistes d'autorització).

#51

Verifica que les dades estructurades siguin fortament tipificades i validades segons un esquema definit, incloent caràcters permesos, longitud i patró (p. ex., números de targeta de crèdit, adreces de correu electrònic, números de telèfon o validació que dos camps relacionats siguin raonables, com ara comprovar que el suburb i el codi postal coincideixin).

#52

Verifica que les redireccions i les reenviacions d'URL només permetin destins que apareguin a una llista d'autorització, o que mostrin un avis quan es redirigeixi a contingut potencialment no fiable.

#53

Verifica que totes les entrades d'HTML no fiables d'editors WYSIWYG o similars estiguin adequadament sanejades amb una llibreria d'assainidor HTML o una funció de marc.

#54

Verifica que les dades no estructurades estiguin sanejades per aplicar mesures de seguretat com ara caràcters permesos i longitud.

#55

Verifica que l'aplicació saneji les dades d'usuari abans de passar-les als sistemes de correu per protegir-se contra injeccions SMTP o IMAP.

#56

Verifica que l'aplicació eviti l'ús de eval() o altres funcions d'execució de codi dinàmiques. En cas que no hi hagi alternatives, qualsevol entrada d'usuari que s'inclougui s'ha de sanejar o posar en quarantena abans de ser executada.

#57

Verifica que l'aplicació es protegeixi contra els atacs d'injecció de plantilles assegurant-se que qualsevol entrada d'usuari que s'inclougui estigui sanejada o posada en quarantena.

#58

Verifica que l'aplicació es protegeixi contra els atacs SSRF, validant o sanejant dades no fiables o metadades de fitxers HTTP, com ara noms de fitxers i camps d'entrada d'URL, i utilitza llistes d'autorització de protocols, dominis, rutes i ports.

#59

Verifica que l'aplicació saneji, desactivi o posi en quarantena el contingut scriptable de Scalable Vector Graphics (SVG) subministrat per l'usuari, especialment en relació amb XSS resultant de scripts en línia i foreignObject.

#60

Verifica que l'aplicació saneji, desactivi o posi en quarantena el contingut scriptable o amb llenguatge d'expressió subministrat per l'usuari, com ara Markdown, fulls d'estil CSS o XSL, BBCode o similar.

#61

Verifica que la codificació de sortida sigui rellevant per a l'intèrpret i el context requerit. Per exemple, utilitza codificadors específics per a valors HTML, atributs HTML, JavaScript, paràmetres d'URL, capçaleres HTTP, SMTP i altres segons el context requereixi, especialment per a entrades no fiables (p. ex., noms amb Unicode o apostrofs).

#62

Verifica que la codificació de sortida conservi el conjunt de caràcters i la configuració regional triats per l'usuari, de manera que qualsevol punt de caràcter Unicode sigui vàlid i es manipuli de manera segura.

#63

Verifica que l'escapament de sortida conscient del context, preferiblement automatitzat, o com a última opció manual, protegeixi contra XSS reflexats, emmagatzemats i basats en DOM.

#64

Verifica que la selecció de dades o les consultes a bases de dades (p. ex., SQL, HQL, ORM, NoSQL) facin servir consultes parametritzades, ORMs, frameworks d'entitats o estiguin protegides d'alguna altra manera contra atacs d'injecció a bases de dades.

#65

Verifica que, en els casos en què no hi hagi mecanismes parametritzats o més segurs, s'utilitzi una codificació de sortida específica del context per protegir-se contra atacs d'injecció, com ara l'ús d'escapament SQL per protegir-se contra la injecció SQL.

#66

Verifica que l'aplicació es protegeixi contra atacs d'injecció JSON, atacs d'avaluació JSON i avaluació d'expressions JavaScript.

#67

Verifica que l'aplicació es protegeixi contra vulnerabilitats d'injecció LDAP, o que s'hagin implementat controls de seguretat específics per prevenir l'injecció LDAP.

#68

Verifica que l'aplicació es protegeixi contra injeccions de comandes OS i que les crides al sistema operatiu facin servir consultes OS parametritzades o utilitzin una codificació contextual de sortida de línia de comandes.

#69

Verifica que l'aplicació es protegeixi contra atacs de Local File Inclusion (LFI) o Remote File Inclusion (RFI).

#70

Verifica que l'aplicació es protegeixi contra atacs d'injecció XPath o atacs d'injecció XML.

#71

Verifica que els objectes serialitzats utilitzen verificacions d'integritat o estan xifrats per prevenir la creació d'objectes hostils o la manipulació de dades.

#72

Verifica que l'aplicació restringeixi correctament els analitzadors XML per utilitzar només la configuració més restrictiva possible i asseguri que les funcionalitats no segures, com ara la resolució d'entitats externes, estiguin desactivades per prevenir atacs XML eXternal Entity (XXE).

#73

Verifica que s'eviti o es protegeixi la deserialització de dades no fiables tant en el codi personalitzat com en les llibreries de tercers (com ara analitzadors JSON, XML i YAML).

#74

Verifica que, en analitzar JSON en navegadors o serveis basats en JavaScript, s'utilitzi JSON.parse per analitzar el document JSON. No utilitzis eval() per analitzar JSON.

#75

Verifica que tots els mòduls criptogràfics fallin de manera segura i que els errors es gestionin de manera que no habilitin atacs de l'Oràcul de Rellotge.

#76

Verifica que l'aplicació no registri credencials ni detalls de pagament. Les marques de sessió només s'han de desar als registres de forma irreversible, en forma de resum.

#77

Verifica que l'aplicació no registrin altres dades sensibles segons les lleis locals de privacitat o la política de seguretat rellevant.

#78

Verifica que es mostri un missatge genèric quan hi ha un error inesperat o de seguretat, potser amb un identificador únic que el personal de suport pugui utilitzar per investigar.

#79

Verifica que l'aplicació estableixi capçaleres anti-cache suficients perquè les dades sensibles no es cachejin als navegadors moderns.

#80

Verifica que les dades emmagatzemades al magatzem del navegador (com ara localStorage, sessionStorage, IndexedDB o galetes) no continguin dades sensibles.

#81

Verifica que les dades autenticades esborrin de l'emmagatzematge del client, com ara el DOM del navegador, després que el client o la sessió s'hagi finalitzat.

#82

Verifica que les dades sensibles s'enviïn al servidor al cos o als capçaleres del missatge HTTP, i que els paràmetres de la cadena de consulta de qualsevol verb HTTP no continguin dades sensibles.

#83

Verifica que els usuaris tinguin un mètode per eliminar o exportar les seves dades a la demanda.

#84

Verifica que els usuaris rebin un llenguatge clar sobre la recopilació i l'ús de la informació personal subministrada i que els usuaris hagin donat el seu consentiment per a l'ús d'aquestes dades abans que es faci servir de cap manera.

#85

Verifica que totes les dades sensibles creades i processades per l'aplicació s'hagin identificat i assegura que existeixi una política sobre com tractar les dades sensibles.

#86

Verifica que es faci servir TLS per a tota la connectivitat del client i que no torni a comunicacions no segures o sense xifrar.

#87

Verifica mitjançant eines de prova TLS actualitzades que només es permetin les suites de xifrat fortes, amb les suites de xifrat més fortes establertes com a preferides.

#88

Verifica que només estiguin habilitades les últimes versions recomanades del protocol TLS, com ara TLS 1.2 i TLS 1.3. La versió més recent del protocol TLS ha de ser l'opció preferida.

#89

Verifica que, si l'aplicació té una característica d'actualització automàtica del client o del servidor, les actualitzacions s'han d'obtenir a través de canals segurs i amb una signatura digital. El codi d'actualització ha de validar la signatura digital de l'actualització abans d'instal·lar-la o executar-la.

#90

Verifica que l'aplicació utilitza proteccions d'integritat, com ara la signatura de codi o la integritat de subrecursos. L'aplicació no ha de carregar ni executar codi de fonts no fiables, com ara la càrrega d'inclusions, mòduls, connectors, codi o biblioteques de fonts no fiables o d'Internet.

#91

Verifica que l'aplicació estigui protegida contra apoderaments de subdominis si l'aplicació depèn d'entrades DNS o subdominis DNS, com ara noms de domini caducats, indicadors DNS obsolets o CNAME caducats, projectes caducats als repositoris de codi font públics o API, funcions sense servidor o dipòsits d'emmagatzematge (autogen-bucket-id.cloud.example.com) o similars. Les proteccions poden incloure assegurar-se que els noms DNS utilitzats per les aplicacions es comprovin regularment per a la caducitat o els canvis.

#92

Verifica que l'aplicació només processarà fluxos de lògica de negoci per al mateix usuari en ordre seqüencial i sense omitir passos.

#93

Verifica que l'aplicació només processarà fluxos de lògica de negoci amb tots els passos processats en un temps humà realista, és a dir, que les transaccions no es presentin massa ràpidament.

#94

Verifica que l'aplicació tingui límits adequats per a accions o transaccions comercials específiques que es compleixin correctament a nivell d'usuari.

#95

Verifica que l'aplicació tingui controls contra l'automatització per protegir-se contra trucades excessives com ara l'extracció massiva de dades, les sol·licituds de lògica de negoci, les càrregues de fitxers o els atacs de denegació de servei.

#96

Verifica que l'aplicació tingui límits o validacions de lògica de negoci per protegir-se contra riscs o amenaces empresarials probables, identificats mitjançant la modelització de les amenaces o metodologies similars.

#97

Verifica que l'aplicació no accepti fitxers grans que puguin omplir l'emmagatzematge o causar una denegació de servei.

#98

Verifica que les metadades del nom de fitxer subministrades per l'usuari no es facin servir directament pels sistemes o els sistemes de fitxers del marc de treball i que s'utilitzi una API d'URL per protegir-se contra la travessia de camins.

#99

Verifica que les metadades del nom de fitxer subministrades per l'usuari es validin o s'ignorin per evitar la divulgació, la creació, l'actualització o la supressió de fitxers locals (LFI).

#100

Verifica que les metadades del nom de fitxer subministrades per l'usuari es validin o s'ignorin per evitar la divulgació o l'execució de fitxers remots mitjançant atacs d'Inclusió de Fitxers Remots (RFI) o Forgery de Sol·licituds del Servidor (SSRF).

#101

Verifica que l'aplicació es protegeix contra la Descàrrega Reflexiva de Fitxers (RFD) validant o ignorant els noms de fitxer subministrats per l'usuari en un paràmetre JSON, JSONP o URL. La capçalera Content-Type de la resposta ha de ser de tipus text/plain, i la capçalera Content-Disposition ha de tenir un nom de fitxer fix.

#102

Verifica que les metadades del fitxer no confiables no es facin servir directament amb l'API o les llibreries del sistema per protegir-se contra injeccions de comandes del sistema operatiu.

#103

Verifica que els fitxers obtinguts de fonts no confiables es desin fora de l'arrel web, amb permisos limitats.

#104

Verifica que els fitxers obtinguts de fonts no confiables siguin escanejats per escàners d'antivirus per evitar la pujada i el subministrament de contingut maliciós conegut.

#105

Verifica que la capa web estigui configurada per servir només fitxers amb extensions de fitxer específiques per evitar filtracions involuntàries d'informació i codi font. Per exemple, els fitxers de còpia de seguretat (p. ex., .bak), els fitxers temporals de treball (p. ex., .swp), els fitxers comprimits (.zip, .tar.gz, etc.) i altres extensions comunes utilitzades pels editors haurien de ser bloquejats llevat que sigui necessari.

#106

Verifica que les sol·licituds directes als fitxers penjats mai s'executin com a contingut HTML/JavaScript.

#107

Verifica que el servidor web o d'aplicacions estigui configurat amb una llista d'admetents de recursos o sistemes als quals el servidor pot enviar sol·licituds o carregar dades/fitxers.

#108

Verifica que tots els components de l'aplicació utilitzen les mateixes codificacions i analitzadors per evitar atacs d'anàlisi que aprofitin el comportament diferent d'anàlisi d'URI o fitxers que es podrien utilitzar en atacs SSRF i RFI.

#109

Verifica que les URL de l'API no exposin informació sensible, com ara la clau de l'API, les marques de sessió, etc.

#110

Verifica que els mètodes HTTP RESTful habilitats siguin una opció vàlida per a l'usuari o l'acció, com ara evitar que els usuaris normals facin servir DELETE o PUT en API o recursos protegits.

#111

Verifica que hi ha una validació d'esquema JSON en lloc i que es comprovi abans d'acceptar la entrada.

#112

Verifica que els serveis web RESTful que utilitzen galetes estiguin protegits contra Cross-Site Request Forgery mitjançant l'ús d'almenys una o més de les següents tècniques: el patró de galeta de presentació doble, els noms CSRF o les comprovacions de la capçalera de sol·licitud Origin.

#113

Verifica que es realitzi la validació de l'esquema XSD per garantir un document XML correctament format, seguida de la validació de cada camp d'entrada abans que es produeixi el processament de les dades.

#114

Verifica que tots els components estiguin actualitzats, preferiblement utilitzant una eina de comprovació de dependències durant el temps de construcció o compilació.

#115

Verifica que es suprimeixin totes les característiques, documentació, aplicacions d'exemple i configuracions innecessàries.

#116

Verifica que si els recursos de l'aplicació, com les biblioteques JavaScript, el CSS o les fonts web, estan allotjats externament en una Xarxa de Lliurament de Contingut (CDN) o un proveïdor extern, s'utilitzi la Subresource Integrity (SRI) per validar la integritat del recurs.

#117

Verifica que els modes de depuració del servidor web o de l'aplicació estiguin desactivats en producció per eliminar les característiques de depuració, les consoles del desenvolupador i les divulgacions de seguretat no desitjades.

#118

Verifica que les capçaleres HTTP o qualsevol part de la resposta HTTP no exposin informació detallada sobre les versions dels components del sistema.

#119

Verifica que cada resposta HTTP contingui una capçalera Content-Type. També especifica un conjunt de caràcters segur (p. ex., UTF-8, ISO-8859-1) si els tipus de contingut són text/*, /+xml i application/xml. El contingut ha de coincidir amb la capçalera Content-Type proporcionada.

#120

Verifica que totes les respostes de l'API continguin una capçalera Content-Disposition: attachment; filename='api.json' (o un altre nom de fitxer adequat per al tipus de contingut).

#121

Verifica que hi hagi una capçalera de política de seguretat de contingut (CSP) que ajudi a mitigar l'impacte dels atacs XSS com ara vulnerabilitats d'injecció d'HTML, DOM, JSON i JavaScript.

#122

Verifica que totes les respostes continguin una capçalera X-Content-Type-Options: nosniff.

#123

Verifica que totes les respostes incloguin una capçalera Strict-Transport-Security i per a tots els subdominis, com ara Strict-Transport-Security: max-age=15724800; includeSubdomains.

#124

Verifica que s'inclougui una capçalera Referrer-Policy adequada per evitar exposar informació sensible a la URL a través de la capçalera Referer a parts no fiables.

#125

Verifica que el contingut d'una aplicació web no pugui ser incorporat en un lloc de tercers per defecte i que la incorporació dels recursos exactes només estigui permesa quan sigui necessària utilitzant les capçaleres de resposta Content-Security-Policy: frame-ancestors i X-Frame-Options adequades.

#126

Verifica que el servidor de l'aplicació només accepti els mètodes HTTP que utilitza l'aplicació/API, incloent les sol·licituds prèvies OPTIONS, i registra/alerta sobre qualsevol sol·licitud que no sigui vàlida per al context de l'aplicació.

#127

Verifica que la capçalera Origin subministrada no s'utilitzi per a decisions d'autenticació o control d'accés, ja que la capçalera Origin pot canviar fàcilment per part d'un atacant.

#128

Verifica que la capçalera Access-Control-Allow-Origin del Cross-Origin Resource Sharing (CORS) utilitzi una llista d'admetents de dominis i subdominis de confiança i no admeti l'origen 'null'.