Domanda:
Come comunicare agli sviluppatori la vulnerabilità di sicurezza rilevata quando non inclusa nelle storie degli utenti (requisiti)
Anthony
2020-04-29 09:34:35 UTC
view on stackexchange narkive permalink

Lavoro come responsabile del team di sicurezza IT in cui lavoro. Una parte importante delle mie mansioni lavorative è condurre la scansione, la gestione e la convalida della riparazione delle vulnerabilità. Interagisco spesso con altri team, con una notevole quantità di interazione con i team di sviluppo e QA.

Ieri stavo lavorando insieme al nostro team QA per convalidare i requisiti aziendali prima che le modifiche alle applicazioni fossero rilasciate nel nostro ambiente di produzione. Uno dei requisiti di sicurezza è che determinati controlli di sicurezza siano implementati nel codice per mitigare una serie di vulnerabilità di base (si pensi ad esempio a OWASP Top 10), ma poiché la sicurezza non è stata coinvolta abbastanza presto nella fase di raccolta dei requisiti / progettazione della storia prima dello sviluppo, questo requisito non era chiaramente compreso nella user story .

Attraverso i risultati dei test di strumenti come SonarQube e Burp Suite, i requisiti di sicurezza non venivano soddisfatti. Molteplici vulnerabilità rimangono ancora sfruttabili e gli strumenti per sfruttarle sono disponibili gratuitamente. A causa del fatto che i requisiti di sicurezza non sono stati rilevati nella user story, prevedo di respingere lo sviluppo che questa non è una richiesta giusta. L'avvio di una nuova richiesta di funzionalità richiederebbe molto più tempo e molto probabilmente comprometterebbe il rilascio tempestivo, con gli stakeholder aziendali (non IT) che utilizzano questo software che sarebbero insoddisfatti. Sia il mio team, il QA che il mio manager concordano sul fatto che si tratta di un problema critico che dovrebbe essere risolto prima del rilascio. Se questa vulnerabilità viene sfruttata, i dati sensibili dei clienti potrebbero essere divulgati . Sto ancora cercando di vedere se la vulnerabilità è allo stato brado in questo momento.

Come faccio a comunicare al team di sviluppo che la vulnerabilità di sicurezza deve essere risolta prima del rilascio, pur riconoscendo che questa richiesta non rientra esattamente nell'ambito della user story originale? Voglio evitare ritardi ingiustificati nella riparazione e non intensificarli se non devo assolutamente.

