Close

Il nostro approccio alla gestione delle vulnerabilità


Il nostro approccio alla gestione delle vulnerabilità della sicurezza in Atlassian

Atlassian riconosce che, a un certo livello, le vulnerabilità[1] della sicurezza sono parte integrante di qualsiasi processo di sviluppo software. Tuttavia, ci adoperiamo costantemente per ridurne sia la gravità che la frequenza con cui si presentano nei nostri prodotti e servizi.

A tale scopo, abbiamo adottato un approccio multiforme alla gestione delle vulnerabilità che si basa su una combinazione di processi sia automatizzati che manuali. Crediamo che questo sia il modo più efficace per limitare l'eventualità che le vulnerabilità possano passare inosservate e non vengano rilevate per un lungo periodo di tempo.

In questo documento forniamo una panoramica del modo in cui gestiamo le vulnerabilità nei nostri prodotti e nelle nostre infrastrutture e di come sviluppiamo costantemente questo approccio integrando gli strumenti, i metodi e le idee più recenti per garantire che la nostra gestione delle vulnerabilità rimanga efficace in futuro.

Una panoramica del nostro processo di identificazione e risoluzione delle vulnerabilità

Disponiamo di un processo metodico per identificare, monitorare e risolvere le vulnerabilità, indipendentemente dal tipo.

Identificazione delle vulnerabilità

Ci avvaliamo di un'ampia gamma di strumenti all'avanguardia per il rilevamento delle vulnerabilità che vengono eseguiti regolarmente sui nostri prodotti e nell'infrastruttura per cercare e identificare automaticamente le vulnerabilità. Sono inclusi i prodotti Atlassian Cloud e Server, le immagini delle applicazioni Docker, le applicazioni interne, le applicazioni mobili e di terze parti, nonché la nostra infrastruttura on-premise e nel cloud. Questi strumenti analizzano automaticamente e identificano le vulnerabilità esistenti e includono:

  • Scansioni di rete: attualmente utilizziamo Nexpose come principale strumento di gestione delle vulnerabilità che ci aiuta a identificare i servizi attivi, le porte aperte e le applicazioni in esecuzione nel nostro ambiente, nonché le eventuali vulnerabilità esistenti a livello di rete.
  • Rilevamento continuo degli asset esterni: utilizziamo Assetnote per eseguire operazioni di individuazione continua degli asset e analisi della sicurezza sul nostro perimetro esterno.
  • Scansioni delle immagini dei contenitori: utilizziamo i contenitori Docker per la distribuzione di molte delle nostre applicazioni e eseguiamo una scansione di sicurezza completa che effettua un'ispezione approfondita del contenuto di tali contenitori ogni volta che vengono distribuiti nei nostri ambienti di produzione o di preproduzione. A tale scopo utilizziamo lo strumento Anchore. Maggiori dettagli sono forniti più avanti in questa pagina.
  • Scansioni delle dipendenze open source: utilizziamo SourceClear per identificare le eventuali vulnerabilità presenti nel codice open source o di terze parti che i nostri sviluppatori potrebbero utilizzare. Maggiori dettagli sono forniti più avanti in questo documento.
  • Monitoraggio della configurazione AWS: utilizziamo Cloud Conformity per fornire un monitoraggio continuo della configurazione rispetto agli standard stabiliti per i nostri ambienti AWS.

Esaminiamo continuamente gli strumenti più recenti disponibili e li aggiungiamo alla suite che utilizziamo se riteniamo che possano contribuire a migliorare le nostre capacità di rilevamento delle vulnerabilità.

Abbiamo anche una serie di ulteriori risorse che utilizziamo per identificare le vulnerabilità in combinazione con le scansioni automatiche che eseguiamo, come:

Programma Bug Bounty: utilizziamo Bugcrowd per eseguire il nostro programma Bug Bounty. Bugcrowd ci consente di accedere a una community esperta e affidabile costituita da decine di migliaia di ricercatori di sicurezza informatica che testano costantemente i nostri prodotti e segnalano le eventuali vulnerabilità individuate. Il nostro programma Bug Bounty è stato riconosciuto come il migliore nel settore per due anni consecutivi (2018-19).

Report di clienti e utenti: gli utenti dei nostri prodotti possono segnalare in qualsiasi momento gli eventuali bug riscontrati tramite l'Assistenza Atlassian. Collaboreremo con loro per raccogliere tutti i dati necessari in modo che la vulnerabilità possa essere segnalata internamente e corretta (subordinatamente alla convalida per garantire che la vulnerabilità sia reale e non un falso positivo). Questo processo coinvolge anche il personale di Atlassian, che può segnalare eventuali problemi riscontrati all'interno dei propri prodotti (esternamente o internamente) direttamente al team di sicurezza oppure aprire un ticket di assistenza.

