Progettare la sicurezza per miliardi | Sala stampa di Facebook

0
5

Di Collin Greene, responsabile della sicurezza dei prodotti

Miliardi di persone usano Facebook per connettersi con le persone che contano per loro. Abbiamo la responsabilità di creare servizi sicuri che aiutino a proteggere le persone.

Su Facebook prendiamo il cosiddetto approccio “defense-in-depth” alla sicurezza, il che significa che mettiamo a punto una serie di protezioni per assicurarci di prevenire e affrontare le vulnerabilità nel nostro codice da più angolazioni. Si tratta di un enorme sforzo in corso che comprende squadre, dipartimenti e fusi orari. Gli ingegneri e le pratiche di sicurezza sono integrati in tutta l'azienda per garantire che le protezioni dei dati siano incorporate nel nostro codice e nei progetti fin dall'inizio, piuttosto che aggiunte alla fine.

Poiché è praticamente impossibile scrivere un codice impeccabile, non è raro che il software abbia bug. Mentre la maggior parte dei bug non ha gravi conseguenze, alcuni possono creare vulnerabilità di sicurezza che possono essere potenzialmente sfruttate per accedere a dati o account utente. Per questo motivo, Facebook si impegna a trovare, correggere e prevenire questi bug. Lavoriamo per migliorare continuamente le nostre difese in modo da poter contrastare le minacce emergenti e stare davanti ai nostri avversari, il che significa che questo tipo di lavoro non è mai finito.

Nel grafico sottostante, puoi vedere come il nostro approccio di “difesa in profondità” si basa su una combinazione di tecnologia, team di sicurezza esperti e una più ampia comunità di sicurezza per proteggere la nostra piattaforma. Nel seguente articolo, approfondiremo ciascuno di questi cinque componenti: framework sicuri, strumenti di test automatici, revisioni di peer e design, esercizi di team rosso e il nostro programma di bug bug.

Strutture sicure: Riduci gli errori di programmazione

Ogni ingegnere che si unisce a Facebook passa attraverso un bootcamp completo di 6 settimane, dove apprende i processi di sicurezza fondamentali descritti in questo post. Ciò garantisce che tutta la nostra forza lavoro di ingegneria si alleni nella sicurezza delle informazioni.

Inoltre, investiamo molto nella creazione di framework che aiutano gli ingegneri a prevenire e rimuovere intere classi di bug durante la scrittura del codice. I framework sono blocchi di sviluppo, come i linguaggi di programmazione personalizzati e le librerie di bit di codice comuni, che forniscono agli ingegneri protezioni incorporate durante la scrittura del codice.

Viene chiamato un esempio di un framework che abbiamo costruito Hack, un aggiornamento del popolare linguaggio di programmazione PHP. Hack aiuta gli sviluppatori a evitare di introdurre errori richiedendo loro di definire e digitare esplicitamente determinate variabili e parametri nel loro codice. L'aggiunta di queste informazioni consente al software di sviluppo di segnalare potenziali errori mentre lo sviluppatore sta codificando. Puoi pensare a questi requisiti come i paraurti gonfiabili in una pista da bowling: canalizzano e guidano le azioni che un programmatore può fare, limitando di fatto il numero di errori che possono essere introdotti. Come bonus, le informazioni aggiuntive che gli sviluppatori di Hack devono aggiungere al loro codice possono semplificare l'analisi successiva e ci aiutano a sviluppare gli strumenti di analisi che descriveremo nella prossima sezione. (I codificatori possono leggere il nostro post del blog degli sviluppatori su Hack, che è open source, per ulteriori dettagli tecnici.)

Abbiamo anche creato XHP, un potenziamento open source per PHP / Hack che aiuta gli ingegneri a integrare più facilmente codice PHP e HTML, riducendo la probabilità che gli errori vengano inavvertitamente introdotti nel codice. Questo aiuta a prevenire un tipo comune di problema noto come vulnerabilità di scripting cross-site.

Hack e XHP sono esempi di framework sicuri che aiutano i nostri ingegneri a sviluppare una tecnologia che è più sicura fin dall'inizio, piuttosto che richiedere la scrittura di codice aggiuntivo.

Strumenti di test automatizzati: Analizza il codice non-stop, automaticamente e in scala

Poiché i soli framework sicuri non possono prevedere e prevenire tutti i problemi, investiamo anche nella creazione di strumenti di analisi in grado di ispezionare il codice e trovare errori di sicurezza su larga scala e il più rapidamente possibile.

Stiamo continuamente imparando dagli incidenti di sicurezza che riguardano sia Facebook che altre società tecnologiche, scoprendo nuovi tipi di vulnerabilità software e quindi utilizzando questa conoscenza per prevenire problemi simili in futuro. È qui che entrano in gioco i nostri strumenti di prevenzione e rilevamento.

Ce ne sono molti diversi tipi di utensili noi schierare su Facebook, compresi gli strumenti di analisi statica, che esaminano il codice sorgente scritto e gli strumenti di analisi dinamica, che eseguono il codice per osservare gli errori mentre il programma è in esecuzione. Questi strumenti cercano potenziali problemi in modo che possano essere corretti o segnalati per ulteriori analisi.