Voto per chiudere questa domanda perché più che altro sembra un problema di processo.L'opzione più appropriata dipenderà fortemente da come funzionano le cose nella tua azienda e dalla metodologia di sviluppo che utilizzi.Forse hai bisogno di creare un ticket, sollevarlo durante una riunione, ospitare una riunione, inviarlo in un'e-mail o discuterne con il PM.Sai come vengono solitamente segnalati o discussi i problemi o hai chiesto al tuo manager oa qualcuno del team di sviluppo qual è il processo?
Questo suona decisamente come un problema di processo.Potrei leggere tra le righe qui, ma sembra che il vero problema che OP sta cercando di affrontare sia come assegnare la colpa all'interno del processo di sviluppo della sua azienda.Gli sviluppatori apparentemente rifiuteranno la colpa se hanno soddisfatto i requisiti come scritto e vorranno che le parti responsabili della creazione dei requisiti vengano incolpate;OP non vuole incolpare quelle altre parti e l'apertura di una nuova richiesta di funzionalità lo farà implicitamente.
"La funzionalità non introduce bug sfruttabili" non dovrebbe essere un presupposto implicito in ogni singola user story?Non l'ho mai visto menzionato esplicitamente da nessuna parte.
Qual è il rischio per l'azienda di ritardare il rilascio?Presumibilmente il rilascio migliora i flussi di lavoro che fanno risparmiare denaro all'azienda.Quanto perdono se lo rilasciano nel suo stato attuale (supponiamo che soddisfi gli altri parametri di qualità)
Questo è ovviamente un errore nella gestione del progetto.Sembra più un problema per https://pm.stackexchange.com
Perché non parlare con il PO dell'aggiunta di una nuova User Story all'elenco?"Come utente, non voglio che le mie informazioni personali siano trapelate a causa di [vulnerabilità di sicurezza]" Il punto centrale di Agile è consentire al team di sviluppo di modificare il proprio lavoro in base ai nuovi requisiti.
@nick012000 - Dato che ho ancora ottenuto la chiara autorità di ritardare il rilascio per prod, non voglio agire troppo presto o avventato.Una nuova storia molto probabilmente metterebbe a repentaglio il rilascio tempestivo, ma ora è discutibile poiché aggiornerò
@corsiKa - Operiamo nel settore dei servizi finanziari che è fortemente regolamentato, quindi l'impatto aziendale della violazione dei dati è sostanziale: multe, maggiore controllo normativo tra gli altri
@Anthony Hai frainteso la mia domanda.Fai finta di non avere problemi di sicurezza per un momento.Probabilmente il rilascio contiene miglioramenti aziendali.Qual è il costo per l'azienda per non avere quei miglioramenti?
Per quello che vale, penso che una parte fondamentale del successo qui sarà la sicurezza che avrà il potere di interrompere un rilascio fino a quando i problemi di sicurezza non saranno risolti.Mentre alcuni sviluppatori di software sono molto attenti alla sicurezza, la verità è che molti sviluppatori di software e team di sviluppo non apprezzano appieno il rischio per la sicurezza e probabilmente non sono convincenti.Parte del problema è che la maggior parte delle volte i rischi per la sicurezza non si materializzano (tendono ad essere a bassa probabilità) e gli sviluppatori non sono ricompensati per la creazione di software sicuro, sono ricompensati per la fornitura di funzionalità nei tempi previsti.Quindi hai bisogno di qualcuno che forzi il problema.
Nove risposte:
virolino
2020-04-29 10:20:21 UTC
view on stackexchange narkive permalink

Per come la descrivi, hai scoperto la vulnerabilità più tramite test intuitivi, piuttosto che mediante test basati su casi di test. Questo è un modo molto buono e valido di test. I clienti finali utilizzano sicuramente il software senza alcun requisito o documento di specifica del test.

Ora, per come la vedo io, non "comunichi al team di sviluppo" nulla. Devi solo compilare la segnalazione del problema (bug) nel sistema di gestione dei problemi e notificare al project manager che è stato rilevato un problema ad alto impatto. È nell'autorità e nella responsabilità del project manager decidere cosa fare con il problema: risolvere, non risolvere, ritardare la risoluzione.

Per essere sicuri di essere coperti in caso di problemi futuri, se il bug non è stato risolto, assicurati di avere una comunicazione scritta con le persone coinvolte (utilizzando strumenti dedicati, come il sistema di gestione dei problemi; o anche la posta elettronica).


non è esattamente nell'ambito della user story originale

La sicurezza del sito e la sicurezza dei dati sono le prime "user story" del progetto, per come la vedo io. L '"utente" è il business, che preferisce restare nel mercato, senza scandali per la fuga di dati. Tutto il resto viene dopo. E le parole esatte non contano.

Ho avuto successo con il concetto di storie di "utente malvagio", in cui l'utente (Mallory, Eve o chiunque altro) cerca di fare qualcosa e l'AC include "questo non funziona" e messaggi di errore / segnalazione.
Quel signore è un modo elegante e infallibile per lavorare professionalmente sollevando preoccupazioni senza interferire con la cultura del lavoro implicita e forse sconosciuta: "Usa solo il canale stabilito, anche per le eccezioni".Ciò consente di mettere da parte le ipotesi sul motivo della cattiva implementazione (soggettivamente) e concentrarsi sull'artefatto stesso.
Per Facebook, Zoom e altri sembra che gli scandali sulla fuga di dati siano solo una forma di pubblicità gratuita.
La sicurezza e la sicurezza dei dati sono requisiti non funzionali di cui tenere conto in ogni storia, non un mucchio di storie di cui ci si prende cura una volta per sempre.
nvoigt
2020-04-29 12:50:18 UTC
view on stackexchange narkive permalink

ma poiché la sicurezza non è stata coinvolta abbastanza presto nella fase di raccolta dei requisiti / progettazione della storia prima dello sviluppo, questo requisito non è stato chiaramente catturato nella storia dell'utente.