Test di penetrazione esterni: ci avvaliamo di società di consulenza specializzate in sicurezza per condurre test di penetrazione strutturali con accesso al codice su prodotti e infrastruttura ad alto rischio. Vedi "Il nostro approccio ai test di sicurezza esterni" per maggiori dettagli.

Team di sicurezza dei prodotti Atlassian: conduciamo revisioni mirate del codice, sia manuali che assistite da strumenti, e collaboriamo a stretto contatto con i nostri team di sviluppo dei prodotti per migliorare la loro capacità di rilevare e risolvere automaticamente le vulnerabilità prima che il codice ci venga inviato.

Team rosso di Atlassian: disponiamo di un team rosso interno che ha il compito di simulare il ruolo degli avversari che cercano di identificare e sfruttare le vulnerabilità esistenti all'interno dei nostri sistemi, processi e ambienti, in modo da identificarle e risolverle il prima possibile.

Monitoraggio e risoluzione delle vulnerabilità

Per massimizzare l'efficienza e l'efficacia del nostro programma di gestione delle vulnerabilità, integriamo i processi che utilizziamo per identificare le vulnerabilità nei nostri sistemi interni di gestione dei ticket. In particolare, indipendentemente dal fatto che una vulnerabilità venga identificata tramite uno dei nostri strumenti di scansione o una delle altre risorse esaminate in precedenza, viene creato un ticket specifico per ogni vulnerabilità individuata nell'istanza Jira appropriata per garantire che sia segnalata al team di prodotto interessato affinché provveda alla risoluzione in conformità agli SLA pubblicati nella nostra Policy di correzione dei bug di sicurezza.

Il nostro team di sicurezza assicura la supervisione del processo e collabora con i team di prodotto e infrastruttura per garantire che tutte le vulnerabilità vengano risolte in conformità ai nostri impegni SLA.

Inoltre, abbiamo creato uno strumento dedicato che fornisce una visualizzazione da un unico riquadro per monitorare lo stato attuale delle vulnerabilità esistenti nei nostri prodotti e nell'infrastruttura di tutto l'ecosistema Atlassian. Ciò significa che è presente un punto centrale dal quale possiamo monitorare ogni vulnerabilità identificata per garantire che nulla venga accidentalmente dimenticato o trascurato.

Una volta sviluppata, la correzione per la vulnerabilità viene testata accuratamente e, nel caso dei nostri prodotti Cloud, incorporata nella pipeline CI/CD per la distribuzione. Per i prodotti Server, le correzioni vengono implementate in un nuovo rilascio e distribuite regolarmente insieme ad altre correzioni in conformità alla nostra cadenza di rilascio standard.

Prevenzione delle vulnerabilità durante il processo di sviluppo

Scansioni delle immagini dei contenitori

Atlassian distribuisce la maggior parte delle sue applicazioni utilizzando le immagini dei contenitori Docker. I contenitori Docker forniscono un ambiente integrato e indipendente composto da librerie di sistema pertinenti, strumenti, impostazioni di configurazione e qualsiasi altra dipendenza richiesta affinché i nostri prodotti possano essere eseguiti indipendentemente dai singoli parametri di configurazione della macchina. Il contenitore fornisce un efficace livello di astrazione, separando il codice software dall'infrastruttura sottostante in modo che i nostri prodotti possano funzionare senza problemi su macchine diverse.

Sebbene i contenitori offrano grandi vantaggi per i nostri sviluppatori e clienti in termini di capacità di distribuzione di codice utilizzabile in una varietà di ambienti, possono essere anche una fonte di vulnerabilità della sicurezza se il contenuto delle immagini è costituito da librerie o componenti obsoleti o comunque non sicuri.

Per gestire questo aspetto, Atlassian integra un processo completo di scansione della sicurezza dei contenitori nella propria pipeline CI/CD per qualsiasi contenitore implementato nei propri ambienti di sviluppo, staging o produzione. A tale scopo, utilizziamo il motore open source Anchore.Anchore fornisce una serie di strumenti che effettua un'ispezione approfondita di tutte le immagini dei contenitori distribuite dai nostri sviluppatori. Ciò include un'analisi dettagliata delle immagini per identificare i vari componenti che contengono (inclusi i pacchetti del sistema operativo e delle applicazioni, librerie di terze parti e file di configurazione).

Dipendenze open source

Sebbene sia importante trovare e correggere le vulnerabilità presenti nel nostro codice, i nostri prodotti e servizi si basano anche su numerose librerie open source. Per noi è quindi altrettanto importante sapere quali sono le librerie che stiamo usando e assicurarci che siano aggiornate con le ultime correzioni dei bug di sicurezza. A tale scopo, utilizziamo lo strumento SourceClear.SourceClear fornisce uno scanner in grado di identificare le dipendenze in una qualsiasi delle nostre build software e può quindi confrontare queste librerie con un database di vulnerabilità della sicurezza note.

