Perché l'arresto anomalo dell'applicazione è considerato non sicuro?

46

Se un'applicazione si arresta in modo anomalo, il programma si interrompe e non c'è niente che chiunque può fare al riguardo, se non avviare nuovamente il programma.

Il crash è un cattivo comportamento in generale e dovrebbe essere evitato, ma perché sono visti come vulnerabilità della sicurezza?

    
posta Manoj R 02.04.2013 - 10:48
fonte

7 risposte

56
  1. Si è bloccato in quanto alcuni input non sono stati elaborati correttamente. Un utente malintenzionato può tentare di trovare il percorso del codice che conduce alla procedura guasta e tenta di eseguire codice arbitrario attraverso potenziali vulnerabilità.

  2. Gli arresti anomali possono fornire a un utente malintenzionato preziose informazioni sul sistema e i relativi dettagli interni.

  3. Gli arresti anomali possono creare vulnerabilità temporanee o lasciare file non protetti (ad esempio dump della memoria) che potrebbero essere sfruttati.

  4. (Grazie e una punta di cappello vai a Ladadadada ) L'applicazione che va in crash deve essere riavviata, il che ovviamente richiede tempo (anche con watchdog e schemi di failover simmetrici). Se un utente malintenzionato replica le condizioni che causano l'arresto, il servizio subirà un'interruzione prolungata ( Negazione del servizio ) che significa perdite finanziarie, di reputazione e di altro tipo.

risposta data 02.04.2013 - 10:59
fonte
14

Poiché la risposta precedente ha coperto gran parte dello scenario in cui l'aggressore può ottenere benefici diretti analizzando i crash dell'applicazione. Raccomanderò di leggere su "Analizza i crash per individuare le vulnerabilità di sicurezza nelle tue app" . L'analisi dei crash per le vulnerabilità della sicurezza potrebbe richiedere competenze di programmazione di basso livello. Come mostrato nella figura 1, ogni exploit potrebbe non portare alla vulnerabilità della sicurezza e definire un percorso investigativo per analizzare i crash dell'applicazione.

risposta data 03.04.2013 - 04:25
fonte
11

Per generalizzare la risposta di Deer Hunter:

  • Se un'applicazione si blocca, significa che ciò che sta accadendo non è previsto e non compreso.
  • Se non è previsto e non compreso, non hai modo di sapere se è sicuro.
  • Devi quindi presumere che non sia sicuro.

Si noti che semplicemente catturare e scartare un'eccezione inaspettata è anche insicuro e non deve essere fatto. Terminare il processo è meglio che continuare in uno stato incoerente inatteso.

Questo è essenzialmente il distillato dell'Appendice di Feynman:

(...) erosion and blow-by are not what the design expected. They are warnings that something is wrong. The equipment is not operating as expected, and therefore there is a danger that it can operate with even wider deviations in this unexpected and not thoroughly understood way. The fact that this danger did not lead to a catastrophe before is no guarantee that it will not the next time, unless it is completely understood.

Puoi trovare il documento completo qui:

Questa è una lettura consigliata per tutti gli sviluppatori di software, in particolare per coloro che hanno l'abitudine di intercettare eccezioni che non comprendono appieno.

    
risposta data 02.04.2013 - 17:22
fonte
3

Un arresto anomalo dell'applicazione è il risultato di un comportamento imprevisto e non gestito. Ciò significa che c'è un bug nell'applicazione che si è bloccato e numerosi bug portano a vulnerabilità.

Uno dei tipi più pericolosi di crash è l'arresto anomalo a causa del danneggiamento della memoria (errore di segmentazione). Questo tipo di bug può essere spesso sfruttato per far sì che l'applicazione vulnerabile esegua una parte di codice arbitraria (maliziosa).

Inoltre un modo per bloccare un software può essere usato in attacchi denial of service.

    
risposta data 02.04.2013 - 23:29
fonte
2

Stai unendo due eventi diversi: arresto e arresto anomalo

  • Se un'applicazione si arresta in modo pulito, non può più causare alcun danno
  • Se un'applicazione si blocca, può mostrare tutti i tipi di comportamento non definito e imprevisto come mostrato in altre risposte. 'Fermare' è solo un risultato. Potrebbe anche iniziare a utilizzare il 100% della CPU indefinitamente, portando a tutti i tipi di altri problemi.
risposta data 02.04.2013 - 20:03
fonte
1

Alcuni tipi di arresti anomali sono noti come "Violazioni di accesso": questi sono i Crash / Anomaly che "violano" la regola definita dai programmatori che hanno scritto sistema / software / sistema operativo o definiti da programmatori che hanno scritto compilatori che rende eseguibili.

Supponiamo che l'attaccante (Neo) trovi un crash in uno dei software (Matrix) che possa usare quell'arresto per "violare" la regola (le regole sono definite per Matrix) e può usare quell'arresto per prendere il controllo del sistema ( Matrix) e ora vuole fare attività maligne (Disattiva la matrice) per quello che conosce una chiamata API, ma quella chiamata API è controllata / sorvegliata da un altro programma / antivirus (Agent Smith), ma da quando ha ottenuto il pieno controllo su sistema (matrice) che può chiudere Antivirus (Agent Smith) e ora può chiudere il sistema (Matrix)

Poiché ciò inciderà sulla riservatezza, l'integrità e la disponibilità del sistema, questi arresti anomali vengono definiti come problemi di sicurezza.

    
risposta data 22.09.2013 - 17:33
fonte
1

Molte applicazioni si bloccano - tutte, ma molte - implicano che la macchina esegua qualcosa che non dovrebbe avere. La macchina salta in qualcosa che pensa si presume essere codice, ma in realtà è data da zero o dati casuali (o almeno dati che non sono stati preparati come codice). La macchina prova a guardare questi dati come codice, ma non ha senso come codice, quindi la macchina non sa cosa fare. Quando ciò accade, l'applicazione si arresta in modo anomalo.

Ma il problema dei bug è che se sai come attivarli, puoi attivarli deliberatamente. A volte, a seconda di come funziona il bug, puoi persino controllare in quale dato salta la macchina. Questa possibilità è ciò che rende nervosi gli addetti alla sicurezza: se riesci a far saltare la macchina in dati che non hanno senso, e puoi controllare quali sono i dati, allora potresti far saltare la macchina in qualcosa che ha ha senso. Una volta configurato, puoi fare in modo che la macchina esegua più o meno quello che vuoi .

Non tutti gli arresti anomali delle applicazioni funzionano in questo modo. @ La risposta di AliAhmad mostra le basi su come dire cosa può e cosa no. Ma poiché le conseguenze di un crash non sicuro possono essere così gravi, è necessario controllare ogni crash per vedere se è "sicuro" o meno.

    
risposta data 23.09.2013 - 19:11
fonte