Quel pensiero è una enorme bandiera rossa. Sono uno sviluppatore e la sicurezza di base è implicita quando consegno un prodotto. Non dovrebbe aver bisogno di essere in una user story. Se compro un'auto, non scelgo marca, modello e raggio esplosivo e se non dico nulla di quest'ultima il produttore può scegliere quello che gli piace di più. La mia macchina non deve esplodere, punto. Questo è implicito quando dico che voglio comprare un'auto.

Se non disponi di linee guida di sicurezza di base alle quali tutti i tuoi sviluppatori aderiscono senza doverle pronunciare ogni volta, ne hai bisogno. Ieri. Ma ancora una volta ... una sicurezza difettosa è un prodotto difettoso, proprio come gli arresti anomali casuali o la lentezza inaccettabile. Gli sviluppatori dovrebbero saperlo. Non è un ripensamento, è il loro lavoro. Uno sviluppatore che non conosce la sicurezza di base non dovrebbe sviluppare software, dovrebbe imparare a sviluppare software.

Quello che dovresti fare è prima parlare con lo sviluppatore nel corridoio. Dì loro cosa hai trovato, chiedi loro di cambiarlo. Chiedete loro come vorrebbero che questo requisito venisse acquisito in futuro. Chiedi loro se hanno bisogno di aiuto per discutere con chi è responsabile delle tempistiche perché questo deve essere risolto prima. Gli sviluppatori probabilmente conoscono i dettagli e sanno quanto tempo ci vorrà. Sanno se questo è effettivamente un problema critico o forse solo un errore di configurazione nel tuo ambiente QA. Quando sai cosa è necessario fare, invia un ticket con tutto ciò che hai concordato e informa la direzione del progetto. Questo dovrebbe aiutare lo sviluppatore e te stesso a evitare inutili giochi sussurrati cinesi in cui tutti nel progetto parlano del ticket, tranne le due persone che potrebbero effettivamente risolvere il problema.

Se gli sviluppatori non si conformano, segnala un bug critico nel tuo sistema, proprio come faresti se notassi qualcosa di molto sbagliato che non è stato specificato nei requisiti. Sono sicuro che ci sono pulsanti "Annulla" e "Indietro" e nessuno ha specificato che dovrebbero effettivamente tornare indietro o annullare invece di mandare in crash l'applicazione. Quindi non è che non si possa avere un bug senza i requisiti specificati.