Indipendentemente dal modo in cui troviamo un bug di sicurezza, rispondiamo risolvendo il problema e poi eseguendo un'analisi della causa principale, che ci consente di apprendere da ogni bug per impedirlo – o errori simili – che si verifichino in futuro. Questa analisi si rifà quindi alle altre fasi del nostro approccio di difesa in profondità. Ad esempio, potrebbe portare a creare nuovi schemi di codifica, nuovi strumenti o nuovi corsi di formazione.

Ad esempio, abbiamo creato uno strumento unico che aggiorniamo regolarmente per rilevare nuovi tipi di bug. Questo strumento analizza continuamente l'intero codice di Facebook, attualmente più di 100 milioni di righe Hack codice – per identificare queste vulnerabilità. Sarebbe incredibilmente dispendioso in termini di tempo e risorse per monitorare continuamente tanto codice, che cambia migliaia di volte al giorno, con revisori manuali. Questo strumento ci consente di verificare automaticamente il nostro codice per determinati tipi di bug in modo continuativo.

Revisioni tra pari, revisioni del design, esercizi della squadra rossa: Usa esperti umani per trovare difetti nella tecnologia dei difetti

Tutte le modifiche al codice passano attraverso la peer review obbligatoria oltre all'analisi automatizzata descritta nella sezione precedente. Alcune nuove funzionalità verranno inoltre sottoposte a revisioni di progettazione, in cui gli esperti di sicurezza di Facebook forniscono feedback per aiutare gli ingegneri a individuare eventuali carenze che potrebbero portare a problemi di sicurezza. Queste revisioni interne forniscono un altro livello di controllo per garantire che stiamo seguendo le migliori pratiche del settore.

Per immaginare come i nostri prodotti potrebbero essere utilizzati in modo improprio o attaccato, eseguiamo anche esercizi di modellizzazione delle minacce, in cui cerchiamo di anticipare in che modo gli attori malintenzionati potrebbero abusare dei nostri sistemi o abusare della nostra piattaforma. Risolviamo i problemi emersi in questi esercizi e usiamo questi apprendimenti per aiutare a progettare nuovi schemi di codifica e strumenti di analisi.

Il prossimo livello del nostro approccio alla difesa in profondità è di testare regolarmente le nostre protezioni, per verificare che il nostro codice e i nostri meccanismi di difesa si comportino come previsto e che i nostri team di risposta siano pronti e in grado di rilevare e indagare sugli attacchi. Per fare ciò, abbiamo un cosiddetto “team rosso” di esperti di sicurezza interni che pianificano ed eseguono “attacchi” in scena sui nostri sistemi. Questi esercizi senza preavviso aiutano a fornirci un quadro realistico della nostra prontezza mentre testiamo i nostri sistemi e processi.

Quindi prendiamo le conclusioni della squadra rossa e, insieme ad altri team partner in tutta l'azienda, delineamo come risponderemo a un incidente di sicurezza simile in quello che è noto come esercizio “da tavolo”. Questo ci aiuta a migliorare il coordinamento tra i nostri team che lavorano su sicurezza, privacy, politiche pubbliche, comunicazioni, prodotto e legale e ci aiuta a esercitare i muscoli organizzativi di cui avremmo bisogno durante un incidente reale.

Programma di bug bounty: Coinvolgi la comunità di sicurezza globale

Poiché affrontiamo molte delle stesse sfide di sicurezza del resto del settore tecnologico, abbiamo investito a lungo nella condivisione dei nostri strumenti e delle nostre conoscenze in modo da poter migliorare la difesa collettiva della nostra comunità. A loro volta, esperti di sicurezza delle informazioni esterni ci forniscono la loro esperienza attraverso il programma di bug bug di Facebook, uno dei più longevi nel settore.

Dal 2011, abbiamo incoraggiato ricercatori di sicurezza per divulgare responsabilmente potenziali problemi in modo che possiamo correggere i bug, riconoscere pubblicamente il loro lavoro e pagare loro una taglia. Il nostro programma di bug bug è stato fondamentale per aiutarci a rilevare rapidamente nuovi bug, individuare le tendenze e coinvolgere i migliori talenti di sicurezza al di fuori di Facebook per aiutarci a mantenere la piattaforma sicura. Le lezioni apprese da ciascuna relazione tornano al nostro più ampio sforzo di sicurezza, rendendoci migliori e più veloci nel trovare, correggere e prevenire i bug. Ad oggi, abbiamo pagato oltre $ 7,5 milioni in taglia ai ricercatori di oltre 100 paesi. Continuiamo a innovare in quest'area espandendo il programma di bug bug per includere i problemi che possono portare a abuso di dati e compromessi di app di terze parti sulla piattaforma.

Una missione unica per proteggere oltre 2 miliardi di persone su Facebook

Sostenere la nostra comunità globale è una grande responsabilità che ha guidato il miglioramento continuo e gli investimenti nelle tecnologie e nei talenti della sicurezza. Il nostro obiettivo nel trovare, risolvere e prevenire problemi di sicurezza ci ha permesso di aumentare le nostre difese man mano che Facebook è cresciuto per supportare miliardi di persone che si connettono tra loro. A volte questo ha significato l'adattamento delle nostre strategie per proteggere la nostra comunità globale in espansione, la riscrittura dei nostri framework di codifica ampiamente utilizzati e strumenti di sicurezza unici open source. E poiché sappiamo che il lavoro di sicurezza non è mai terminato al 100%, il nostro team di sicurezza continuerà a innovare con la crescita della community di Facebook.

[ad_2]

LEAVE A REPLY

Please enter your comment!
Please enter your name here