Domanda

È corretto dire che la piattaforma .Net è più sicuro perché le guardie CLR contro gli attacchi buffer overflow?

Supponendo c'era un browser Web in esecuzione in un sistema operativo gestito (come Cosmos , SharpOS o Singularity ), sarebbe tecnicamente possibile per un utente malintenzionato di iniettare codice iL in app?

Avrei dovuto preoccuparsi di attacchi che non sono possibili in applicazioni non gestite?

È stato utile?

Soluzione

Per la maggior parte, siete sulla strada giusta. Le applicazioni con un sistema di tipo sicuro (non solo .NET o Java) non consentono l'applicazione di violare tali vincoli.

buffer overflow e molti altri exploit remoto di codice si verificano perché i vincoli in quelle lingue e runtime forniscono alcun controllo e non può garantire che il programma non farà qualcosa di simile a eseguire codice arbitrario in memoria. sistemi sicuri verificare il codice di essere liberi da tali effetti.

(Come nota a margine, C # può ancora compiere azioni non sicure e erigersi di eseguire codice arbitrario. E 'solo un po' ingombrante e difficile da utilizzare in un'applicazione reale.)

I buchi di sicurezza che si vedono in un browser gestito sarebbe se lasciate codice arbitrario essere caricato, utilizzando il CLR come un ambiente sicuro. Mentre il CLR codice generato (vale a dire, la JIT'd della vostra applicazione) sarà al sicuro, il caricatore e verificatore stessi sono di solito scritti in un linguaggio più bassa. C'è stato un pochi (credo 2 per NET?) Buchi di sicurezza in cui un assieme maliziosamente formato potrebbe costringere il CLR reale per eseguire codice arbitrario. Tuttavia, queste sono questioni relativamente rari, e la superficie è molto meno di quanto sarebbe altrimenti.

Quindi, sì, completamente sicuro, il browser stesso sarebbe riuscito non cadere preda di questi exploit specifici. Ma questo significa anche che avrebbe dovuto avere il vostro plugin scritto ed eseguito in modo simile (Flash?). Infine, ci sono altri buchi di sicurezza che possono essere mirati, ma di solito saranno meno gravi di quanto si potrebbe trovare con un'applicazione non gestita. Cross-site scripting, per esempio, rimarrebbe un problema. Ma almeno non si avrebbe "la visualizzazione di un documento può eseguire codice arbitrario" problemi tipo.

Altri suggerimenti

Il CLR (e la JVM) guardia contro un sacco di attacchi comuni, ma che non elimina tutte le minacce. Il CLR o qualsiasi libreria possono contenere bug che permettono exploit. Errori dell'applicazione possono permettere exploit pure. SQL injection è un esempio di un attacco che è possibile a causa della mancanza di convalida dell'input nella domanda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top