Sono per lo più d'accordo, tranne che per le "chiacchiere in corridoio".Consiglierei di segnalare il bug critico _now_, per assicurarmi che tutte le parti coinvolte (inclusi Project Manager, Team Leads, ecc ...) siano consapevoli che un ritardo potrebbe essere in arrivo.
Non si ottiene la sicurezza semplicemente facendo in modo che gli sviluppatori seguano le "linee guida di sicurezza di base": non è un modo affidabile per risolvere i problemi di un'architettura non sicura per progettazione.Sebbene si possa normalmente iniziare a sviluppare storie di utenti senza essere rigorosi sulla sicurezza, i risultati devono essere riesaminati per problemi di sicurezza a un certo punto prima che vengano congelati.Il design della storia non è neutrale in termini di sicurezza e l'implicazione che qualsiasi storia possa essere implementata in modo sicuro è falsa.
@MatthieuM.Non sono sicuro di quanto siano lunghi i tuoi corridoi, ma stavo pensando più da 30 minuti a forse un'ora se lo sviluppatore è in riunione per dargli un piccolo avvertimento e forse ottenere migliori informazioni su ciò che deve cambiare prima che il ticket sia scritto.Odio quando qualcuno solleva tutto l'inferno con gli ottoni che corrono alla mia scrivania con domande strane e mezzo comprese, quando il discorso tecnico da persona a persona avrebbe potuto risolverlo o almeno fare una descrizione migliore del problema in meno tempo del necessariosbarazzarsi di tutti i *-manager per poter lavorare.Non penso che siano "30 minuti" critici.
@sdenham Sembri sottintendere che lo "sviluppo del software" sia solo codifica e l'architettura è un'altra forza esterna avvenuta prima di questo.Il design fa parte dello sviluppo del software, quindi ovviamente le linee guida dovrebbero aiutare anche con il design.Ovviamente la storia "Come utente voglio accedere senza autenticazione per risparmiare tempo" non sarà mai sicura.Ma non credo che questo sia ciò di cui stiamo parlando qui.
@nvoigt: Capisco ... non è affatto così che ho capito la tua risposta.Ho pensato che la tua risposta ("Dì loro quello che hai trovato, chiedi loro di cambiarlo") riguardasse aggirare il processo.Sono d'accordo che chiedere più _dettagli_ allo sviluppatore con la segnalazione di un bug sembra utile, ma è una cosa completamente diversa da quello che hai scritto nella tua risposta.
@MatthieuM.Ho pensato di più a migliorare l'input del processo.Chissà forse non è un bug, ma una richiesta di funzionalità.Forse in realtà * è * sicuro, semplicemente non conoscevano i dettagli (ho lavorato in un'azienda in cui l'hardware eseguiva l'https e tutto il software funzionava dietro quell'hardware come se fosse solo http. Se guardavi solo il software era stranoe sembrava insicuro.) Quindi, prima che un ticket entri nel sistema su cui innumerevoli persone tecnicamente all'oscuro discutono e si incontrano, appianare prima i dettagli e scrivere un ticket migliore tra le due persone che sanno di cosa stanno parlando.
@nvoigt: Sono pienamente d'accordo con l'approccio prima i dettagli, ma come detto non è quello che la tua risposta mi trasmette in questo momento.Il penultimo paragrafo, in particolare.
@MatthieuM.Ho modificato alcuni punti dei miei commenti per renderlo più chiaro.
@nvoigt: Ora davvero molto più chiaro!
Al contrario, sto sostenendo l'affermazione che la sicurezza * non * è solo una questione di codifica e architettura, e anche i problemi incorporati nelle storie degli utenti, come quando e come si autenticano e il loro accesso, hanno implicazioni sulla sicurezza.L'impressione che ho avuto dai tuoi primi due paragrafi è che tali problemi debbano essere risolti dagli sviluppatori applicando "linee guida di sicurezza di base", ma in questi casi la user story deve essere modificata.Come dici tu, questo potrebbe non essere il problema qui, ma tuttavia, mi sembra che le tue dichiarazioni di apertura possano essere fraintese in questo modo.
@nvoigt - Concordo con la tua affermazione che la sicurezza è un criterio di accettazione di base e implicito, ma ho visto alcuni ma non tutti gli sviluppatori della mia azienda perdere di vista questo, come nell'accettare solo requisiti espliciti che sono effettivamente scritti.Tuttavia, stiamo cercando di spostarci a sinistra per affrontare questo punto
Gregory Currie
2020-04-29 16:40:29 UTC
view on stackexchange narkive permalink

Voglio generalizzare un po 'qui e allontanarmi dalla considerazione specifica della sicurezza.

Quando le aziende lavorano, non lo fanno nel vuoto. L'azienda utilizza la cultura dei propri dipendenti. Utilizza lezioni di prodotti e clienti precedenti. Utilizza le migliori pratiche dei settori in cui opera.

In quanto tale, direi che ci sono storie di utenti implicite che sono legate all'etica di un'azienda. Tali storie utente implicite esistono (e dovrebbero esistere) nella mente di ogni sviluppatore.

È salutare per uno sviluppatore dire: "Sto soddisfacendo questo caso d'uso ... ma non lo facciamo di solito faccio le cose in questo modo. È meglio che verifichi con il PM che questo è ciò che si intende. " Questo è simile alla situazione in cui due casi d'uso sono in conflitto.

Seguire pratiche di sviluppo irreggimentate presuppone che le persone non commettano errori. Le persone commettono errori, come dimenticare di includere requisiti importanti. Vale la pena notare che seguire pratiche di sviluppo irreggimentate può anche aiutare a proteggersi dagli errori. Ma non ti muovi da una scogliera perché è quello che dice la mappa di fare.

