Perché le vulnerabilità e la mancanza di sicurezza sono possibili nei computer?

22

Ho sentito parlare di vulnerabilità del computer, virus, malware, ecc.

  • Perché queste minacce sono possibili?
  • Perché il computer non fa semplicemente le cose che dovrebbe?
  • Perché alcune persone scrivono malware, invece di programmi con uno scopo costruttivo oltre a danneggiare e violare la legge?
  • L'insicurezza del computer esiste a causa della natura dei computer?
posta user3533 06.02.2013 - 21:58
fonte

6 risposte

34

Il computer non può indovinare cosa "dovrebbe" fare. Invece, esattamente che cosa è detto a fare - questo è ciò che programmazione riguarda. Come corollario, i computer non hanno alcuna iniziativa, quindi se gli viene chiesto di fare qualcosa di stupido o privo di senso allora lo fanno e basta .

Un bug è ciò che accade quando la sequenza di istruzioni scritte dal programmatore fa fare al computer qualcosa di stupido quando viene presentato con un insieme specifico di dati - cioè, stupido riguardo a ciò che il programmatore voleva che il computer facesse nella sua alta immagine astratta del sistema. Ma il computer non sa cosa vuole il programmatore e, anche se lo sapesse, non ha il potere di "capirlo". Il computer segue semplicemente le istruzioni alla lettera.

Un problema di sicurezza è un tipo di bug che può essere sfruttato a vantaggio di una malevola terza parte, che attiverà la situazione in cui si verifica il bug per trarre beneficio dal comportamento insensato del computer.

Quindi, per riassumere, i problemi di sicurezza si verificano nei computer perché esistono bug e perché esiste il male .

L'esistenza di bug è dovuta al fatto che la creazione di software privo di bug (o, per altro, di hardware privo di bug) sembra essere estremamente difficile. Questa è una area di ricerca attiva e non è ancora pronta a fornire nulla di lavorabile. Come esempio aneddotico, considera che il programma utilizzato durante l'atterraggio Apollo 11 Moon ha avuto due bug in modo che Neil Armstrong dovevo andare in modalità overflow american-manliness e usare il controllo manuale. Se non riuscissero a creare un programma privo di bug per il computer principale di un programma da 25 miliardi di dollari, come ti aspetti che i programmatori medi facciano meglio?

Anche in materia di verifica formale, medita su questa citazione ben nota di Donald Knuth : "Attenti ai bug il codice precedente, l'ho solo dimostrato corretto, non provato. "

L'esistenza del male è anche un problema aperto che è stato ricercato per almeno 4000 anni e non sembra essere risolto in qualsiasi momento presto.

    
risposta data 06.02.2013 - 22:29
fonte
12

Does computer insecurity exiss because of the nature of computers?

In realtà sì, sì sì. Tutti e il loro cane ti diranno che è perché le persone sono stupide che è praticamente vero nel senso che siamo tutti imperfetti, ma non è tutta la storia.

In sostanza, un ragazzo che è essenzialmente la versione ungherese di Feynman ha inventato l'architettura moderna dei computer, chiamata Von Neumann Architecture . L'essenza di base di questo è che i programmi e i dati sono tutti memorizzati nello stesso posto in memoria e si può manipolare l'altro.

