Indice articolo

In questo articolo parliamo di un argomento molto importante nel mondo dell’informatica: la sicurezza. Dall’inizio del 2021 a oggi, Smeup ha preso diverse misure nel campo della cyber security. Abbiamo affrontato problematiche come Log4Shell e Spring4Shell, reagendo prontamente attraverso verifiche e, dove necessario, soluzioni sicure e affidabili. Di seguito vediamo più nel dettaglio.

illustrazione che mostra la sicurezza di Smeup

Verifiche di vulnerabilità Log4Shell

Log4Shell è un exploit di Log4j che permette di modificare programmaticamente il log degli eventi inserendo stringhe formattate in modo da richiamare contenuti esterni.

I controlli sono stati eseguiti sia sulle dipendenze dirette (Log4j usato come libreria), che su quelle indirette (log4j usato come dipendenza da altre librerie linkate in nostri prodotti). Abbiamo esteso i controlli anche a prodotti di terze parti che distribuiamo come supporto ai nostri (ad esempio l’application server Payara che utilizziamo per eseguire installazioni di Webup). Per una corretta ricerca delle dipendenze indirette (che potrebbero sfuggire ad un controllo manuale) abbiamo usato Syft. Questo è un tool open source che è in grado di analizzare ricorsivamente tutte le librerie java utilizzate da un software e generare una SBOM (Software Bill of Materials) che evidenzi tutte le dipendenze, a qualsiasi livello esse siano.

Sono quindi state svolte verifiche sui seguenti prodotti Smeup:

  • Archismall
  • Gateway
  • Jariko
  • Ketchup
  • Loocup
  • Open-proxy
  • Provider
  • RDS
  • Reload
  • Smeup Printing Service
  • Webup

Esito

Innanzitutto una precisazione importante: l’utilizzo della libreria Log4j nei nostri prodotti è molto limitato ed è quasi totalmente nelle sue versioni non affette dal problema di sicurezza. Nelle più recenti produzioni di Smeup, per quanto riguarda il logging, abbiamo utilizzato altre librerie (come Logback e SLF4J) che non sono in alcun modo legate alla libreria Log4j.

Per questo motivo i controlli sono andati tutti a buon fine, l’unico prodotto potenzialmente affetto dal problema (subito corretto con l’aggiornamento della libreria) non è in distribuzione dai clienti.

Verifiche di vulnerabilità Spring4Shell

Spring4Shell, invece, è una vulnerabilità critica nel framework Spring (una piattaforma open-source per lo sviluppo di applicazioni a base java) che fa sì che, in determinate circostanze, si possa esporre un’applicazione all’esecuzione di codice in modalità remota.

I prodotti Smeup basati su questo framework sono:

  • Archismall
  • Gateway
  • Smeup Printing Service
  • Webup

Esito

Nessuno dei prodotti Smeup rientra nelle circostanze vulnerabili a questi attacchi.

Comunicazione verso IBMi in SSL

La comunicazione verso IBMi, in alcuni prodotti smeup, avviene utilizzando determinate porte TCP.

SSL non è altro che un protocollo di cifratura applicato a TCP, in modo tale da proteggere i due lati della comunicazione. Questo significa che tutti i dati che vengono trasferiti attraverso questi canali, sono protetti da una cifratura concordata fra i due estremi della comunicazione.

I prodotti che hanno beneficiato di quest’aggiunta sono:

  • Gateway
  • Loocup
  • Provider
  • Rest-API

Quindi ora tutti i client comunicano con IBMi in modo cifrato.

Ulteriori implementazioni di sicurezza

Di seguito vediamo i prodotti Smeup che hanno ricevuto ulteriori implementazioni ed accorgimenti di sicurezza con lo scopo di migliorarne l’affidabilità.

Ketchup

Per quanto riguarda Ketchup sono stati

  • eseguiti dei controlli di vulnerabilità
  • aggiornamenti segnalati da NPM. Ad esempio, sono stati aggiornati Lerna ed eCharts.

Provider

Abbiamo:

  • limitato la possibilità di collegamento tra i diversi componenti del Provider così che funzioni soltanto in loopback. Questo significa che le uniche connessioni che i processi del Provider potranno ricevere, saranno quelle provenienti dalla macchina stessa.
  • impostato la pagina di debug come disattiva tra le impostazioni di default;
  • eliminato delle informazioni sensibili;
  • creato una blacklist di servizi richiamabili da API;
  • rafforzato le logiche di controllo per l’accesso a cartelle e file.

Rest-API

  • Per prevenire lo spam di chiamate, è stata aggiunta la possibilità di gestire API Key multiple;

Webup

È stato:

  • aggiunto un controllo per evitare attacchi di server side request forgery nella callback dei moduli di login con autenticazione esterna (Google o Azure).
  • implementato l’accesso ristretto. Una volta flaggato in amministrazione di webup, qualsiasi successivo accesso all’amministrazione o alle feature di superutente risulterà disabilitato.
  • aggiunto l’header http di security, così che di default Webup non possa essere caricato in un iframe. L’header è modificabile dal pannello di amministrazione nella sezione Main Config > Advanced customization.

Smartkit-FE

È stata utilizzata una serie di penetration test per trovare vulnerabilità lato networking. Queste sono poi state risolte tramite l’attivazione di regole firewall più severe e l’utilizzo di reverse proxy.

JWT

Abbiamo già parlato di questa implementazione di sicurezza in un articolo a sé stante, di cui consigliamo la lettura.