Domanda:
È accettabile che un pentestatore professionista qualificato elimini o modifichi i dati sensibili in produzione involontariamente durante un pentest?
kinunt
2013-07-18 00:08:20 UTC
view on stackexchange narkive permalink

Oggi ho vissuto una situazione in cui una persona responsabile della sicurezza di una società ha richiesto a una società pentesting di ritirare una clausola nel contratto che dice che:

"durante il pentest esiste il possibilità di eliminare o modificare involontariamente dati sensibili nell'ambiente di produzione a causa dell'esecuzione di alcuni strumenti, exploit, tecniche, ecc. "

Il cliente dichiara che non accetterà quella clausola e che crede che nessuna azienda accetterebbe quella clausola. Pensa che durante un pentest le informazioni potrebbero essere lette ma mai cancellate o modificate.

Sappiamo che l'esecuzione di alcuni strumenti come i web crawler o gli spider può cancellare i dati se l'applicazione web è programmata molto male, quindi il esiste sempre la possibilità se si utilizzeranno questi tipi di strumenti.

So che queste sono le condizioni del client e dovrebbero essere accettate, ma:

Può un pentest esperto e professionale assicura sempre che nessun dato verrà cancellato o modificato in produzione durante un pentest?

Si può davvero fare un pentest se il team pentest ha la limitazione che i dati non può essere creato né modificato?

La società pentesting dovrebbe sempre includere la clausola di esclusione di responsabilità per ogni evenienza?