Posso pensare a diversi requisiti impliciti che spesso esistono, di solito senza essere esplicitamente specificati. Spesso il prodotto deve:

  • Rispettare i requisiti legali
  • Rispettare accordi / contratti di licenza
  • Non essere terribilmente inefficace
  • Non screditare l'azienda
  • Non comportarsi in modo da mettere in pericolo la vita

Potrebbero esserci situazioni in cui alcune delle precedenti sono deliberatamente violate, ma ciò deve accadere per decisione deliberata, non dimenticata user story.

Per quanto riguarda ciò che dovresti fare. File un ticket.

davnicwil
2020-04-29 19:09:39 UTC
view on stackexchange narkive permalink

questo requisito non è stato chiaramente colto nella User story.

Potrebbero essere trapelati dati sensibili dei clienti.

La parola chiave nella User story è utente .

I punti espliciti scritti nella storia, tipicamente nuove funzionalità, sono semplicemente un sottoinsieme di ciò che è richiesto per la spedizione. È anche implicitamente richiesto per mantenere l ' intero stato corrente delle cose che l'utente desidera. Questo ovviamente include il non far trapelare i propri dati sensibili.

Nessuna user story può essere spedita se introduce qualcosa di attivamente dannoso per l'utente, punto. Non importa quale altra nuova funzionalità abiliti .


Detto questo, consigli pragmatici su cosa fare qui:

  1. Vai direttamente al team di sviluppo, scopri chi sta lavorando alla storia e racconta loro la vulnerabilità - l'obiettivo è accertare se capiscono chiaramente che la storia non può essere spedita finché non viene affrontata. In tal caso, lavoro fatto.

—— OR ——

  1. Se che non funziona, forse a causa di una disfunzione all'interno del team di sviluppo e / o dell'implementazione da parte dell'organizzazione del suo processo agile, quindi funziona con la disfunzione piuttosto che contro di essa.

    Ogni Il processo agile ha i suoi "portelli di fuga", essenzialmente per sovvertire il processo per cose che deve essere assolutamente fatto adesso . In alcuni è qualcuno con un determinato titolo di lavoro che ti dà un colpetto sulla spalla, altri è un bug ticket P0, ecc. Scopri cosa c'è nella tua organizzazione e fallo. Se non hai l'autorità, non hai altra scelta che intensificare.


Pensa all'utente! La tua organizzazione ti ringrazierò (eventualmente!)

Sì, aggira tutti i manager (incluso il project manager), così come tutti i processi e le migliori pratiche, e sei sulla buona strada per una promozione :) La migliore ingegneria si fa con il passaparola, giusto?La documentazione è per i perdenti.
usr1234567
2020-04-29 18:59:58 UTC
view on stackexchange narkive permalink

Non esiste una soluzione generale.

A breve termine

  • Parla con il project manager, il team di sviluppo o lo scrum master. Dovresti affrontare le tue preoccupazioni e chiedere loro di risolverle prima del rilascio. Se non funziona, dovresti coinvolgere il tuo capo, forse anche il suo capo. Dipende dalla tua relazione.
  • Potresti aprire un bug. Se la gravità è sufficientemente elevata, potrebbe non essere consentito inviare la versione del software. Ma questo potrebbe far arrabbiare gli sviluppatori.

Più avanti lungo la strada:

  • Dovresti scrivere / richiedere storie relative alla sicurezza.
  • Chiedere al progetto di modificare la definizione di done. Molti test di sicurezza possono essere l'integrazione in pipeline di test automatizzati / CI / CD. Una storia è finita solo quando tutti i test, inclusi i test di sicurezza, sono stati superati.
Che ne dici di parlare con il Product Owner?
WoJ
2020-04-29 22:30:27 UTC
view on stackexchange narkive permalink

Il tuo ruolo è avvisare in caso di problemi di sicurezza o potenziali problemi di sicurezza. Possono essere scoperti durante la progettazione (errori di architettura, ad esempio) o durante lo sviluppo (SDLC errato o inesistente), o versioni successive . Ovviamente ci sono momenti migliori e peggiori per scoprire una vulnerabilità, ma è sempre meglio scoprirla in primo luogo (prima che qualcuno la scopra per te).

