Auditoría amb SonarQube

Auditoria amb SonarQube

SonarQube és una eina molt interessant per a auditar codi súper robust, amb suport per a multitud de llenguatges de programació, que a més ofereix un ‘Dashboard’ amb molta informació que es pot utilitzar des de client, creant un sistema d’auditoria contínua de codi.

Per Fernando Manrique

A continuació, realitzaré una implantació utilitzant un projecte de codi obert per a l’administració de la pràctica.

El projecte es diu Open EMR. És una aplicació de gestió de pràctiques mèdiques i registres de salut electrònics de codi obert i gratuït. Compta amb registres de salut electrònics totalment integrats, gestió de pràctiques, programació, facturació electrònica, internacionalització, suport gratuït i una gran comunitat darrere.

Auditoría con SonarQube

Analitzarem algunes de les vulnerabilitats. Utilitzarem les recomanacions a OWASP, CWE així com altres llistes que proposi SonarQube.

Accés a la maquina virtual: owaspbwa
➔ user: root
➔ passwd: owaspbwa

Obtenim la IP de la màquina virtual:

➔ Ip route: 192.168.1.141

Des d’un navegador fem servir la IP com URL per a dirigir-nos a la web que s’allotja en aquesta màquina.

Auditoría con SonarQube

Descarreguem SonarQube comunity edition: https://www.sonarqube.org/success-download-community-edition/

Auditoría con SonarQube

En CMD de Windows ens anem al directori de Windows-*x86-64 del directori de SonarQube:

Auditoría con SonarQube

Muntem el servidor Web Executant StartSonar.bat – obligatori Java 11:

Auditoría con SonarQube

Accedim al sonar localhost:9000 -(U:admin/P:admin):

Auditoría con SonarQube

Descarreguem el projecte de la carpeta, anem al codi font en “veotek”, creem un projecte i li marquem de manera manual, exemple veotek030322, triem l’eina d’integració contínua on tindríem el nostre codi.

Com aquest cas el tenim en local, el marcarem de manera local, es generarà un token i donem a continuar, seleccionem la tecnologia PHP i el sistema Windows.

Obtenim la línia de scanner per a poder executar l’anàlisi del projecte i el mateix, s’ha d’executar dins de la carpeta del codi font.

Auditoría con SonarQube

Auditoría con SonarQube

Hem de descarregar sonarScanner:

Nota: hem de copiar la descàrrega en un lloc concret que sapiguem on està per a poder executar-lo sense problemes, perquè és necessari dir-li on es troba.: ex.- c:\sonar\sonar-scanner46\bin\sonar-*scanner.bat

Sobre la carpeta del projecte, executem la següent línia anteriorment i començaria a executar-se l’anàlisi del projecte:

Auditoría con SonarQube

Auditoría con SonarQube

En finalitzar el mateix, ens mostrarà un execution successfully i la URL on podrem veure l’informe.

Auditoría con SonarQube

Anem a la URL indicada i veiem el reporti generat:

NOTA: recomenable en el Id que farem servir integrar el plugin sonarlint perquè mentre generem codi, obtinguem els reports. Això ens facilita clean code sobre les vulnerabilitats mentre s’escriu el codi.

Diferents tipus de Hostpot:

Auditoría con SonarQube

Quin és el risc?:

Auditoría con SonarQube

Estàs en risc?:

Auditoría con SonarQube

Com es pot solucionar?:

Auditoría con SonarQube

Vulnerabilitats trobades:

Auditoría con SonarQube

Auditoría con SonarQube

Code:

Auditoría con SonarQube

Algunes de les vulnerabilitats trobades:

URL owasp: https://owasp.org/Top10/A02_2021-Cryptographic_Failures/

A02:2021 – Errors criptogràfics

Descripció

El primer que hem de fer és determinar les necessitats de protecció de les dades en trànsit i en repòs. Per exemple, les contrasenyes, els números de les targetes de crèdit, els registres mèdics, …