Questo mi ricorda una storia di wtf in cui Google ha indicizzato una pagina che aveva un collegamento che reimpostava l'intero database quando veniva cliccato. Google è andato alla cieca e ha indicizzato la pagina, ha seguito il collegamento e ha cancellato il database. Non c'è modo di garantire che un pentester potrebbe non fare la stessa cosa per sbaglio.
Chissà su quale tipo di bomba logica potresti incappare. È CYA contro trappole dannose e orribili configurazioni errate che erano un disastro nascosto in attesa di estrarre dati la prima volta che qualcuno ha attivato la stringa del domino. Fondamentalmente una clausola "Mi dispiace non hai backup funzionanti, ma questo problema è precedente al mio respiro sul tuo sistema".
@MarkHenderson Mi piacerebbe vedere un sito con i dettagli di quel caso ... :)
@woliveirajr - http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx e http://thedailywtf.com/Articles/WellIntentioned-Destruction.aspx - la mia memoria non era del tutto perfetta, ma abbastanza vicina
Sicuramente un cliente che insiste affinché questa clausola venga rimossa non è irragionevole, ma piuttosto ** non capisce perché questa clausola è presente **. Pensano che * tu * farai qualcosa per rompere il loro sistema durante i test. Spiegagli solo che se il * loro * codice contiene qualche orribile bug che cancella il database quando fai clic su "salva", ovviamente non puoi essere ritenuto responsabile per questo. Come spesso accade, questo suona come un errore di comunicazione umana, non una questione tecnica.
Se il client ha una procedura di backup / ripristino funzionante (testata) (con un meccanismo di controllo dell'integrità dei file), non ha nulla di cui preoccuparsi, giusto?
@tom-oconnor Ancora di più, meglio perdere i dati in modo controllato e preparato con i backup recenti che in un momento casuale con qualche hacker che si fa strada. Se la perdita di dati durante il pentesting è anche un problema, è probabilmente l'ultima delle preoccupazioni dell'azienda. E in questa luce mi associo all'osservazione che è anche più un problema di comunicazione che un problema tecnico.
Ecco un altro modo per vederlo. La * supposizione * di un penetration test è che se l'attaccante ha successo, il sistema è * guasto *; se fosse * corretto * l'attacco non avrebbe avuto successo. Se l'attacco ha successo, il sistema è * guasto *; se il sistema è guasto, * il suo comportamento quando viene fornito un input non è necessariamente quello previsto dalla sua specifica *, e se il suo comportamento non è previsto dalla sua specifica allora * chissà cosa succederà *?
È professionale che la tua azienda non abbia clonato i sistemi che intendi sottoporre a test di penna, se non solo per il fatto che potrebbero influenzare il tuo sistema, ma anche dove metti in scena i tuoi cambiamenti di sviluppo?
indirizza il tuo cliente a questa pagina
@RyanMcDonough Questo è davvero pratico solo con piccoli obiettivi. Per un test generale sull'infrastruttura di XYZ Co quando sono abbastanza grandi da avere numerosi rack di server non solo sarebbe proibitivamente costoso da clonare; ma la probabilità di non avere tutto configurato in modo identico nella copia aumenterà riducendo la validità dei risultati.
@DanNeely Anche se cloni il sistema, ciò che hai clonato non potrebbe raggiungere attraverso la rete una casella sul sistema originale tramite un indirizzo di rete hardcoded che hai clonato insieme al resto? Sì, potresti isolare il sistema, ma a quel punto hai cambiato l'ambiente in modo così radicale che i tuoi test non testano la cosa che stai testando.
Otto risposte:
#1
+146
Rory McCune
2013-07-18 00:20:53 UTC
view on stackexchange narkive permalink

Non c'è modo che un pentester possa garantire al 100% che i dati non verranno modificati o eliminati, nello stesso modo in cui non può garantire che la disponibilità del sistema non sarà influenzata (ho rovesciato i sistemi con una porta scansione o un singolo carattere). come dici tu, un web crawler può eliminare i dati da un sistema se è stato impostato male.

Direi che ciò che dovrebbe essere detto è qualcosa del tipo "sarà prestata ogni attenzione per garantire che il test non influisce negativamente sui sistemi in esame e non verrà effettuato alcun tentativo deliberato di modificare o eliminare i dati di produzione o di influire negativamente sulla disponibilità dei sistemi nell'ambito. Tuttavia, con tutti i test di sicurezza esiste il rischio che i sistemi ne siano interessati e il cliente dovrebbe garantire che siano presenti backup di tutti i dati e sistemi prima dell'inizio della revisione "

Ho rovesciato un server inserendo un carattere Unicode in un campo nell'app Web del cliente. Non puoi mai essere sicuro al 100% che le tue azioni non influiranno sul tempo di attività: i vettori di errori imprevisti sono ovunque.
Ho avuto membri di team che testano gli account forniti dal cliente mentre gli account di "prova" effettuano accidentalmente pagamenti internazionali :-) Succede. Mantieni la clausola!
Non so molto sulla sicurezza, ma ho incontrato molte basi di codice incasinate e approvo questo messaggio.
Questo e il commento di @MGOwen, provano a spiegarne il ragionamento al cliente. Se ancora non lo accettano, probabilmente è meglio non accettare il lavoro. Non che io sappia molto di pentesting, ma potresti provare a fare un po 'di SQL injection per ottenere l'accesso al sistema e questo mig rovina il caos con i dati, se non abbastanza attento.
In qualità di penetration tester, essenzialmente e alla fine passerai molto tempo a frugare in pezzi del sistema con la domanda "cosa succede quando inserisco * questi * dati inaspettati * qui *?", E a meno che tu ' è consentito analizzare il codice stesso allo stesso tempo non c'è modo di * garantire assolutamente * che la risposta * non * risulterà essere "il sistema si caga da solo, cancella il suo database di backend e corrompe i backup prima di fuggire oltre il confine a Tijuana con il budget aziendale ".
#2
+93
Tom Leek
2013-07-18 00:46:26 UTC
view on stackexchange narkive permalink