Dato che il tuo ruolo è di allertare, dovresti rivolgersi alle persone che prendono decisioni su questo prodotto. In definitiva questo potrebbe essere il CEO.

Avendo tutte le informazioni fornite (tipo di problema, impatto probabile o possibile, idealmente una probabilità (ma questo non esiste nel mondo reale)), loro prenderà una decisione , sulla base di tale analisi del rischio.

Possono accettarla, correggerla o avere un'assicurazione. Questo non è un tuo problema, però. Il tuo ruolo è di allertare (e fornire sostanza per prendere una decisione).

A seconda dell'azienda, potresti avere il potere di prendere tale decisione (= un rifiuto per il rilascio), ma dal tuo descrizione sembra che non sia così.

Alan Dev
2020-05-01 14:16:40 UTC
view on stackexchange narkive permalink

Il documento delle storie degli utenti Requisiti funzionali : questo è ciò che il sistema deve fare, di quali funzioni ha bisogno, cosa gli utenti finali si aspettano di essere in grado di ottenere ecc.

C'è un'altra serie di requisiti su cose di base a cui gli utenti non pensano fino a quando qualcosa non va storto, questi sono chiamati Requisiti non funzionali e coprono cose come il sistema è sicuro, è stabile, è eseguito il backup, è facile da mantenere ecc.

I requisiti non funzionali non richiedono storie degli utenti, ma devono essere soddisfatti prima che un sistema possa essere pubblicato. È meglio se questi vengono documentati e compresi in anticipo, ma hai ancora il diritto di segnalare che questo sistema non ha superato un controllo critico e deve essere corretto prima di passare alla vita.

Philip Oakley
2020-04-30 17:47:10 UTC
view on stackexchange narkive permalink

Ha un valore in dollari ($$$$) per non conformità, errore, rilascio o sfruttamento dei dati. Se è "importante", darà un valore commerciale adeguato.

Sebbene le segnalazioni di bug e i requisiti siano una parte normale del processo di sviluppo, nel grande schema delle cose non sono "così importanti". Cioè, molti requisiti vengono ignorati, alcuni hanno uno slittamento della missione. I bug sono classificati per mancanza. Avrai visto tutto questo accadere a problemi di altre persone.

Se questo è un esercizio da spuntare, non ci riuscirai. Se identifichi il valore e il rischio aziendale, puoi lavorare con la gestione del rischio e il processo di pianificazione delle emergenze per ottenere vantaggi reali.

Blueriver
2020-05-01 04:21:17 UTC
view on stackexchange narkive permalink

Se hai il controllo sui requisiti, aggiungi semplicemente queste correzioni di bug ai requisiti. Tieni presente che potrebbero sorgere problemi di priorità.

Se hai autorità sugli sviluppatori, ordina loro di lavorare su questo (in termini professionali, ovviamente).

Se hai il controllo durante il rilascio, aggiungi semplicemente questo requisito al rilascio.

Se non hai controllo sui requisiti, nessuna autorità sugli sviluppatori e non puoi bloccare il rilascio, allora non puoi arrivare agli sviluppatori qual è il loro lavoro. Non è solo il tuo posto. Quello che devi fare è fare in modo che risolva questo problema, parlando con le persone che possono effettivamente dire agli sviluppatori qual è il loro lavoro.

Devi bloccare questo rilascio, quindi parla con il responsabile del rilascio o chiunque altro controlla i rilasci. È necessario aggiungerlo ai requisiti, quindi parla con il proprietario del prodotto, il responsabile del prodotto, il responsabile del progetto o chiunque definisca i requisiti. Devi rendere questo lavoro una priorità, quindi parla con il product owner, il product manager, il project manager o chiunque dia la priorità ai requisiti.

Inoltre, suggerisco di comunicare agli sviluppatori in modo diretto o indiretto ma molto chiaro il modo in cui sei (o qualcuno del tuo team è) disponibile per qualsiasi domanda sulla sicurezza, sia per questi problemi che per problemi futuri. Tieni presente che gli sviluppatori sicuramente non conosceranno la sicurezza quanto il leader della sicurezza te stesso e potrebbero anche non sapere cosa sia OWASP. La formazione sulla sicurezza potrebbe essere un'ottima idea per il futuro.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...