Eventuali vulnerabilità identificate, se rilevate tramite Anchore o SourceClear, vengono quindi segnalate automaticamente tramite un ticket Jira formale al team di prodotto interessato in conformità al processo di gestione delle vulnerabilità descritto in precedenza in questo documento.

Altre iniziative intraprese per contrastare le vulnerabilità

Finora abbiamo ampiamente descritto in questo documento le misure che adottiamo per gestire le vulnerabilità al "backend", ovvero ciò che facciamo per risolvere le vulnerabilità identificate nei nostri prodotti o nelle nostre piattaforme. Tuttavia, innanzitutto ci adoperiamo costantemente per ridurre la frequenza con cui emergono. A tale scopo, abbiamo incorporato alcune iniziative uniche nel "frontend" del nostro processo di sviluppo per garantire che i nostri prodotti siano creati da zero in un'ottica di sicurezza.

Security Champions Program

Nel 2017 abbiamo iniziato a implementare il Security Champions Program in Atlassian per nominare un leader della sicurezza all'interno di ciascuno dei nostri team di prodotto e servizi. I nostri promotori seguono anche corsi di formazione dedicati che li aiutano a comprendere e identificare le vulnerabilità della sicurezza delle applicazioni, nonché i processi per la scrittura di codice sicuro. L'obiettivo di questo programma è di avere all'interno di ogni team un promotore dedicato che si assuma la responsabilità di diffondere messaggi di sicurezza chiave tra i membri del team e segnali eventuali problemi di sicurezza al nostro team di sicurezza centrale per facilitare flussi di comunicazione migliorati.

I promotori della sicurezza di Atlassian si incontrano una volta al mese per condividere strumenti e conoscenze sulle più recenti problematiche e sfide di sicurezza che devono affrontare, affinché tutti i nostri team possano trarne vantaggio. L'obiettivo finale è di utilizzare questo programma come trampolino di lancio per integrare in misura ancora maggiore la sicurezza nella nostra cultura. Siamo convinti che questo tipo di approccio sia un elemento chiave nel modo in cui cerchiamo di ridurre al minimo le vulnerabilità.

Tecnici della sicurezza dei prodotti

Nessuna discussione sulla gestione delle vulnerabilità sarebbe completa senza una spiegazione del ruolo chiave che i nostri tecnici della sicurezza dei prodotti assumono sia nell'eliminazione dei bug che nella progettazione di strumenti migliori.

In Atlassian, i tecnici della sicurezza dei prodotti completano la valutazione iniziale delle nuove vulnerabilità segnalate e collaborano con i team di progettazione dei prodotti per individuare la correzione migliore. Queste figure professionali, esperte nella sicurezza delle applicazioni, operano a livello globale per garantire una collaborazione efficiente e tempestiva con i team di progettazione dei prodotti.

I nostri tecnici della sicurezza hanno ruoli di sicurezza proattivi e reattivi in relazione al prodotto assegnato tra cui, a titolo esemplificativo ma non esaustivo:

  • Revisione e analisi dei modelli di minaccia aggiornati per la ricerca di rischi nuovi ed emergenti.
  • Revisione e analisi della sicurezza delle nuove funzioni.
  • Esecuzione della revisione manuale del codice.
  • Esecuzione di test di penetrazione.
  • Esecuzione di una revisione della piattaforma e dell'architettura.
  • Monitoraggio delle principali attività relative ai progetti e fornitura di indicazioni quando necessario.
  • Valutazione e presentazione, risoluzione rapida e ricompensa per i problemi segnalati tramite il nostro programma Bug Bounty.
  • Redazione di nuovi strumenti di automazione e degli strumenti di automazione esistenti per ottimizzare la copertura e l'efficienza.

Scorecard di sicurezza

Con i dati raccolti dai sistemi descritti in questo documento, possiamo eseguire il benchmark reciproco di team e prodotti per identificare in modo proattivo le aree di miglioramento.

In sintesi

Per gestire le vulnerabilità dei suoi prodotti e delle sue piattaforme, Atlassian adotta un approccio multiforme che utilizza una combinazione dei migliori strumenti di scansione, del programma Bug Bounty e di una serie di altri meccanismi in continua evoluzione per garantire l'identificazione e la risoluzione tempestive delle vulnerabilità che si presentano e ridurne al minimo la frequenza.

Desideri approfondire l'argomento?

È disponibile una serie di altre risorse a cui abbiamo fatto riferimento in questo documento o che è possibile consultare in altro modo per ottenere maggiori informazioni sul nostro approccio alla gestione delle vulnerabilità e, in generale, alla sicurezza.

[1] In questo documento, il termine vulnerabilità assume lo stesso significato di "bug", che è il termine utilizzato nel documento separato sul nostro approccio ai test di sicurezza.