{"id":31852,"date":"2019-10-31T21:43:30","date_gmt":"2019-10-31T18:43:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/strah-i-nenavist-devsecops\/"},"modified":"2019-10-31T21:43:30","modified_gmt":"2019-10-31T18:43:30","slug":"strah-i-nenavist-devsecops","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Paura e odio per DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Avevamo 2 analizzatori di codice, 4 strumenti per test dinamici, le nostre creazioni e 250 script. Non \u00e8 che tutto questo fosse necessario nel processo attuale, ma dato che ho iniziato a implementare il DevSecOps, bisogna andare fino in fondo.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bcd78cc4963e397ecbaa18ffd43ce05e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/user\/narkos\">Fonte<\/a><\/noindex>. Gli autori dei personaggi: Justin Roiland e Dan Harmon.<\/i><\/p>\n<p>Che cos'\u00e8 il SecDevOps? E il DevSecOps? Quali sono le differenze? Sicurezza delle applicazioni: di cosa si tratta? Perch\u00e9 l'approccio classico non funziona pi\u00f9? A tutte queste domande risponde <b>Yuri Shabalin<\/b> da\u00a0<b>Swordfish Security. <\/b>Yuri risponder\u00e0 dettagliatamente a tutto e analizzer\u00e0 i problemi del passaggio dal modello classico di Sicurezza delle Applicazioni al processo DevSecOps: come affrontare correttamente l'integrazione del processo di sviluppo sicuro nel processo DevOps senza rompere nulla, come superare le fasi principali dei test di sicurezza, quali strumenti possono essere utilizzati, in cosa si differenziano e come configurarli correttamente per evitare insidie.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"sYMWGw5Lyu4\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/sYMWGw5Lyu4\/hqdefault.jpg\" alt=\"Guarda il video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<b>Sul relatore:<\/b> <b>Yuri Shabalin \u00e8 <\/b>Chief Security Architect presso <b>Swordfish Security<\/b>. Responsabile dell'implementazione dell'SSDL, dell'integrazione generale degli strumenti di analisi delle applicazioni in un'unica ecosistema di sviluppo e test. 7 anni di esperienza nella sicurezza informatica. Ha lavorato in Alfa-Bank, Sberbank e in Positive Technologies, che sviluppa software e fornisce servizi. Relatore a conferenze internazionali ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Sicurezza delle applicazioni: di cosa si tratta?<\/h2>\n<p>\n<b>Sicurezza delle applicazioni<\/b>\u00a0\u2014 \u00e8 un ramo della sicurezza che si occupa della sicurezza delle applicazioni. Non riguarda l'infrastruttura o la sicurezza di rete, ma specificamente ci\u00f2 che scriviamo e su cui lavorano gli sviluppatori: si tratta dei difetti e delle vulnerabilit\u00e0 dell'applicazione stessa.<\/p>\n<p>Direzione <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL o SDLC<\/a><\/noindex>\u00a0\u2014 <b>Ciclo di vita dello sviluppo della sicurezza<\/b>\u00a0\u2014 sviluppato dalla Microsoft. Nello schema, c'\u00e8 il modello canonico dell'SDLC, il cui obiettivo principale \u00e8 coinvolgere la sicurezza in ogni fase dello sviluppo, dai requisiti al rilascio e al go-live. Microsoft ha capito che ci sono troppi bug nel mercato, in aumento, e c'era bisogno di fare qualcosa, e ha proposto questo approccio, che \u00e8 diventato canonico.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa Sicurezza delle Applicazioni e l'SSDL non mirano a scoprire vulnerabilit\u00e0, come comunemente si pensa, ma a prevenire la loro comparsa. Con il tempo, l'approccio canonico di Microsoft \u00e8 stato migliorato e sviluppato, con un'immersione pi\u00f9 profonda e dettagliata.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl SDLC canonico \u00e8 fortemente dettagliato in diverse metodologie: OpenSAMM, BSIMM, OWASP. Le metodologie sono diverse, ma, in generale, simili.<\/p>\n<h3>Modello di Maturit\u00e0 per la Sicurezza Integrata<\/h3>\n<p>\nMi piace di pi\u00f9 <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Modello di Maturit\u00e0 per la Sicurezza Integrata<\/a><\/noindex>. La base della metodologia \u00e8 la suddivisione del processo di Sicurezza delle Applicazioni in 4 domini: Governance, Intelligence, SSDL Touchpoints e Deployment. In ogni dominio ci sono 12 pratiche, presentate sotto forma di 112 attivit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOgni attivit\u00e0 delle 112 ha <b>3 livelli di maturit\u00e0<\/b>: iniziale, intermedio e avanzato. Tutte le 12 pratiche possono essere studiate per sezioni, selezionando gli aspetti pi\u00f9 importanti per te, approfondendo come implementarli e aggiungendo gradualmente elementi, ad esempio, analisi statica e dinamica del codice o code review. Redigi un piano e lavora tranquillamente nell'ambito dell'implementazione delle attivit\u00e0 selezionate.<\/p>\n<h2>Perch\u00e9 DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps \u00e8 un grande processo globale in cui \u00e8 necessario prendersi cura della sicurezza.<\/p><\/blockquote>\n<p>\nInizialmente <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> si prevedeva il controllo della sicurezza. Nella pratica, il numero di team di sicurezza era molto inferiore rispetto ad oggi, e agivano non come partecipanti al processo, ma come organo di controllo e supervisione che impone requisiti e verifica la qualit\u00e0 del prodotto alla fine del rilascio. Questo \u00e8 un approccio classico, in cui i team di sicurezza erano separati dallo sviluppo e non partecipavano al processo.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl problema principale risiede proprio nel fatto che la sicurezza informatica \u00e8 separata dallo sviluppo. Di solito, si tratta di un certo contorno di sicurezza informatica con 2-3 strumenti grandi e costosi. Ogni sei mesi arriva il codice sorgente o un'applicazione da controllare, e una volta all'anno vengono eseguiti <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%98%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%B8%D0%B5\">test di penetrazione<\/a><\/noindex>. Questo porta al risultato che le tempistiche di rilascio si allungano, e agli sviluppatori vengono scaricate una quantit\u00e0 enorme di vulnerabilit\u00e0 dagli strumenti automatizzati. \u00c8 impossibile gestirle e risolverle, perch\u00e9 i risultati dei precedenti sei mesi non sono stati analizzati, e ora ci sono nuovi problemi.<\/p>\n<p>Nel processo di lavoro della nostra azienda vediamo che la sicurezza in tutti i settori e industrie comprende che \u00e8 giunto il momento di allinearsi e operare con lo sviluppo come un unico meccanismo - in\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B8%D0%B1%D0%BA%D0%B0%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8\"><b>Agile<\/b><\/a><\/noindex>. La paradigma DevSecOps si adatta perfettamente alla metodologia di sviluppo agile, all'implementazione, supporto e partecipazione in ogni rilascio e iterazione.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Transizione a DevSecOps<\/h2>\n<p>\nLa parola pi\u00f9 importante nel Ciclo di Vita dello Sviluppo della Sicurezza \u00e8 <b>\u00abprocesso\u00bb<\/b>. Devi capire questo prima di pensare di acquistare strumenti.<\/p>\n<blockquote><p>\u00c8 insufficiente semplicemente integrare gli strumenti nel processo DevOps; \u00e8 fondamentale l'interazione e la comprensione tra i partecipanti al processo.<\/p><\/blockquote>\n<p><\/p>\n<h3>Le persone sono pi\u00f9 importanti degli strumenti<\/h3>\n<p>\nSpesso la pianificazione di un processo di sviluppo sicuro inizia con la selezione e l'acquisto di uno strumento, e termina con tentativi di integrare lo strumento nel processo corrente, che rimangono tali. Questo porta a conseguenze sfortunate, poich\u00e9 ogni strumento ha le proprie peculiarit\u00e0 e limitazioni.<\/p>\n<p>Un caso comune \u00e8 quando il dipartimento di sicurezza sceglie uno strumento buono e costoso, con ampie funzionalit\u00e0, e si presenta agli sviluppatori per integrarlo nel processo. Ma non funziona: il processo \u00e8 strutturato in modo tale che le limitazioni dello strumento gi\u00e0 acquistato non si adattano all'attuale paradigma.<\/p>\n<blockquote><p>Inizia descrivendo quale risultato desideri e come dovrebbe apparire il processo. Questo aiuta a comprendere i ruoli dello strumento e della sicurezza nel processo.<\/p><\/blockquote>\n<p><\/p>\n<h3>Comincia con ci\u00f2 che \u00e8 gi\u00e0 in uso<\/h3>\n<p>\nPrima di acquistare strumenti costosi, dai un'occhiata a ci\u00f2 che hai gi\u00e0. Ogni azienda ha requisiti di sicurezza che devono essere rispettati nello sviluppo, ci sono controlli, penetration test - perch\u00e9 non trasformare tutto questo in una forma comprensibile e utile per tutti?<\/p>\n<p>Di solito i requisiti sono un grosso documento cartaceo che giace su uno scaffale. C'era un caso in cui ci siamo recati in un'azienda per esaminare i processi e abbiamo chiesto di mostrare i requisiti di sicurezza per il software. Il professionista che se ne occupava ha cercato a lungo:<\/p>\n<p><i>\u2014 Ora, da qualche parte nelle note c'era il percorso dove si trova questo documento.<\/i><\/p>\n<p>Alla fine abbiamo ricevuto il documento dopo una settimana.<\/p>\n<p>Per requisiti, controlli e altro, crea una pagina, ad esempio su\u00a0<b>Confluence<\/b>\u00a0\u2014 \u00e8 comodo per tutti.<\/p>\n<blockquote><p>\u00c8 pi\u00f9 facile riformattare ci\u00f2 che gi\u00e0 esiste e usarlo come punto di partenza.<\/p><\/blockquote>\n<p><\/p>\n<h3>Utilizza i Security Champions <\/h3>\n<p>\nDi solito, in una media azienda con 100-200 sviluppatori lavora un esperto di sicurezza che svolge diverse funzioni e non riesce fisicamente a controllare tutto. Anche se si impegna al massimo, da solo non pu\u00f2 controllare tutto il codice generato dallo sviluppo. Per tali casi \u00e8 stato sviluppato un concetto - <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>I Security Champions sono persone all'interno del team di sviluppo che sono interessate alla sicurezza del vostro prodotto.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl Security Champion \u00e8 un punto di accesso nel team di sviluppo e un evangelista della sicurezza in un'unica persona.<\/p>\n<p>Di solito, quando un esperto di sicurezza entra in un team di sviluppo e indica un errore nel codice, riceve una risposta stupita:<\/p>\n<p><i>\u2014 E lei chi \u00e8? La vedo per la prima volta. Va tutto bene per me\u2014 il mio Senior ha approvato durante il code review, possiamo andare avanti!<\/i><\/p>\n<p>Questa \u00e8 una situazione tipica, perch\u00e9 c'\u00e8 molta pi\u00f9 fiducia nei confronti dei Senior o semplicemente dei colleghi con cui uno sviluppatore interagisce costantemente nel lavoro e nel code review. Se invece dell'esperto di sicurezza \u00e8 il Security Champion a segnalare un errore e le sue conseguenze, la sua parola avr\u00e0 pi\u00f9 peso.<\/p>\n<p>Inoltre, gli sviluppatori conoscono meglio il loro codice rispetto a qualsiasi esperto di sicurezza. Per una persona che ha almeno 5 progetti nello strumento di analisi statica, di solito \u00e8 difficile ricordare tutte le sfumature. I Security Champions conoscono il loro prodotto: come interagisce e cosa guardare per prima cosa\u2014 sono pi\u00f9 efficaci.<\/p>\n<p>Quindi, prendete in considerazione l'idea di implementare i Security Champions e ampliare l'influenza del team di sicurezza. Anche per il champion stesso \u00e8 utile: sviluppo professionale in un nuovo campo, ampliamento della visione tecnica, potenziamento delle abilit\u00e0 tecniche, di gestione e di leadership, aumento del valore di mercato. \u00c8 un elemento di ingegneria sociale, i vostri \"occhi\" nel team di sviluppo.<\/p>\n<h2>Fasi di testing<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%9F%D0%B0%D1%80%D0%B5%D1%82%D0%BE\">La paradigma 20 su 80<\/a><\/noindex>\u00a0afferma che il 20% degli sforzi produce l'80% del risultato. Questo 20% sono le pratiche di analisi delle applicazioni che possono e devono essere automatizzate. Esempi di tali attivit\u00e0 sono l'analisi statica\u2014 <b>SAST<\/b>, l'analisi dinamica\u2014 <b>DAST,<\/b> e\u00a0<b>controllo Open Source<\/b>. Spiegher\u00f2 in dettaglio le attivit\u00e0 e gli strumenti, quali peculiarit\u00e0 incontriamo di solito durante la loro implementazione nel processo e come fare le cose nel modo giusto.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Problemi principali degli strumenti<\/h3>\n<p>\nMetter\u00f2 in evidenza i problemi attuali per tutti gli strumenti che richiedono attenzione. Li analizzer\u00f2 in dettaglio, in modo da non ripetermi ulteriormente.<\/p>\n<p><b>Tempo lungo di analisi. <\/b>Se dalla commit al rilascio in produzione ci vogliono 30 minuti per tutti i test e la compilazione, allora i controlli sulla sicurezza informatica richiederanno un giorno. Quindi, nessuno rallenter\u00e0 il processo. Tieni presente questa caratteristica e trai le conclusioni.<\/p>\n<p><b>Alto livello di False Negative o False Positive. <\/b>Tutti i prodotti sono diversi, tutti utilizzano framework diversi e il proprio stile di scrittura del codice. Su diverse basi di codice e tecnologie, gli strumenti possono mostrare diversi livelli di False Negative e False Positive. Pertanto, guarda cosa mostra precisamente\u00a0<b>la vostra<\/b> azienda e <b>per<\/b> le vostre<\/p>\n<p><b>applicazioni un buon e affidabile risultato.<\/b>Nessuna integrazione con gli strumenti esistenti.<\/p>\n<p><b>Guarda gli strumenti dal punto di vista delle integrazioni, rispetto a ci\u00f2 che gi\u00e0 utilizzi. Ad esempio, se hai Jenkins o TeamCity, controlla l'integrazione degli strumenti proprio con questo software, e non con GitLab CI, che non usi. <\/b>Mancanza o eccessiva complessit\u00e0 di personalizzazione.<\/p>\n<p><b>Se lo strumento non ha API, a cosa serve? Tutto ci\u00f2 che \u00e8 possibile fare nell'interfaccia dovrebbe essere accessibile tramite API. Idealmente, lo strumento dovrebbe avere la possibilit\u00e0 di personalizzare i controlli. <\/b>Nessuna Roadmap per lo sviluppo del prodotto. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0\">Roadmap<\/a><\/noindex> Lo sviluppo non sta fermo, utilizziamo sempre nuovi framework e funzionalit\u00e0, riscriviamo il vecchio codice in nuovi linguaggi. Vogliamo essere certi che lo strumento che acquisteremo supporter\u00e0 nuovi framework e tecnologie. Quindi \u00e8 importante sapere che il prodotto ha uno sviluppo reale e corretto.<\/p>\n<h3>Caratteristiche del processo<\/h3>\n<p>\nOltre alle caratteristiche degli strumenti, considera anche le peculiarit\u00e0 del processo di sviluppo. Ad esempio, ostacolare lo sviluppo \u00e8 un errore comune. Vediamo quali altre caratteristiche dovrebbero essere considerate e su cosa deve prestare attenzione il team di sicurezza.<\/p>\n<p>Per non ritardare i tempi di sviluppo e di rilascio, crea <b>diverse regole<\/b> e diversi <b>show stoppers\u00a0<\/b>\u2014 criteri di arresto del processo di compilazione in presenza di vulnerabilit\u00e0 \u2014 <b>per diversi ambienti.<\/b>Ad esempio, comprendiamo che il ramo attuale va in ambiente di sviluppo o UAT, quindi non ci fermiamo e non diciamo:<\/p>\n<p><i>\u2014 Avete delle vulnerabilit\u00e0 qui, non potrete andare avanti!<\/i><\/p>\n<p>In questa fase \u00e8 importante informare gli sviluppatori che ci sono problemi di sicurezza a cui vale la pena prestare attenzione.<\/p>\n<p><b>La presenza di vulnerabilit\u00e0 non \u00e8 un ostacolo per i test successivi<\/b>: manuali, di integrazione o manuali. D'altra parte, dobbiamo in qualche modo migliorare la sicurezza del prodotto e fare in modo che gli sviluppatori non trascurino ci\u00f2 che la sicurezza trova. Quindi, a volte procediamo in questo modo: nella demo, quando viene rilasciato nell'ambiente di sviluppo, informiamo semplicemente lo sviluppo:<\/p>\n<p><i>\u2014 Ragazzi, avete dei problemi, per favore fateci caso.<\/i><\/p>\n<p>Nella fase UAT mostriamo nuovamente gli avvisi sulle vulnerabilit\u00e0, e nella fase di uscita in produzione diciamo:<\/p>\n<p><i>\u2014 Ragazzi, abbiamo avvertito pi\u00f9 volte, non avete fatto nulla \u2014 non vi lasceremo uscire con questo.<\/i><\/p>\n<p>Parlando di codice e dinamica, \u00e8 necessario mostrare e avvisare sulle vulnerabilit\u00e0 solo delle funzionalit\u00e0 e del codice che sono stati appena scritti in questa funzionalit\u00e0. Se lo sviluppatore ha spostato un pulsante di 3 pixel e noi gli diciamo che ha un\u2019iniezione SQL e che deve correggerlo urgentemente, non \u00e8 corretto. Guardate solo ci\u00f2 che \u00e8 scritto ora e il cambiamento che arriva nell'applicazione.<\/p>\n<p>Supponiamo che abbiamo un certo difetto funzionale: ovvero come l'applicazione non dovrebbe funzionare: il denaro non viene trasferito, non c'\u00e8 transizione alla pagina successiva cliccando sul pulsante o il prodotto non viene caricato. <b>I difetti di sicurezza<\/b>\u00a0\u2014 sono difetti simili, ma non in relazione al funzionamento dell'applicazione, ma alla sicurezza. <\/p>\n<blockquote><p>Non tutti i problemi di qualit\u00e0 del software sono problemi di sicurezza. Ma tutti i problemi di sicurezza sono legati alla qualit\u00e0 del software. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nPoich\u00e9 tutte le vulnerabilit\u00e0 sono difetti simili, devono trovarsi l\u00e0 dove si trovano tutti i difetti di sviluppo. Quindi dimenticate i report e i terribili PDF che nessuno legge.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuando lavoravo in un'azienda che si occupava di sviluppo, ho ricevuto un report dagli strumenti di analisi statica. L'ho aperto, sono rimasto scioccato, ho fatto un caff\u00e8, ho sfogliato 350 pagine, l'ho chiuso e sono tornato a lavorare. <b>Grandi report sono report morti<\/b>. Di solito non vanno da nessuna parte, le email vengono eliminate, dimenticate, perse o il business dice che accetta i rischi.<\/p>\n<p>Cosa fare? I difetti confermati che abbiamo trovato vengono semplicemente trasformati in una forma utile per lo sviluppo, ad esempio, li accumuliamo nel backlog di Jira. I difetti vengono prioritizzati e risolti in base all'ordine di priorit\u00e0 insieme ai difetti funzionali e ai difetti dei test.<\/p>\n<h2>Analisi statica - SAST<\/h2>\n<p>\n<b>\u00c8 l'analisi del codice per identificare vulnerabilit\u00e0<\/b>, ma non \u00e8 la stessa cosa di SonarQube. Non controlliamo solo in base a modelli o stili. Durante l'analisi vengono applicati vari approcci: basati sull'albero delle vulnerabilit\u00e0, su\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85\">DataFlow<\/a><\/noindex>, sull'analisi dei file di configurazione. Questo \u00e8 tutto ci\u00f2 che riguarda direttamente il codice.<\/p>\n<p><b>Vantaggi dell'approccio<\/b>: <b>identificazione delle vulnerabilit\u00e0 nel codice in una fase iniziale dello sviluppo<\/b>, quando non ci sono ancora ambienti e strumenti pronti, e<b>\u00a0possibilit\u00e0 di scansione incrementale<\/b>: scansione della porzione di codice che \u00e8 cambiata, e solo della funzionalit\u00e0 che stiamo attualmente sviluppando, il che riduce il tempo di scansione.<\/p>\n<p><b>Contro<\/b>\u00a0\u2014 \u00e8 l'assenza di supporto per i linguaggi necessari.<\/p>\n<p><b>Integrazioni necessarie, <\/b>che dovrebbero esserci negli strumenti, secondo il mio parere soggettivo:<\/p>\n<ul>\n<li>Strumenti di integrazione: Jenkins, TeamCity e Gitlab CI.\n<\/li>\n<li>Ambiente di sviluppo: Intellij IDEA, Visual Studio. \u00c8 pi\u00f9 comodo per lo sviluppatore non dover navigare in un'interfaccia poco chiara da memorizzare, ma vedere direttamente nel proprio ambiente di sviluppo tutto il necessario, comprese le integrazioni e le vulnerabilit\u00e0 che ha trovato.\n<\/li>\n<li>Revisione del codice: SonarQube e revisione manuale.\n<\/li>\n<li>Tracker dei difetti: Jira e Bugzilla.\n<\/li>\n<\/ul>\n<p>\nNell'immagine ci sono alcuni dei migliori rappresentanti dell'analisi statica.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNon sono gli strumenti a essere importanti, ma il processo, quindi esistono soluzioni Open Source che sono altrettanto buone per testare il processo.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source non trover\u00e0 un'enorme quantit\u00e0 di vulnerabilit\u00e0 o flussi di dati complessi, ma nella costruzione del processo possono e devono essere utilizzate. Aiutano a capire come sar\u00e0 costruito il processo, chi risponder\u00e0 ai bug, chi far\u00e0 report, chi dovr\u00e0 rendere conto. Se volete avviare la fase iniziale della sicurezza del vostro codice, utilizzate soluzioni Open Source.<\/p>\n<p>Come si pu\u00f2 integrare, se siete all'inizio del percorso, e non avete nulla: n\u00e9 CI, n\u00e9 Jenkins, n\u00e9 TeamCity? Esaminiamo le integrazioni nel processo.<\/p>\n<h3>Integrazione a livello CVS<\/h3>\n<p>\nSe avete Bitbucket o GitLab, potete fare un'integrazione a livello <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>In base all'evento<\/b>\u00a0\u2014 pull request, commit. Scansionate il codice e nel status del build indicate se il controllo di sicurezza \u00e8 andato a buon fine o meno.<\/p>\n<p><b>Feedback. <\/b>Assolutamente, il feedback \u00e8 sempre necessario. Se eseguite semplicemente l'analisi da parte della sicurezza, lo mettete in una scatola e non ne parlate con nessuno, e poi alla fine del mese esce un sacco di bug - non \u00e8 corretto e non \u00e8 buono.<\/p>\n<h3>Integrazione con il sistema di code review<\/h3>\n<p>\nUna volta, abbiamo impostato come revisore predefinito un utente tecnico AppSec in una serie di progetti importanti. A seconda che vengano rilevati errori nel nuovo codice o meno, il revisore del pull request assegna lo stato su 'accettare' o 'necessita di lavoro' - o tutto \u00e8 OK, o \u00e8 necessario fare delle modifiche e link a cosa esattamente modificare. Per l'integrazione con la versione in produzione, avevamo impostato il divieto di merge, se il test di sicurezza non era stato superato. Questo veniva incluso nella revisione manuale del codice, e gli altri partecipanti al processo vedevano gli stati di sicurezza specificamente per questo processo.<\/p>\n<h3>Integrazione con SonarQube<\/h3>\n<p>\nMolti hanno <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> per la qualit\u00e0 del codice. Qui \u00e8 lo stesso - \u00e8 possibile fare le stesse gates solo per gli strumenti SAST. Avr\u00e0 lo stesso interfaccia, lo stesso quality gate, solo che si chiamer\u00e0 <b>security gate<\/b>. E anche qui, se avete impostato un processo utilizzando SonarQube, potete integrare tutto senza problemi.<\/p>\n<h3>Integrazione a livello di CI<\/h3>\n<p>\nQui \u00e8 tutto abbastanza semplice:<\/p>\n<ul>\n<li><b>A un livello con i test automatici<\/b>, test unitari.\n<\/li>\n<li><b>Divisione nelle fasi dello sviluppo<\/b>: dev, test, prod. Possono essere inclusi diversi set di regole, oppure diverse condizioni di fallimento: fermiamo la compilazione, non fermiamo la compilazione.\n<\/li>\n<li><b>Esecuzione sincrona\/asincrona<\/b>. Attendiamo il completamento del controllo dei test di sicurezza o non lo facciamo. Cio\u00e8, li abbiamo avviati e andiamo avanti, e poi riceviamo lo stato che tutto \u00e8 buono o cattivo.\n<\/li>\n<\/ul>\n<p>\nQuesto \u00e8 tutto in un ideale mondo rosa. Nella vita reale non esiste, ma ci stiamo provando. Il risultato delle verifiche di sicurezza dovrebbe essere analogo ai risultati dei test unitari.<\/p>\n<p>Ad esempio, abbiamo preso un grande progetto e abbiamo deciso che ora utilizzeremo SAST per analizzarlo - va bene. Abbiamo inserito questo progetto in SAST, e ci ha restituito 20.000 vulnerabilit\u00e0, e con una decisione ferma abbiamo accettato che andasse tutto bene. 20.000 vulnerabilit\u00e0 rappresentano il nostro debito tecnico. Metteremo il debito in una scatola, lo gestiremo progressivamente e registreremo bug nei tracker dei difetti. Assumeremo una societ\u00e0, faremo tutto noi stessi o ci aiuteranno i Security Champions - e il debito tecnico si ridurr\u00e0.<\/p>\n<p>Tutte le nuove vulnerabilit\u00e0 nel codice devono essere corrette come gli errori nei test unitari o nei test automatici. In altre parole, una volta avviata la build, si eseguono i test e se due test falliscono, ed anche due test di sicurezza. Va bene - andiamo a vedere cosa \u00e8 successo, correggiamo il primo, correggiamo il secondo, la prossima volta ricontrolliamo - tutto bene, non ci sono nuove vulnerabilit\u00e0, i test non sono falliti. Se il problema \u00e8 pi\u00f9 profondo e necessita di un'analisi accurata, o la correzione delle vulnerabilit\u00e0 coinvolge parti significative di ci\u00f2 che sta sotto il cofano: registriamo un bug nel tracker dei difetti, viene prioritizzato e corretto. Sfortunatamente, il mondo non \u00e8 perfetto e i test a volte falliscono.<\/p>\n<p>Esempio di security gate - analogo al quality gate, relativo alla presenza e al numero di vulnerabilit\u00e0 nel codice.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integriamo con SonarQube - il plugin si installa, tutto molto comodo e fantastico.<\/p>\n<h3>Integrazione con l'ambiente di sviluppo<\/h3>\n<p>\n<b>Possibilit\u00e0 di integrazione:<\/b><\/p>\n<ul>\n<li>Avvio della scansione dall'ambiente di sviluppo ancora prima del commit.\n<\/li>\n<li>Visualizzazione dei risultati.\n<\/li>\n<li>Analisi dei risultati.\n<\/li>\n<li>Sincronizzazione con il server.\n<\/li>\n<\/ul>\n<p>\nEcco come appare l'ottenimento dei risultati dal server.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel nostro ambiente di sviluppo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> compare semplicemente un'opzione aggiuntiva che informa che durante la scansione sono state rilevate tali vulnerabilit\u00e0. \u00c8 possibile modificare il codice immediatamente, guardare le raccomandazioni e\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Tutto ci\u00f2 \u00e8 situato nella postazione di lavoro dello sviluppatore, il che \u00e8 molto comodo - non \u00e8 necessario navigare tra ulteriori collegamenti per cercare qualcosa di aggiuntivo.<\/p>\n<h2>Open Source<\/h2>\n<p>\nQuesto \u00e8 il mio argomento preferito. Tutti usano librerie Open Source - perch\u00e9 scrivere un sacco di soluzioni artigianali quando puoi semplicemente utilizzare una libreria gi\u00e0 pronta in cui \u00e8 tutto gi\u00e0 implementato?<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCerto, \u00e8 cos\u00ec, ma anche le biblioteche sono scritte da persone, comportano determinati rischi e presentano vulnerabilit\u00e0 di cui viene riferito periodicamente, o costantemente. Pertanto, il passo successivo nella Sicurezza delle Applicazioni \u00e8 l'analisi dei componenti Open Source.<\/p>\n<h3>Analisi Open Source - OSA<\/h3>\n<p>\nLo strumento comprende tre grandi fasi.<\/p>\n<p><b>Ricerca di vulnerabilit\u00e0 nelle librerie. <\/b>Ad esempio, lo strumento sa che stiamo utilizzando una certa libreria e che in\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> o nei bug tracker ci sono delle vulnerabilit\u00e0 relative a questa versione della libreria. Quando si tenta di utilizzarla, lo strumento emetter\u00e0 un avviso che informa della vulnerabilit\u00e0 della libreria e consiglia di usare un'altra versione priva di vulnerabilit\u00e0.<\/p>\n<p><b>Analisi della conformit\u00e0 delle licenze. <\/b>Per ora non \u00e8 molto popolare da noi, ma se si lavora con l'estero, pu\u00f2 capitare di ricevere una reprimenda per l'uso di un componente open source che non pu\u00f2 essere utilizzato o modificato. Secondo la politica di licenza della libreria, non possiamo farlo. Oppure, se l'abbiamo modificata e la usiamo, dobbiamo pubblicare il nostro codice. Naturalmente, nessuno vuole pubblicare il codice dei propri prodotti, ma ci sono modi per tutelarsi da questo.<\/p>\n<p><b>Analisi dei componenti utilizzati in ambito industriale. <\/b>Immaginiamo una situazione ipotetica in cui abbiamo finalmente completato lo sviluppo e rilasciato l'ultima versione del nostro microservizio. Vive l\u00ec magnificamente - una settimana, un mese, un anno. Non lo raccogliamo, non facciamo controlli di sicurezza, sembra che tutto vada bene. Ma improvvisamente, dopo due settimane dal rilascio, viene scoperta una vulnerabilit\u00e0 critica in un componente open source che stiamo utilizzando proprio in questa build, nell'ambiente industriale. Se non stiamo registrando ci\u00f2 che utilizziamo e dove lo utilizziamo, non vedremo semplicemente questa vulnerabilit\u00e0. Alcuni strumenti offrono la possibilit\u00e0 di monitorare le vulnerabilit\u00e0 nelle librerie attualmente utilizzate nell'ambiente industriale. \u00c8 molto utile.<\/p>\n<p><b>Funzionalit\u00e0:<\/b><\/p>\n<ul>\n<li>Diverse politiche per diverse fasi dello sviluppo.\n<\/li>\n<li>Monitoraggio dei componenti nell'ambiente industriale.\n<\/li>\n<li>Controllo delle librerie all'interno della rete dell'organizzazione.\n<\/li>\n<li>Supporto per diversi sistemi di build e linguaggi.\n<\/li>\n<li>Analisi delle immagini Docker.\n<\/li>\n<\/ul>\n<p>\nAlcuni esempi di leader nel settore che si occupano di analisi Open Source.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nL'unico gratuito tra questi \u00e8 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> da OWASP. Pu\u00f2 essere attivato nelle prime fasi per vedere come funziona e cosa supporta. Fondamentalmente, sono tutti prodotti cloud, oppure on-premise, ma i dati vengono comunque inviati su internet. Non vengono inviati le vostre librerie, ma hash o i propri valori calcolati, e le fingerprint al proprio server, per ricevere notifiche sulla presenza di vulnerabilit\u00e0.<\/p>\n<h3>Integrazione nel processo<\/h3>\n<p>\n<b>Controllo delle librerie nel perimetro<\/b>, che vengono scaricate da fonti esterne. Abbiamo repository esterni e interni. Ad esempio, all'interno di Event Central c'\u00e8 Nexus, e vogliamo assicurarci che nel nostro repository interno non ci siano vulnerabilit\u00e0 con stato \"critico\" o \"alto\". \u00c8 possibile configurare il proxying utilizzando lo strumento Nexus Firewall Lifecycle in modo che tali vulnerabilit\u00e0 vengano bloccate e non entrino nel repository interno.<\/p>\n<p><b>Integrazione nel CI<\/b>. A un livello con test automatici, test unitari e separazione per fasi di sviluppo: dev, test, prod. In ogni fase \u00e8 possibile scaricare qualsiasi libreria, utilizzare ci\u00f2 che si desidera, ma se ci sono elementi critici con stato \"critical\" - potrebbe essere utile portare l'attenzione degli sviluppatori su questo al momento del rilascio in produzione.<\/p>\n<p><b>Integrazione con artefatti<\/b>: Nexus e JFrog.<\/p>\n<p><b>Integrazione nell'ambiente di sviluppo. <\/b>Gli strumenti che scegliete devono avere integrazione con gli ambienti di sviluppo. Lo sviluppatore deve avere accesso ai risultati della scansione dal proprio posto di lavoro, oppure la possibilit\u00e0 di eseguire autonomamente una scansione e controllare il codice per la presenza di vulnerabilit\u00e0 prima del commit in CVS.<\/p>\n<p><b>Integrazione nel CD. <\/b>Questa \u00e8 una funzionalit\u00e0 interessante che mi piace molto e di cui ho gi\u00e0 parlato - il monitoraggio dell'emergere di nuove vulnerabilit\u00e0 nell'ambiente produttivo. Funziona pi\u00f9 o meno cos\u00ec.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbbiamo <b>Public Component Repositories<\/b>\u00a0\u2014 alcuni strumenti esterni e il nostro repository interno. Vogliamo che contenga solo componenti trusted. Durante il proxying della richiesta verifichiamo che la libreria scaricata non abbia vulnerabilit\u00e0. Se rientra in determinate politiche che stabilisco e che necessariamente concordiamo con gli sviluppatori, non la scarichiamo e arriva una notifica per utilizzare una versione diversa. Di conseguenza, se nella libreria c'\u00e8 qualcosa di realmente critico e problematico, l'autore non ricever\u00e0 la libreria gi\u00e0 in fase di installazione - dovr\u00e0 usare una versione superiore o inferiore.<\/p>\n<ul>\n<li>Durante il build controlliamo che nessuno abbia infilato qualcosa di male, che tutti i componenti siano sicuri e che nessuno porti sul dispositivo USB qualcosa di pericoloso.\n<\/li>\n<li>Nel repository abbiamo solo componenti trusted. \n<\/li>\n<li>Durante il deploy verifichiamo ancora una volta il pacchetto stesso: war, jar, DL o un'immagine Docker per assicurarci che sia conforme alla politica. \n<\/li>\n<li>All'uscita in produzione monitoriamo ci\u00f2 che accade nell'ambiente di produzione: se emergono o meno vulnerabilit\u00e0 critiche.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Analisi dinamica - DAST<\/h2>\n<p>\nGli strumenti di analisi dinamica sono radicalmente diversi da tutto ci\u00f2 che \u00e8 stato detto finora. \u00c8 una simulazione del lavoro dell'utente con l'applicazione. Se si tratta di un'applicazione web, inviamo richieste simulando l'operato del cliente, facciamo clic su pulsanti nel front-end, inviamo dati artificiali dai moduli: virgolette, parentesi, simboli in varie codifiche, per osservare come l'applicazione funziona e gestisce dati esterni.<\/p>\n<p>Questo sistema consente anche di controllare vulnerabilit\u00e0 tipiche nell'Open Source. Poich\u00e9 DAST non conosce quali Open Source utilizziamo, invia semplicemente modelli \"maligni\" e analizza le risposte del server:<\/p>\n<p><i>\u2014 Aha, qui c'\u00e8 un problema di deserializzazione, e qui no.<\/i><\/p>\n<p>Ci sono grossi rischi, perch\u00e9 se esegui questo test di sicurezza sulla stessa piattaforma utilizzata dai tester - possono verificarsi cose indesiderate.<\/p>\n<ul>\n<li>Alto carico sulla rete del server dell'applicazione.\n<\/li>\n<li>Nessuna integrazione.\n<\/li>\n<li>Possibilit\u00e0 di modificare le impostazioni dell'applicazione in analisi.\n<\/li>\n<li>Nessun supporto per le tecnologie necessarie.\n<\/li>\n<li>Difficolt\u00e0 di configurazione.\n<\/li>\n<\/ul>\n<p>\nAbbiamo avuto una situazione in cui finalmente abbiamo avviato AppScan: abbiamo faticato a ottenere accesso all'applicazione, abbiamo ricevuto 3 credenziali e ci siamo felici - finalmente possiamo controllare tutto! Abbiamo avviato la scansione e la prima cosa che ha fatto AppScan \u00e8 stata entrare nel pannello di amministrazione, ha cliccato su tutti i pulsanti, ha cambiato met\u00e0 dei dati e poi ha addirittura bloccato il server con le sue <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-richieste. Sviluppo con test hanno detto:<\/p>\n<p><i>\u2014 Ragazzi, state scherzando?! Vi abbiamo dato le credenziali e voi avete bloccato il server!<\/i><\/p>\n<p>Tenete presente i rischi potenziali. Idealmente, preparate un ambiente di test separato per la sicurezza delle informazioni, che sar\u00e0 isolato dal resto dell'ambiente in qualche modo, e sarebbe preferibile controllare il pannello di controllo manualmente. Questo \u00e8 un pentest - quei rimanenti percentuali di sforzi che attualmente non stiamo considerando. <\/p>\n<p>Vale la pena considerare che si pu\u00f2 usare questo come un'analogia per i test di carico. Nella prima fase, si pu\u00f2 attivare uno scanner dinamico in 10-15 flussi e vedere cosa succede, ma di solito, come mostra la pratica, non viene fuori nulla di buono.<\/p>\n<p>Qualche risorsa che di solito usiamo.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVale la pena menzionare <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 \u00e8 il \"coltello svizzero\" per qualsiasi specialista della sicurezza. Viene usato da tutti ed \u00e8 molto comodo. \u00c8 uscita una nuova versione demo della enterprise edition. Se prima era solo un'utilit\u00e0 stand alone con plugin, ora finalmente gli sviluppatori stanno realizzando un grande server da cui si potranno gestire pi\u00f9 agenti. \u00c8 fantastico, consiglio di provarlo.<\/p>\n<h3>Integrazione nel processo<\/h3>\n<p>\nL'integrazione avviene in modo abbastanza semplice: <b>avvio della scansione dopo l'installazione riuscita <\/b>dell'applicazione sul server e\u00a0<b>scansione dopo aver completato con successo i test di integrazione<\/b>.<\/p>\n<p>Se le integrazioni non funzionano o ci sono dei mock e funzioni fittizie, questo \u00e8 inutile e non ha senso: qualsiasi modello inviamo, il server risponder\u00e0 sempre allo stesso modo.<\/p>\n<ul>\n<li>Ideale sarebbe avere un ambiente di test separato.\n<\/li>\n<li>Prima di iniziare i test, registrate la sequenza di login.\n<\/li>\n<li>Il test del sistema di amministrazione \u00e8 solo manuale.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Processo<\/h2>\n<p>\nUn po' in generale sul processo e sul funzionamento di ciascun strumento, in particolare. Tutte le applicazioni sono diverse: in una, l'analisi dinamica funziona meglio, in un'altra quella statica, in un'altra ancora l'analisi OpenSource, i pentest o davvero qualcosa di diverso, ad esempio, eventi di\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Ogni processo ha bisogno di controllo.<\/p><\/blockquote>\n<p>\nPer capire come funziona il processo e dove pu\u00f2 essere migliorato, \u00e8 necessario raccogliere metriche da tutto ci\u00f2 che \u00e8 raggiungibile, comprese le metriche di produzione, le metriche degli strumenti e dai defect tracker.<\/p>\n<p>Qualsiasi dato \u00e8 utile. \u00c8 importante esaminare da diverse prospettive dove ciascuno strumento \u00e8 meglio utilizzato e dove il processo presenta dei punti deboli. Potrebbe essere utile osservare i tempi di risposta dello sviluppo per capire dove migliorare il processo basandosi sui tempi. Pi\u00f9 dati si raccolgono, pi\u00f9 prospettive possono essere costruite, dai livelli pi\u00f9 alti fino ai dettagli di ogni processo.<\/p>\n<p><img decoding=\"async\" alt=\"Paura e odio per DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoich\u00e9 ogni analizzatore statico e dinamico ha le proprie API, i propri metodi di avvio e principi, alcuni hanno scheduler mentre altri no, stiamo scrivendo uno strumento <b>AppSec Orchestrator<\/b>, che consente di creare un'unica interfaccia per l'intero processo del prodotto e gestirlo da un unico punto.<\/p>\n<p>I manager, gli sviluppatori e gli ingegneri della sicurezza hanno un unico punto di accesso da cui possono vedere cosa \u00e8 stato avviato, configurare e avviare la scansione, ottenere i risultati della scansione e presentare requisiti. Ci sforziamo di allontanarci dalla carta, traducendo tutto in un linguaggio umano, quello utilizzato dagli sviluppatori: pagine su Confluence con stati e metriche, difetti in Jira o in vari defect tracker, oppure incorporare nel processo sincrono\/asincrono in CI\/CD.<\/p>\n<h2>Key Takeaways<\/h2>\n<p>\n<b>Gli strumenti non sono la cosa principale.<\/b> Prima si deve pensare al processo, poi implementare gli strumenti. Gli strumenti sono utili, ma costosi, quindi si pu\u00f2 iniziare con il processo e impostare l'interazione e la comprensione tra sviluppo e sicurezza. Dal punto di vista della sicurezza, non \u00e8 necessario 'fermare' tutto indiscriminatamente, mentre dal punto di vista dello sviluppo, se c'\u00e8 qualcosa di altamente critico, \u00e8 necessario affrontarlo e non ignorare il problema.<\/p>\n<p><b>Qualit\u00e0 del prodotto<\/b>\u00a0<b>\u2014 \u00e8 l'obiettivo comune<\/b> sia per la sicurezza che per lo sviluppo. Facciamo lo stesso lavoro, cercando di garantire che tutto funzioni correttamente e che non ci siano rischi reputazionali o perdite finanziarie. \u00c8 per questo che promuoviamo l'approccio DevSecOps, SecDevOps, per migliorare la comunicazione e rendere il prodotto di qualit\u00e0 superiore.<\/p>\n<p><b>Iniziate da ci\u00f2 che \u00e8 gi\u00e0 presente<\/b>: requisiti, architettura, controlli parziali, formazione, linee guida. Non \u00e8 necessario applicare subito tutte le pratiche a tutti i progetti \u2014 <b>procedi in modo iterativo<\/b>. Non esiste uno standard unico \u2014 <b>sperimenta<\/b> e prova diversi approcci e soluzioni.<\/p>\n<p><b>Tra i difetti di sicurezza informatica e i difetti funzionali c'\u00e8 un segno di uguaglianza<\/b>.<\/p>\n<p><b>Automatizza tutto<\/b>, ci\u00f2 che si muove. Tutto ci\u00f2 che non si muove \u2014 fai in modo che si muova e automatizzalo. Se qualcosa viene fatto manualmente, non \u00e8 una buona parte del processo. Potrebbe valere la pena riesaminarlo e automatizzarlo anche.<\/p>\n<p>Se la dimensione del team di sicurezza informatica \u00e8 piccola \u2014 <b>usa i Security Champions<\/b>.<\/p>\n<p>\u00c8 possibile che ci\u00f2 di cui ti ho parlato non sia adatto a te e che tu ne inventi uno tuo \u2014 ed \u00e8 tutto corretto. Ma\u00a0<b>scegli gli strumenti in base ai requisiti del tuo processo specifico<\/b>. Non guardare a cosa dice la community, riguardo a quali strumenti sono scadenti e quali sono buoni. Potrebbe darsi che proprio nel tuo prodotto sia il contrario.<\/p>\n<p><b>Requisiti per gli strumenti.<\/b><\/p>\n<ul>\n<li>Basso tasso di falsi positivi.\n<\/li>\n<li>Tempo di analisi adeguato.\n<\/li>\n<li>Usabilit\u00e0.\n<\/li>\n<li>Disponibilit\u00e0 di integrazioni.\n<\/li>\n<li>Comprensione del piano di sviluppo del prodotto.\n<\/li>\n<li>Possibilit\u00e0 di personalizzazione degli strumenti.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>La presentazione di Yuri \u00e8 stata scelta tra le migliori al DevOpsConf 2018. Per scoprire un numero ancora maggiore di idee interessanti e casi pratici, vieni il 27 e 28 maggio a Skolkovo per\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> nell'ambito di <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festival RIT++<\/a><\/noindex>. E ancora meglio, se sei pronto a condividere la tua esperienza, allora <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">invia la tua proposta<\/a><\/noindex> per una presentazione entro il 21 aprile.<\/p><\/blockquote>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/448488\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u00a0\u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438\u00a0250\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435\u00a0\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e\u00a0\u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e\u00a0\u0438\u0434\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438\u00a0\u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410\u00a0DevSecOps? \u0412\u00a0\u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security\u00a0\u2014 \u043e\u00a0\u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u0430\u0445 \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u044c DevSecOps | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Paura e odio per DevSecOps | ProHoster","description":"Avevamo 2 analizzatori di codice, 4 strumenti per test dinamici, i nostri progetti e 250 script.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u0430\u0445 \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u044c DevSecOps | ProHoster","og:description":"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/strah-i-nenavist-devsecops","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:30+00:00","article:modified_time":"2019-10-31T18:43:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31852","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 08:08:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:50:34","updated":"2026-01-21 08:08:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}