Quindi, usare i soliti umani sono metafora del computer, immagina di avere un amico che può solo leggere le istruzioni da un pezzo di carta e fare esattamente ciò che dicono, scartando le complessità degli umani che hanno interpretazioni diverse e tutte quelle cose sociali che stanno rovinando la mia metafora. In questo caso, il tuo amico è in una biblioteca. Gli dai un pezzo di carta. Segue ciecamente le tue istruzioni e quando ha finito (che è molto veloce, tra l'altro) ha ordinato la tua collezione di album in ordine alfabetico E ha avuto il tempo di dirti che ha bisogno di un aggiornamento.

Ora, Mr Malicious è un brutto lavoro. Prende un pezzo di carta, scrive "compra una pistola, rapina una banca e timbrica gli album dei beat nella collezione che hai appena ordinato" e lo infila in un album di Chesney Hawkes. Dà poi alcune istruzioni al tuo amico che sorpresa sorpresa lo coinvolge nell'aprire l'album di Chesney Hawkes e nella lettura di quelle istruzioni. Oh, un pezzo di carta con le istruzioni! Saltando su e giù sugli album dei Beatles, si precipita a comprare una pistola e rapinare una banca.

Vedi - i programmi sono dati. Sono memorizzati nello stesso posto. Questa è una caratteristica immensamente utile, una caratteristica esplicita del design dei computer moderni. Ci consente di avere compilatori che acquisiscono dati e producono codice, hanno linguaggi dinamici e ogni tipo di altre cose meravigliose. Ma porta anche l'insicurezza di essere in grado di eseguire accidentalmente cose che dovrebbero essere dati come codice, e quindi rendere il computer proverbialmente auto-guida da una scogliera.

C'è un'alternativa ed è chiamata Harvard Architecture . In questo scenario, codice e dati sono cose separate e non è possibile inserire codice dannoso laddove i dati dovrebbero essere, perché i processori di Harvard Architecture guarderebbero e andranno "sì giusto!". Ciò non significa che tali PC non possano bloccarsi, al contrario, le istruzioni logiche possono ancora contenere bug - è solo che non saremo in grado di sfruttarli così facilmente.

HA ha anche alcune limitazioni severe. Potresti scrivere compilatori per uno, ma non saresti in grado di testare ciò che hai scritto senza prima trasferire il programma dall'archivio dati allo storage del codice. Le lingue dinamiche ottengono molto, molto più difficile. I programmi che si aggiornano diventano difficili. E così via.

Quindi, sì, è nella natura degli esseri umani che non sempre tutto va bene, ed è nella natura dell'architettura del computer che questo fatto può essere sfruttato per fare cose cattive.

Questo non significa che non ci siano soluzioni alternative: infatti W ^ X e il bit NX sono architetture harvard come concetti per il backend di von neumann x86.

Note:

  • Tecnicamente, una CPU x86 è un'architettura Harvard modificata. Il backend (bit da cui si programma da) è Von Neumann, il nucleo è Harvard.
  • La metafora è leggermente cliché e non perfetta. Lo so. Siamo spiacenti.
risposta data 06.02.2013 - 23:01
fonte
7

L'insicurezza nei computer esiste quasi per la stessa ragione per cui i computer sono così bravi in ciò che fanno: seguono le istruzioni che ricevono, con precisione. La radice del problema, come @JeffFerland lo ha messo succintamente , è che quelle istruzioni sono scritte dagli umani. Questo è un problema per due ragioni: alcuni umani hanno intenzioni malevole e altri, individui benintenzionati, sono semplicemente fallibili.

La prima metà del problema è ovvia. Le persone cattive scrivono software che fa cose cattive. Quindi, fanno girare il software sulla macchina di altre persone attraverso l'ingegneria sociale o altri mezzi. Lo fanno perché c'è profitto in esso, o possono avere una certa agenda politica o personale.

La seconda metà è dove ci imbattiamo in problemi come Flash e Java - programmi altrimenti destinati a buoni propositi, che inavvertitamente facilitano l'esecuzione di codice dannoso. Questo accade perché i programmatori, in quanto umani, sono imperfetti. Di conseguenza, a volte il codice che scrivono è imperfetto in modo che i computer (che seguiranno perfettamente le istruzioni del codice) eseguendo i loro programmi possano essere sfruttati da attori malintenzionati per eseguire il loro software non valido.

Pensa ai computer come se fossero Amelia Bedilia . Quando la signora Rogers dice ad Amelia Bedelia di "misurare due tazze di riso", naturalmente significa che Amelia ha preparato due tazze di riso da usare per la signora Rogers quando tornerà a casa. Tuttavia, seguendo solo le istruzioni esattamente come sono state date, Amelia estrae due tazze di riso, prende delle misure e mette via il riso. A volte, un programmatore farà qualcosa di simile - scriverà le istruzioni con un certo intento ma, quando il computer le esegue esattamente come scritto o è autorizzato a incorporare l'input dell'utente in quelle istruzioni, il computer potrebbe finire fare qualcosa che il programmatore o l'utente non ha inteso o previsto.

    
risposta data 06.02.2013 - 22:38
fonte
6

Questa domanda è davvero la stessa con qualsiasi strumento. Un computer è uno strumento, può solo fare ciò che una persona (o l'utente o uno sviluppatore di software) gli dice di fare. Gli strumenti possono essere utilizzati nel bene e nel male e talvolta possono essere utilizzati involontariamente. Più uno strumento o un sistema è complesso, maggiore è la probabilità di avere usi non previsti e i computer sono uno dei sistemi più complessi che abbiamo oggi nel nostro mondo.

In definitiva, gran parte del problema deriva dal fatto che la sicurezza e l'usabilità sono costantemente in guerra e che le buone pratiche di sicurezza sono un problema di bilanciamento. Se avessi una scatola completamente impenetrabile e priva di chiave, nessuno potrebbe entrare nella scatola, ma sarebbe anche completamente inutile dato che nessuno potrebbe ottenere il contenuto della scatola (anche la persona che dovrebbe averla). Allora Faccio una chiave e la do al bravo ragazzo, ma qualcuno potrebbe rubare la chiave. Ora, avendo fatto in modo che il buon utente potesse usare la scatola, ha fatto in modo che una persona cattiva potesse fare cose cattive e entrare nella scatola.

I computer possono fare solo ciò che viene detto, in generale, per motivi di usabilità, i produttori di computer assumono che ciò che un utente richiede è ciò che un utente vuole fare. Ciò significa che se l'utente esegue una parte di codice errata, il computer lascia che accadano cose brutte, perché non sa che è una cosa negativa, ma sa solo che l'utente ha chiesto di eseguirlo.

Allo stesso modo, dal momento che i programmatori non sono perfetti, a volte ci sono modi per far sì che i loro programmi (che l'utente vuole eseguire) facciano qualcosa che l'utente o lo sviluppatore volevano che accadessero. Questo è il modo in cui molti virus si diffondono senza interazione diretta con l'utente. L'utente può utilizzare il proprio browser web con qualcosa come Java on, l'utente dice al computer di visitare un sito Web, ma ciò che non si aspettava era che su quel sito fosse un pezzo di codice Java che utilizza un bug in Java per fare qualcosa che l'utente e lo sviluppatore di Java non volevano che il codice fosse in grado di fare. Poiché il computer sa solo che l'utente desidera che la pagina venga caricata e che il codice venga eseguito, fa proprio questo.

Ancora una volta, non ha modo di sapere che è stata una brutta cosa che l'utente ha chiesto. Il software anti-virus e anti-malware cerca di identificare queste cose brutte prima che accadano, ma è un gioco imperfetto perché è un sistema molto complesso.

Per quanto riguarda il motivo per cui le persone cercano di sfruttarli, ci sono molte ragioni. Originariamente, è iniziato come una cosa per "divertimento" e una sfida, ma ora con Internet, ci sono molti soldi da guadagnare, o coltivando computer compromessi come "robot" che possono essere usati per fare altri attacchi o invio di e-mail SPAM. C'è anche un sacco di soldi da fare nel furto e nella vendita di informazioni personali e finanziarie. Non è davvero diverso da qualsiasi altra impresa criminale ora.

    
risposta data 06.02.2013 - 22:19
fonte
3

Un computer è come uno strumento, può essere usato per sempre e può essere usato come cattivo. Il suo design originale non è stato progettato per essere usato male, ma ha il potenziale. Ad esempio un coltello è stato progettato per tagliare cose come carne o legno. Il problema è che le persone si trasformano in un'arma. Alcuni per ideali, alcuni per profitto, alcuni perché per il gusto di farlo.

    
risposta data 06.02.2013 - 22:54
fonte
3
  • Why are these threats possible?

Perché i computer sono poco più degli strumenti. Il termine "computer" è molto descrittivo nonostante tutta l'astrazione che tentiamo di sovrapporvi; è un dispositivo che "calcola", semplice e semplice. Se, in un dato nanosecondo, sta calcolando il colore di un pixel in un'interfaccia utente, l'indirizzo dei dati nella sua memoria, ecc, non è più o meno di un calcolatore binario incredibilmente veloce collegato a un sacco di componenti periferici che fornire ingressi e uscite dalla programmazione di base che la CPU sta attualmente sfogliando.

Dato questo, la domanda di "perché" ha una risposta semplice; gli strumenti possono essere usati per il bene o il male. I martelli possono pestare chiodi o teschi. Le seghe possono tagliare legno o carne. E i computer possono sequenziare il DNA per trovare la cura per il cancro o rubare i dati del tuo conto bancario.

  • Why doesn't the computer just do the things it is supposed to?

È fa . Fa esattamente quello che viene detto dal programma che sta attualmente eseguendo. Il problema è che il programma che sta eseguendo il computer non è necessariamente qualcosa che gli hai detto di eseguire esplicitamente con il tocco di una chiave o con il clic di un mouse. Per molto tempo, abbiamo utilizzato più livelli di software (e hardware) per consentire la modularità; qualsiasi computer può avere qualsiasi hardware collegato, ed eseguire qualsiasi programma per lavorare con esso (almeno questa è la teoria). Più di recente abbiamo inventato i livelli per consentire a un computer di manipolare più programmi contemporaneamente. Questi livelli di astrazione come OS, macchine virtuali, demoni (servizi), ecc., Che nascondono ciò che il computer è veramente facendo su un dato orologio, possono essere manipolati da un utente malintenzionato per eseguire software senza il tuo conoscenza consapevole.

  • Why do some people write malware, instead of programs with a constructive purpose beyond doing damage and violating the law?

Perché,

...some men aren't looking for anything logical, like money. They can't be bought, bullied, reasoned, or negotiated with. Some men just want to watch the world burn. - Alfred Pennyworth, The Dark Knight

Per la maggior parte dei "cappelli neri", il caos che provocano è divertente, è divertente, allo stesso modo in cui tu o io ci divertiremmo con un videogioco in un ambiente completamente in sandbox. Loro, tuttavia, stanno facendo cose nel mondo reale. Lo stesso livello di separazione digitale tra te e le conseguenze delle tue azioni, con il brivido aggiunto di sapere che è reale.

  • Does computer insecurity exist because of the nature of computers?

Fino ad un certo punto, sì. I computer sono potenti, ma sono estremamente stupidi. Richiedono agli umani di pensare a loro, di progettarli in un modo che è difficile sovvertire, programmarli in un modo che è difficile sovvertire e usarli in un modo che è difficile da sovvertire. La difficoltà intrinseca di questo è simile alla difficoltà intrinseca (forse l'impossibilità) di progettare un "sistema completamente infallibile":

A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. - Douglas Adams

In entrambi i casi, stai semplicemente cercando di superare in astuzia preventivamente qualcuno disposto a dedicare molto tempo e fatica a trovare un modo per abusare di ciò che stai progettando una volta che il prodotto finito ha lasciato le tue mani. Devi effettivamente trovare le stesse idee che l'altra persona avrebbe, e incorporare i meccanismi per sconfiggere quella linea di pensiero. Più il sistema è complesso internamente, più queste idee diventano possibili e meno è probabile che tu abbia pensato a tutto. Quanto più si mette in atto per prevenire l'uso improprio, tanto più complessità si aggiunge. È un circolo vizioso.

    
risposta data 07.02.2013 - 00:59
fonte

Leggi altre domande sui tag