Exemples

  • Escenari 1: una aplicació xifra els números de les targetes de crèdit en una base de dades mitjançant el xifratge automàtic de la base de dades. No obstant això, aquestes dades es desxifren automàticament quan es recuperen, la qual cosa permet que una error d’injecció SQL recuperi números de targetes de crèdit en text clar.
  • Escenari 2: un lloc no fa servir ni imposa TLS per a totes les pàgines o admet un xifratge feble. Un atacant supervisa el trànsit de la xarxa (per exemple, en una xarxa sense fil no segura), degrada les connexions d’HTTPS a HTTP, intercepta sol·licituds i roba la cookie de sessió de l’usuari. Després, l’atacant reprodueix aquesta cookie i segresta la sessió de l’usuari (autenticat), accedint o modificant les dades privades de l’usuari. En comptes de això podrien alterar totes les dades transportades, per exemple, el destinatari d’una transferència de diners.
  • Escenari 3: la base de dades de contrasenyes utilitza hashes simples o sense sal per a emmagatzemar les contrasenyes de tots. Un error en la càrrega d’arxius permet que un atacant recuperi la base de dades de contrasenyes. Tots els hashes sense sal es poden exposar amb una taula d’arc de Sant Martí de hashes precalculats. Els hashes generats per funcions hash simples o ràpides poden ser desxifrats per GPU, fins i tot si estiguessin salats.

Algunes maneres de Prevenir:

  • Classificar les dades processades, emmagatzemades o transmeses per una aplicació. Identifiqui quines dades són confidencials d’acord amb les lleis de privacitat, els requisits reglamentaris o les necessitats comercials.
  • No emmagatzemis dades confidencials innecessàriament. Rebutgi-ho al més aviat possible o fes servir tokens compatibles amb PCI DSS o fins i tot truncament. Les dades que no es retenen, no es poden robar.
  • Assegura’t de xifrar totes les dades confidencials en repòs.
  • Assegura’t que s’implementen algorismes, protocols i claus estàndard sòlides i actualitzades; utilitza una gestió de claus adequada.
  • Xifra totes les dades en trànsit amb protocols segurs com TLS amb xifratge de confidencialitat directa (FS), priorització de xifratge per part del servidor i paràmetres segurs. Aplicació el xifratge mitjançant directives com a HTTP Strict Transport Security (HSTS).

URL owasp: https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/

A07:2021 – Errors d’identificació i autenticació

Descripció:

La confirmació de la identitat de l’usuari, l’autenticació i l’administració de la sessió són fonamentals per a protegir-se contra els atacs relacionats amb l’autenticació.

Permet atacs automatitzats com el farciment de credencials, on l’atacant té una llista de noms d’usuari i contrasenyes vàlids.

Permet la força bruta o altres atacs automatitzats.

Permet contrasenyes predeterminades, febles o conegudes, com “Password1” o “admin/*admin”.

Algunes maneres de Prevenir:

  • Sempre que sigui possible, implementa l’autenticació multifactor per evitar el farciment automatitzat de credencials, la força bruta i els atacs de reutilització de credencials robades.
  • No enviïs ni implementis amb cap credencial predeterminada, especialment per als usuaris administradors.
  • Implementa comprovacions de contrasenyes febles, com provar contrasenyes noves o modificades a la llista de les 10000 pitjors contrasenyes.

Exemples:

Escenari 1: el farcit de credencials, l’ús de llistes de contrasenyes conegudes és un atac comú. Suposem que una aplicació no implementa la protecció contra amenaces automatitzades o el farcit de credencials. En aquest cas, l’aplicació es pot utilitzar com un oracle de contrasenyes per a determinar si les credencials són vàlides.

Escenari 2: La majoria dels atacs d’autenticació passen a causa de l’ús continu de contrasenyes com a únic factor. Una vegada considerades, les millors pràctiques, la rotació de contrasenyes i els requisits de complexitat encoratgen als usuaris a fer servir i reutilitzar contrasenyes febles. Es recomana a les organitzacions que detinguin aquestes pràctiques segons NIST 800-63 i utilitzin l’autenticació multifactor.

Escenari 3: els temps d’espera de la sessió de l’aplicació no estan configurats correctament. Un usuari utilitza un ordinador públic per a accedir a una aplicació. En lloc de seleccionar “tancar sessió”, l’usuari simplement tanca la pestanya del navegador i marxa. Un atacant fa servir el mateix navegador una hora més tard i l’usuari encara està autenticat.

Conclusió:

Espero que aquest article us hagi resultat interessant i us serveixi de manera pràctica perquè el meu propòsit és oferir una visió completa de la meva experiència amb SonarQube.

La qualitat del codi és vital perquè pot suposar l’èxit del projecte de software o convertir-se en autèntic problema.

És molt important conèixer eines tan interessants com aquesta.

I com sempre, I Love Chamaleon, un #camaleodigital de Trentia