Un pentester che afferma che mai altererà i dati di produzione o è un schifoso bugiardo , o pensa di essere molto più competente di quanto non sia in realtà, o fortemente non intende fare assolutamente nulla (questo è l'unico modo sicuro per non rompere mai nulla). In ogni caso, non vuoi lavorare con quel ragazzo.

Un potenziale cliente che crede che i pentesteri esperti non danneggeranno mai i sistemi testati e che si rifiuta di lavorare con i pentesteri a meno che non promettano esattamente questo, è un cliente che 1. vive nel mondo dei sogni dell'unicorno fatato e 2. è quasi garantito che farà affari solo con bugiardi sporchi. Ad un certo punto è disilluso, probabilmente in un modo piuttosto spettacolare.

È un imperativo morale e anche una auto-protezione di base per pentesters per includere clausole su possibili rotture nei loro contratti. Il rischio di danno collaterale è reale, anche se il pentester è molto bravo in quello che fa (perché il danno non deriva da quanto è buono il pentester ma da quanto è stato progettato il sistema testato e implementato ). Un pentester potrebbe essere citato in giudizio per non aver avvertito il cliente.

Un cliente che rifiuta un contratto con una tale clausola ha un altro nome: "guai". Di solito è meglio ignorare del tutto questi clienti.

+1 cliente ha un odore strano, allontanati. Questo è un linguaggio standard al 100% incluso in tutti gli impegni pentest.
Mi sembra che l'abbia letto come "Possiamo fare quello che ci piace al tuo sistema, e rivendicare 'incidente' quando falliamo", piuttosto che "Non vogliamo essere citati in giudizio a causa di una situazione imprevedibile". Ma sì, EVITARE.
@deworde Qualsiasi chiarimento sulla condizione come "adotteremo tutte le misure ragionevoli per evitare di rompere il sistema" può essere successivamente citato in giudizio perché i loro passaggi non sono sufficientemente ragionevoli. A seconda dell'impatto del danno che fanno, potrebbe facilmente superare quello che altrimenti sarebbe il loro conto e richiedere un aumento significativo della loro commissione (ad esempio: "Perché il test della penna costa $ 1 milione?" "Perché è quello che ci aspettiamo da te potrebbe farci causa, c'è uno sconto di 900k se accetti di non fare causa ").
@Matt Sono d'accordo. È un fallimento nella comprensione, non nel trasmettere. Se questa è la lingua standard, il contratto * non può * dire nient'altro senza un rischio enorme con zero rialzi. Nel peggiore dei casi, finiresti per inviare il messaggio che sei disposto a negoziare la tua colpevolezza.
#3
+36
user2213
2013-07-18 00:34:22 UTC
view on stackexchange narkive permalink

Avvertenza: non sono un pentester professionista. E lavoro nel software di backup.

Un pentester esperto e professionale può sempre assicurare che nessun dato verrà cancellato o modificato in produzione durante un pentest?

Direi di no, non ci sono garanzie assolute che qualcosa non verrà cancellato accidentalmente quando si tenta di rompere le cose. Tuttavia, detto questo, un pentester dovrebbe generalmente provare a sfruttare i sistemi in un modo che non implichi l'eliminazione dei dati. Ad esempio, mentre l'istruzione SQL preferita da tutti è:

  select * from users where userid = 'dave'; ELIMINA TUTTE LE TABELLE;  

Un approccio più responsabile sarebbe semplicemente elencare tutti i dati:

  seleziona * dagli utenti dove userid = '2' OR 1 = 1;  

In generale, immagino che la maggior parte dei pen tester abbiano sviluppato una serie di exploit della varietà non distruttiva come quest'ultima.

L'iniezione di Javascript nelle sue varie forme può utilizzare un semplice codice proof of concept come alert ("exploited you"); piuttosto che un vero e proprio codice exploit.

Si può davvero fare un pentest se il team pentest ha la limitazione che i dati non possono essere creati né modificati?

Direi di no. Come mostreresti una prova di concetto di XSS archiviato senza essere in grado di memorizzare il tuo XSS nel database? Questo invariabilmente creerà nuovi dati.

Ci sono numerosi esempi in cui un exploit richiede la scrittura di dati, anche se solo temporaneamente.

La società pentesting dovrebbe sempre includere la clausola di esclusione di responsabilità per ogni evenienza?

Ancora una volta, sto estendendo la mia conoscenza personale qui, ma dirò sì.

Questo però torna al punto centrale di assumere una società di test penne in primo luogo, comunque. Lo scopo di un pen test è identificare i rischi che potrebbero richiedere una valutazione e risolverli prima che i cattivi li trovino.

Spero anche che qualsiasi buon pentestro chieda, e qualsiasi buona azienda abbia pensato, al ripristino di emergenza su una certa scala. Sicuramente dovresti avere un backup di qualche forma sui tuoi sistemi in modo da poterlo ripristinare se necessario. Hai bisogno di questo non solo nel caso in cui il pentest ti distrugga i dati, ma nel caso in cui sei veramente violato dai cattivi, nel qual caso potresti volere un backup non contaminato su cui eseguire il rollback.

Tutto ciò a cui penso qui è che anche `alert (" ti ha sfruttato ");` potrebbe far cadere qualcosa se c'è qualche script "utile" che usa il sistema di avviso e agisce su stringhe che iniziano con es. '' e'`
@medivh probabilmente, sì. Spereresti che la compagnia in questione fornisca ai pentesters della documentazione sul loro sistema in modo che i ragazzi sappiano come eseguire qualcosa che non lo rompe ...
@medivh Non deve nemmeno essere così complicato.La maggior parte degli strumenti di test dell'interfaccia utente automatizzati fallirà se non sono in grado di gestire avvisi imprevisti.
#4
+15
Relaxing In Cyprus
2013-07-18 12:36:19 UTC
view on stackexchange narkive permalink

Eseguo test di penetrazione abbastanza regolarmente sui miei siti.

La prima volta che ne ho eseguito uno, ho bloccato il sito e ho inondato il loro server di posta con spam.

Allora ho tweek alcuni moduli, per sbarazzarsi dello spam e ha permesso di identificare e correggere tutti gli altri buchi noti, senza fermare il server.

Sono stato francamente stupito dalla tortuosità degli sfruttatori , Ho dovuto tappare buchi che non avevo considerato.

Ma il fatto era che, prima di eseguire i test, pensavo che i miei siti fossero sicuri. Avevo seguito le migliori pratiche, per quanto possibile, per la progettazione del sito web, ma c'erano ancora problemi.

Ora, con il senno di poi, apprezzo che i test possano influire sul mio sito di produzione.

Quindi pianifico in anticipo.

Mi assicuro che venga prima eseguito il backup di tutto.

Se il sito è davvero, davvero critico, creerò un clone completo, quindi prima prova quel clone.

Ho imparato per esperienza che se crei il clone, crealo su un server diverso. Altrimenti, quando il clone si ferma, il server continuerà a influenzare il tuo ambiente di produzione.

Ma continuo a eseguire i miei test. Come pensi che gli hacker abbiano accesso ai siti? Presumibilmente eseguono essi stessi test come questi, in modo non autorizzato. Quindi, finché il tuo sito non sarà protetto, sarà sempre vulnerabile. È molto meglio fare prima i test, con le precauzioni (backup ecc.) In atto, piuttosto che dover raccogliere i pezzi quando meno te lo aspetti.

Quindi, sì, è accettabile, ma è anche prevedibile e dovrebbe essere gestito di conseguenza.

puoi mettere il clone di prova in una VM con throttling se l'hardware è stretto. in questo modo quando si ferma macina solo con il 25% della CPU e prod ha ancora 75 con cui giocare
non dovresti mai (penna) testare su un server di produzione (virtualizzato o meno) l'applicazione VM può avere bug (es: perdita di memoria nello spazio del kernel)
Se crei il clone su un server separato utilizzando il backup che hai eseguito, stai anche mettendo alla prova le tue capacità di Disaster Recovery.
#5
+2
jmoreno
2013-07-21 07:30:00 UTC
view on stackexchange narkive permalink

La risposta al tuo titolo è "Sì" e il cliente deve saperlo!

Questa esclusione di responsabilità non è un caso di CYA, è invece un'informazione vitale di cui il cliente ha bisogno per prepararsi il pentest. Non sono un tester di penna, ma IMO questo non dovrebbe essere sepolto nell'ultima pagina in caratteri piccoli, ma dovrebbe essere a pagina 1 del contratto, davanti e al centro e in un grande carattere in grassetto. L'azienda cliente deve prepararsi affinché le cose vadano male: è necessario eseguire i backup, creare e mettere in atto piani di ripristino, ecc. Lasciare che il cliente creda che un pen test sia privo di rischi è irresponsabile. Per definizione stai tentando di innescare un comportamento scorretto, senza alcun controllo su quanto si estenda o si estenda quel comportamento rotto.

Le risposte alle 3 domande nel corpo del tuo post sono: (1) no, tu non può fornire alcuna garanzia sul codice di altri (2) una forma limitata di test della penna potrebbe essere eseguita senza modificare o creare intenzionalmente dati (se si esclude qualsiasi registrazione che l'app potrebbe eseguire) ma i risultati non sarebbero completi e infine ( 3) dovresti SEMPRE includere questo disclaimer, tanto per i clienti che per i tuoi.

Il tester sta fondamentalmente cercando un difetto da sfruttare e non può in alcun modo garantire che non troverà un difetto che fa danno. Considera una tipica declinazione di responsabilità relativa al software per qualcosa che NON ha lo scopo di incontrare o creare difetti, quindi considera che probabilmente non hai scritto il codice che stai testando ...

Quindi, la risposta dovrebbe essere "Sì", no? Perché è accettabile (e previsto) modificare i dati di produzione durante un pentest.
Sarebbe insolito, ma non irresponsabile, avere un contratto in cui non si devono modificare intenzionalmente i dati di produzione in modo non standard. È tecnicamente impossibile garantire che una base di codice sconosciuta non arrechi danni in caso di utilizzo NORMALE, per non parlare del tipo di utilizzo insolito che è coinvolto nel test della penna. Vedo che dovrei espandere un po 'la mia risposta.
#6
+1
Francesco Manzoni
2013-07-19 14:40:35 UTC
view on stackexchange narkive permalink

Probabilmente puoi assicurarlo solo a determinate condizioni. Ovviamente Pentest è un compromesso tra molti fattori, alcuni sono direttamente antagonisti alla disponibilità del sistema e uno di questi è la profondità della tua analisi. Qualcuno potrebbe sostenere che un pentest senza sfruttamento non sia un pentest.

In passato ho dovuto reprimere alcuni sistemi SCADA che sono abbastanza famosi per la loro fragilità e posso assicurarti che è possibile sintonizzarne la maggior parte degli strumenti per essere abbastanza delicati. Ad esempio, disabilitare l'impronta digitale NMAP e aumentare il ritardo tra i pacchetti ha aiutato molto.

Tuttavia, per rispondere alla tua domanda, personalmente, MAI accetterò di mettere una clausola per garantirlo a un mio cliente. Gli darò la mia parola, ma dal punto di vista degli affari non puoi essere responsabile se la loro domanda si interrompe da sola durante il tuo pentesto.

+1 per l'idea che un pentest senza sfruttamento non sia un pentest
la direzione vede solo il Penetration Test come "costoso" e la Vulnerability Assessment come "economico". Se ti pagano abbastanza è ** SEMPRE ** un pentest.
#7
+1
user29367
2013-08-11 01:16:33 UTC
view on stackexchange narkive permalink

"Un pentestista esperto e professionale può sempre assicurare che nessun dato verrà cancellato o modificato in produzione durante un pentest?"

No.

"Si può davvero fare un pentest se il team pentest ha il limite che i dati non possono essere creati né modificati?"

Non credo. .

"La società pentesting dovrebbe sempre includere la clausola di esclusione di responsabilità per ogni evenienza?"

Un accordo interno avrà un aspetto molto diverso da quello di una terza parte accordo. Non conosco nessuna compagnia di pen test che non abbia limitazioni di assicurazione di responsabilità, tra le altre protezioni ...

#8
-3
atdre
2015-04-19 12:20:23 UTC
view on stackexchange narkive permalink

I test di penetrazione dovrebbero seguire una metodologia in cui i test che possono causare danni vengono eseguiti solo in scenari di non produzione, come un ambiente di staging o di laboratorio.

Il vero problema non è l'eliminazione o la modifica dei dati perché i tester possono lasciare questi casi di test a sistemi non di produzione. Il vero problema è lasciare nuovi dati, come log degli errori o file errati superflui che rivelano informazioni riservate, o persino l'esistenza del pentest stesso, compreso il materiale di dati lato client del penetration tester.

Un altro problema prevalente nei test di penetrazione è la rivelazione di altri dati della clientela, email di lavoro o segnalibri del browser durante demo o screencast.

I test di penetrazione vengono eseguiti molte volte in produzione e non puoi garantire che un test che sembra essere inoffensivo cancelli qualcosa a causa del comportamento di un web, ad esempio.
Io posso; forse non puoi
Penso che tu non abbia letto il resto delle risposte né la risposta valida. Come si può prevedere che un pulsante che dice "Cerca" cancella le informazioni nel database se un programmatore ha programmato quella funzionalità e non si ha accesso al codice sorgente?
La differenza tra alcune persone su questo forum che seguono la lettera della legge e me, che segue lo spirito della legge - è che posso reinterpretare il significato delle domande e "mettere in discussione la domanda". Va bene discutere. Va bene avere prospettive diverse. Questo è il mondo in cui voglio vivere. Tutti i miei test di penna sono una conoscenza completa. Ottengo sempre prima il codice sorgente.
I programmatori sono infinitamente creativi nel trovare modi per rendere fragili i loro programmi. Ad esempio, un software con cui lavoro (un sistema di database) può essere bloccato da un semplice portscan semiaperto, con conseguente rischio di perdita di dati.
Non credo davvero che nessuna delle persone che ha commentato in risposta al mio post o mi ha votato in modo negativo capisca affatto i problemi qui. Non hanno l'esperienza. I test devono avvenire. I test fanno progredire le cose. Testare alcune cose in prod e alcune cose in dev o test è la strada da percorrere. Capire cosa può sbagliare in entrambi è lo zen del test di sicurezza e allo stesso modo del test della penna.


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