Domanda:
Perché sento tante insicurezze di Java? Le altre lingue sono più sicure?
gsingh2011
2014-05-09 22:39:24 UTC
view on stackexchange narkive permalink

Mi piace molto il linguaggio di programmazione Java, ma sento continuamente parlare di quanto sia insicuro. Googling "java insecure" o "java vulnerabilities" fa apparire più articoli che parlano del motivo per cui dovresti disinstallare o disabilitare Java per proteggere il tuo computer. Java spesso rilascia un numero enorme di patch di sicurezza alla volta, eppure ci sono ancora tonnellate di vulnerabilità da correggere.

Capisco che ci saranno sempre bug nel software, ma la quantità di vulnerabilità che Java ha non mi sembra normale (o me lo sto immaginando?). Ciò che è ancora più confuso è che se c'è un'unica decisione architettonica che sta creando queste vulnerabilità, perché non cambiare quel design? Ci sono un sacco di altri linguaggi di programmazione che non hanno questo problema, quindi deve esserci un modo migliore per fare tutto ciò che Java sta facendo di sbagliato. Allora perché Java è ancora così insicuro?

Trovo davvero ingiusto che alcune persone affermino che Java sarebbe "insicuro" perché il suo concetto di sandboxing ha alcuni difetti mentre la maggior parte delle altre tecnologie non ha nemmeno il sandboxing e consente ai programmi di fare praticamente tutto ciò che vogliono sulla macchina su cui vengono eseguiti. La critica è giustificata solo nel caso d'uso molto ristretto di applet eseguite in un browser web, dove le alternative come Flash hanno un track record di sicurezza altrettanto negativo.
La tua domanda è simile alla domanda "Perché le auto hanno ancora problemi al motore?". (E per quelli che provengono dall'angolo di "C (++) non li ha!", Aggiungi "La mia bicicletta non ne ha mai!")
Perché è stato vittima di bullismo da bambino.
Java ha avuto relativamente * poche * vulnerabilità di sicurezza per un linguaggio di programmazione completo che è in grado di funzionare in un browser (la maggior parte degli altri linguaggi compatibili con browser non sono, per progettazione, in grado di fare certe cose). - Le vulnerabilità di cui hai sentito parlare di recente sono applicazioni completamente dannose (leggi Applet) che trovano un modo per uscire dalla sandbox ed eseguire codice arbitrario sul tuo sistema. Potrebbe esserci una discussione sul fatto che le applet siano una parte di java che dovrebbe essere messa a tacere, tuttavia molte tecnologie si basano ancora su di esse (console IMPI, siti Web di banche, ecc.).
@Philipp: Non penso sia affatto ingiusto. Se una lingua viene promossa come sandbox, ma la sua sandbox ha una cronologia che va da decine a centinaia di vulnerabilità critiche ogni anno, è perfettamente giusto condannarla come insicura. La sicurezza non è una cosa assoluta, ma una questione di essere all'altezza del contratto pubblicato. Forse non è giusto confrontare Java e C ++, ma è certamente giusto confrontare Java e Lua. Se non sbaglio, quest'ultimo non ha nemmeno superato le cifre singole per le vulnerabilità di fuga dalla sandbox.
@R .. Il sandboxing si applica solo a un contesto molto ristretto, e questo è applet java nei browser web. Quando vuoi dire che questi sono insicuri, sono pienamente d'accordo. Ma come puoi capire da questa domanda, molte persone estendono questa critica a Java in generale, che copre casi d'uso in cui i problemi di sandboxing delle applet non hanno alcuna importanza.
@R .. Anche il confronto tra Java e Lua non è giusto, perché Java è un linguaggio generico con [un'enorme libreria standard che include tutto tranne il lavello della cucina] (http://docs.oracle.com/javase/8 /docs/api/allclasses-noframe.html) mentre Lua ha [una libreria standard molto piccola] (http://www.lua.org/manual/5.2/) ed è pensata per essere incorporata in un'applicazione host che aggiunge dominio - collegamenti di script specifici a lua che potrebbero o non potrebbero essere sicuri.
La mia opinione è che sia perfettamente giusto, perché un'enorme libreria standard * implementata al di fuori della sandbox * essenzialmente preclude la possibilità di offrire un ambiente sandbox sicuro. Questa è una delle cose che Java ha sbagliato orribilmente che Lua ha avuto ragione.
Sono d'accordo che "Java the language" riceva molta pubblicità negativa dal fatto che "Java the sandbox" sia così rotto. Se questo è "giusto" o no è un giudizio, ma è una conseguenza della decisione di marketing di accoppiare strettamente i due. Sulla maggior parte dei sistemi, la semplice installazione di Java (per qualsiasi scopo) installa anche componenti del browser che espongono il sistema a vulnerabilità remote critiche se viene utilizzato il browser, quindi è giusto dire che semplicemente avendo Java installato, a meno che tu non abbia fatto di tutto per bloccarne l'utilizzo nel browser, è un problema di sicurezza.
@R .. Una società per cui ho lavorato usava LotusNotes semplicemente perché poche persone lo usavano e quindi le falle di sicurezza che certamente aveva (come tutto) sono rimaste inosservate. Temo che Java sia dalla parte opposta. Qualsiasi difetto che ha ** verrà ** scoperto, non significa che altre cose meno utilizzate siano più sicure, ci sono solo meno persone che cercano di decifrarle
@R .. "è certamente giusto confrontare Java e Lua. Se non sbaglio, quest'ultimo non ha nemmeno superato le cifre singole per le vulnerabilità sandbox-escape." In base a questo argomento, dovremmo davvero tutti utilizzare PostScript, poiché ha ancora meno vulnerabilità di questo tipo. (PostScript _does_ in effetti offre sandboxing e, se configurato correttamente, può consentire di eseguire codice ostile impunemente, FYI) (Se non capisci esattamente quello che sto dicendo, è che Java ha più vulnerabilità _discovered_ perché Java è usato _far più spesso_ di Lua.)
In realtà PostScript ha storicamente alcune vulnerabilità, specialmente se si considera l'ambiente in cui è destinato ad essere utilizzato. E qualsiasi linguaggio completo di Turing è una vulnerabilità DoS nel contesto di ciò per cui è pensato PostScript (documenti), specialmente quando sei eseguendolo su microcontrollori da 1MHz all'interno delle stampanti.
Per quanto riguarda Java vs Lua, non è questione di quanto vengono utilizzati. È una questione di design. Lua ha un numero esiguo di punti di potenziale guasto (uno di questi era idiota: consentire al codice Lua di inviare il bytecode direttamente alla macchina virtuale). Java ha un numero astronomico.
Ovviamente per gli hacker (cappello bianco), investigare nei vuln Java è più interessante che negli altri linguaggi, questo è come Windows per gli altri sistemi operativi.
Forse puoi chiarire qual è il contesto della tua dichiarazione. Sembra che tu stia affermando che ritieni che il codice Java potrebbe dover essere riparato e che i manutentori del software non stanno facendo un lavoro abbastanza buono? Ogni applicazione avrà il proprio tipo di codice applicabile da implementare, quindi si dovrebbe evitare di fare affidamento su una qualsiasi serie di pratiche di codifica. Scommetto che le applicazioni Java lato client passeranno per Flash e presto moriranno.
Hah, parliamo di ingiusto: stiamo sviluppando un [browser in Java] (https://github.com/UprootLabs/gngr) e le persone lo scambiano con applet, o lo associano a Java che scambiano con applet, o associano la sandbox del gestore della sicurezza con la sandbox dell'applet più specifica ... e così via.
Sette risposte:
Steffen Ullrich
2014-05-09 23:24:59 UTC
view on stackexchange narkive permalink

Se utilizzi Java come la maggior parte degli altri linguaggi di programmazione, ad es. per scrivere applicazioni autonome, non è meno sicuro di altri linguaggi e più sicuro di C o C ++ a causa dell'assenza di buffer overflow ecc.

Ma Java viene regolarmente utilizzato come plugin all'interno del browser web, ad es simile a Flash. Poiché in questo caso l'utente esegue codice non attendibile senza averlo installato esplicitamente, l'idea è di far funzionare il codice all'interno di una sandbox limitata, dove non dovrebbe essere in grado di agire in qualche modo contro il sistema o l'utente (es. Leggere file locali e inviare sul sito web, scansiona la rete locale, ecc.). Ed è qui che Java ha fallito negli ultimi anni, ad es. nuovi bug compaiono a volte su base giornaliera che hanno permesso di fuggire dalla sandbox.

Inoltre, a volte bug nell'interprete del codice di byte o nelle librerie native portano a overflow del buffer e potrebbero compromettere il sistema, ma a questo proposito Flash è generalmente considerato peggiore.

E per quanto riguarda gli altri linguaggi che sono migliori: questi di solito non possono nemmeno essere eseguiti come codice non affidabile all'interno di una sandbox (l'eccezione è JavaScript e forse Flash), quindi sarebbero anche peggio perché non esiste un modo intrinseco per limitare la loro interazione con il sistema.

Quindi le applicazioni Java per server e desktop hanno meno vulnerabilità rispetto alle applet Java?
Sì, il principale problema di sicurezza è solo la sandbox.
Nessuno stackoverflow? Ne ho accidentalmente attivato uno proprio oggi con ricorsione infinita. Volevi dire buffer overflow?
Sì, intendo buffer overflow. Grazie per la correzione. E puoi ancora ottenerli ma non così onnipresente come in C, C ++.
Java sul server consente a Oracle di vendere licenze di database, ecc., Tuttavia le applet Java non hanno senso per il business di Oracle, quindi non aspettarti che Oracle faccia altro che uno sforzo manuale per eliminare le vulnerabilità ad esse correlate.
@IanRingrose Non sono d'accordo. Oracle non è vincolata dagli azionisti a eseguire più di una manutenzione minima, ma fino ad ora sembra che abbiano preso piuttosto sul serio le vulnerabilità. Come indicato, le vulnerabilità si riflettono sull'intero sistema e le applicazioni Webapp e le applet vengono solitamente sottoposte a backup da applicazioni server in Java. In generale, non credo che ci sia alcuna indicazione che Oracle non prenda sul serio questi fallimenti. Si noti inoltre che gli stessi sviluppatori hanno spesso un forte senso di responsabilità, indipendentemente dall'azienda stessa. Le dichiarazioni in bianco e nero sono inutili qui.
@Lekensteyn Le specifiche del linguaggio Java richiedono che le implementazioni rilevino overflow dello stack e generino un'eccezione. In C / C ++ è solo un comportamento indefinito con tutto ciò che comporta. Quindi in una certa misura "overflow dello stack" funziona ancora anche lì.
@SteffenUllrich da elaborare: è perché la sandbox sta tentando di contenere / limitare le capacità di un linguaggio di programmazione a tutti gli effetti. A differenza di alcuni degli altri linguaggi abilitati per browser che sono stati progettati inizialmente senza determinate funzionalità (ad esempio, non importa se esci dalla sandbox perché non puoi ancora fare certe cose). Finché nel tuo browser è in esecuzione un linguaggio di programmazione completo, ci sarà la possibilità che faccia cose al tuo sistema locale. Le applet Java sono ancora oggi molto potenti (console IMPI, ecc.).
La tua equazione tra applet Java e JavaScript è falsa. JavaScript è una funzionalità intrinseca del browser e Java richiede un plug-in esplicito e installato separatamente. Un exploit JavaScript in un browser non è uguale all'altro, ma un exploit applet funziona * ovunque * perché il plugin è lo stesso * ovunque *. Inoltre, JavaScript non è progettato per fornire funzionalità del sistema operativo nella maggior parte dei browser e può essere sottoposto a sandbox in modi diversi (impedire l'esecuzione di codice nativo). È meglio equiparare Java e Flash.
*** Grande gemito *** riguardo a "es. Simile a JavaScript". Il solo fatto di metterli nella stessa frase è implorare confusione; non sono davvero niente di simile e JS non funziona davvero come un plugin. Ho appena letto tutti i commenti ora ... Cosa ha detto @DCKing.
@DCKing: Javascript in realtà non è così intrinseco al browser come potresti pensare; Gli interpreti Javascript come Rhino, SpiderMonkey e V8 possono effettivamente funzionare indipendentemente dal browser a cui sono normalmente collegati. Esiste una sorta di interfaccia plugin tra l'applicazione host (non necessariamente un browser) e tutti questi popolari motori Javascript.
@LieRyan Questo è discutere la semantica. Ogni browser principale utilizza un'implementazione JavaScript diversa e gli aggressori richiedono diverse vulnerabilità per ciascuno di essi. I plugin sono gli stessi ovunque. Questo è il punto.
meriton
2014-05-10 16:48:48 UTC
view on stackexchange narkive permalink

Le vulnerabilità di sicurezza segnalate non riguardano Java (il linguaggio di programmazione), che, in virtù della JVM che impone la sicurezza della memoria, è in realtà più robusto di linguaggi come C o C ++, dove il buffer overflow e le letture eccessive del buffer rimangono una minaccia e possono provocare pasticci come Heartbleed.

Invece, le vulnerabilità segnalate si trovano in Java Sandbox, che tenta di applicare un modello privilegiato che consente l'esecuzione sicura di codice non affidabile, ed è notoriamente utilizzato per consentire l'esecuzione automatica di applet Java in un browser. Quella sandbox è piena di buchi. Inoltre, Oracle rilascia le patch (gli "aggiornamenti delle patch critiche") solo 4 volte all'anno. Inutile dire che i fornitori di browser non sono contenti di questo. Firefox, ad esempio, richiede l'autorizzazione dell'utente per avviare un'applet Java a partire da Firefox 26.

Il motivo per cui i resoconti della stampa non fanno questa distinzione è che Oracle utilizza "Java" marchio sia per il linguaggio di programmazione, sia per il plug-in del browser che esegue applet. In effetti, se un utente normale incontra il marchio Java, probabilmente si riferisce a quest'ultimo.

È alquanto speculativo il motivo per cui esattamente Sandbox rimane vulnerabile. Se me lo chiedi, uno dei motivi è che la stessa API viene utilizzata sia con che senza Sandbox e la maggior parte del codice Java viene eseguita senza Sandbox (perché il codice è attendibile). Di conseguenza, è del tutto possibile che uno sviluppatore dimentichi quella oscura caratteristica quando cambia l'API Java o la sua implementazione, esponendo accidentalmente cose che dovrebbero essere protette (per illustrare quanto sia facile, guarda le lunghe Linee guida per la codifica sicura per Java SE). Un altro motivo correlato è l'enorme dimensione dell'API Java ( 5800 classi e quasi 50.000 metodi, per Java SE 6).

Secondo me questa è la risposta migliore, poiché tocca la complessità di proteggere un'API che cerca di fare tutto. Una versione completamente murata di Java per applet (senza IO) fornirebbe molto sollievo, ma l'attuale API è troppo strettamente accoppiata per questo.
L'unico problema che ho con questa risposta è che 1) Heartbleed * non * era il risultato di un attacco di buffer overflow. 2) Non si può nemmeno dire che una lingua accoppiata a una macchina virtuale sia "migliore" di un'altra lingua da sola, per ovvie ragioni. Oltre a questo, buona nota sui veri buchi che sono in quella sandbox, un linguaggio di programmazione non è più 'sicuro' o 'pericoloso' di un linguaggio umano, tutto si riduce a un compilatore o interprete, e * cosa più * importante: persona * utilizzando * la lingua.
1) Ok, secondo Wikipedia, Heartbleed era un buffer over-read piuttosto che un buffer overflow, poiché l'accesso oltre la lunghezza del buffer era un accesso in lettura piuttosto che in scrittura. Risolverà la terminologia. 2) Penso che sia un confronto valido, poiché la specifica Java ** Language ** [mandates] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls -15.10.4) che l'ambiente di runtime esegua questo controllo. In Java, la sicurezza della memoria è una caratteristica del linguaggio. In C o C ++, non lo è.
dimo414
2014-05-11 00:55:51 UTC
view on stackexchange narkive permalink

Ci sono un sacco di altri linguaggi di programmazione che non hanno questo problema, quindi deve esserci un modo migliore per fare tutto ciò che Java sta facendo di sbagliato.

È carino alto reclamo, dove hai avuto questa impressione? Ci sono "tonnellate di altri linguaggi di programmazione" che non sono stati sottoposti agli stessi ritmi di Java, o sono usati ovunque.

In linea di principio, il motivo per cui ci sono così tante patch di sicurezza è perché Java è stato progettato per essere sicuro, con una serie di funzioni incentrate sulla sicurezza che altri linguaggi non hanno.

Java Language Environment

1.2.2 Robusto e sicuro

La tecnologia Java è progettata per funzionare in ambienti distribuiti, il che significa che la sicurezza è di fondamentale importanza. Grazie alle funzionalità di sicurezza progettate nel linguaggio e nel sistema di runtime, la tecnologia Java consente di creare applicazioni che non possono essere invase dall'esterno. Nell'ambiente di rete, le applicazioni scritte nel linguaggio di programmazione Java sono protette da intrusioni da parte di codice non autorizzato che tenta di andare dietro le quinte e creare virus o invadere i file system.

Se non includi "sii sicuro" nelle specifiche del tuo linguaggio di programmazione, raramente dovrai rilasciare patch di sicurezza. Se, d'altra parte, questo è uno dei tuoi obiettivi dichiarati, ti verrà difficile non farlo .

Thomas Pornin
2014-05-16 20:43:43 UTC
view on stackexchange narkive permalink

Di per sé, Java ha grandi risorse per la sicurezza, vale a dire la sua resistenza intrinseca ai buffer overflow e agli errori di gestione della memoria:

  • Tutti gli accessi agli array vengono controllati per quanto riguarda la lunghezza dell'array allocata. I buffer overflow vengono quindi intercettati in modo affidabile e attivano un'eccezione, il che è meglio (questo trasforma le vulnerabilità dell'esecuzione di codice in modalità remota in mera negazione del servizio).

  • L'allocazione della memoria viene gestita tramite un garbage collector, che impedisce errori use-after-free e double-free. Inoltre, il GC consente una gestione più semplice delle stringhe di caratteri (le stringhe sono immutabili in Java), il che rimuove la maggior parte delle occasioni di bug di buffer overflow.

  • Viene applicata la tipizzazione rigorosa; il codice non può accedere ai byte di dati per quello che non sono. Ciò previene ancora le vulnerabilità (i bug in cui i tipi di dati vengono trasgrediti verranno segnalati alla compilazione o, nel peggiore dei casi, come ClassCastException) di runtime.

Questo rende Java molto più forte di molti linguaggi di programmazione (in particolare la coppia infernale C / C ++) quando si tratta di sicurezza.

Tuttavia, i progettisti di Java hanno cercato di sfruttare questa sicurezza avanzata per fare qualcosa di difficile, ad esempio applet. Il problema è la superficie di attacco : poiché l'applet è codice potenzialmente ostile, tutto ciò che fa deve essere controllato. Ma il codice ostile deve essere in grado di utilizzare le "classi Java standard" se deve fare qualcosa, quindi i "punti di controllo" devono essere applicati su ogni singola classe Java standard. La superficie di attacco è quindi costituita da centinaia di classi contenenti migliaia di metodi, e tutte devono imporre controlli adeguati.

I progettisti Java hanno peccato di ambizione: la difficoltà di implementare migliaia di gli assegni senza rovinarli erano molto più alti di quanto immaginavano. Tutti i "bug di Java" derivano da questo fatto.

Possiamo confrontare Java con Javascript qui; ad esempio, Java consente l'accesso ai file sui dischi, ma questo diritto non deve essere concesso agli applet, a meno che l'applet lo richieda e l'utente sia d'accordo (il che implica l'intera attività di firma dell'applet). Javascript, meno ambizioso, semplicemente non ha alcun metodo di accesso ai file: i controlli di accesso su una funzione non possono essere implementati in modo improprio se la funzione non esiste!

Per riassumere: Java va bene e sicuro. Le applet Java implicano un'enorme superficie di attacco la cui sicurezza è molto difficile da garantire. Per applicazioni e server autonomi, tuttavia, l'utilizzo di Java è una buona idea se si desidera la sicurezza (questo vale anche per C #).

Nitpick: è più simile a migliaia di classi e decine di migliaia di metodi. Oltre a questo: ottima risposta!
Kasun
2014-05-10 01:53:36 UTC
view on stackexchange narkive permalink

Oggigiorno, trovare più vulnerabilità potrebbe non significare quanto sia insicuro il software. Il problema è come reagisce il team di risposta alla sicurezza di ciascun fornitore di software e quanto velocemente vengono rilasciate le patch.

Basta controllare la velocità con cui vengono applicate le patch a Firefox e Chrome. Molte vulnerabilità vengono trovate anche su di loro e risolte.

Per quanto ricordo, Oracle ha un programma chiamato Critical Patch Updates (CPU) che fornisce molte patch trimestrali. Rilasciano anche patch senza CPU se è presente una vulnerabilità zero-day. Ma il problema è il tempo impiegato da Oracle per rilasciare una patch.

Sono d'accordo con la prima frase. Non * trovare * falle di sicurezza in altri software non significa che non ce ne siano - le persone stanno cercando (da vicino)?
John
2014-05-14 06:58:17 UTC
view on stackexchange narkive permalink

Paura sopravvalutata .. Java stesso va bene; i problemi si verificano con le applet Java della vecchia scuola in esecuzione nei browser Web, ma dubito che qualcuno crei effettivamente più applet: la maggior parte delle case di sviluppo ha utilizzato Flash o HTML4 / 5 per interfacce web front-end per almeno gli ultimi 10 anni.

Oggigiorno Java viene utilizzato principalmente per JEE back-end, client GUI front-end (JFX / AWT / SWING), app console e app mobili, quindi non ci sono problemi.

SSpoke
2014-05-11 08:07:39 UTC
view on stackexchange narkive permalink

La risposta è abbastanza ovvia. Puoi eliminare i file del tuo computer utilizzando JavaScript, HTML o Flash? No, non puoi.

Che dire di Java. Puoi eliminare tutti i tuoi file, cancellare completamente il tuo disco rigido utilizzando un'applet Java (ospitata su un sito web)? La risposta è sì, se accetti di eseguire l'applet. A differenza di qualsiasi altra lingua del browser web.

Java ha la capacità di fare cose come eseguire programmi sul tuo computer (eseguibili) e ha anche la capacità di scrivere, aggiornare o eliminare file sul tuo disco rigido.

Inoltre, Java gli applet non sono rilevabili dagli scanner antivirus: nella maggior parte dei casi, non saprai nemmeno che ha rovinato il tuo computer. Alcuni scanner potrebbero rilevare che qualcosa sta tentando di eliminare file in una directory limitata: uno che conosco è Kaspersky, ma la maggior parte delle persone ha questa funzione disattivata per impostazione predefinita.

Gli applet Java possono eseguire operazioni come aggiornare i file di Windows, come HAL.dll , che impedirà l'avvio del computer. Può fare qualsiasi cosa sul tuo computer quando accetti di eseguire l'applet.

In alcuni casi non importa nemmeno se un'applet Java è firmata o meno: continuerà a scaricare i file sul tuo computer.

Per non parlare di Java è molto popolare.

Ce n'è un altro che sta crescendo in popolarità, chiamato Unity Engine (simile a Flash): ha lo stesso problemi di sicurezza come Java e potrebbero fare qualsiasi cosa al tuo computer. L'unica differenza tra Unity Engine e Java è che Unity viene eseguito senza chiederti se desideri eseguirlo o meno. Quindi, se qualcuno ha Unity Player installato ed esegue un gioco che contiene un virus, rovinerà il tuo computer.

Meno popolare, ma potenzialmente estremamente dannoso è VBScript. Credo che Microsoft Internet Explorer sia l'unico che attualmente lo supporta, ma potrei sbagliarmi. Ha le stesse capacità di Java.

"La risposta è abbastanza ovvia. Puoi eliminare i file del tuo computer utilizzando JavaScript, HTML o Flash?" Sì posso. Tutto ciò di cui ho bisogno è un exploit sufficiente nel motore JavaScript o nel plug-in Flash.
Molti fattori coinvolti devi scegliere come target una versione specifica di Flash e JavaScript sembra che ogni browser utilizzi il proprio motore per questo sì, potresti essere in grado di indirizzare una certa percentuale dopo tutto, ma le probabilità sono scarse che la persona che è preoccupata ne venga influenzata, con un linguaggio che lo fa senza hackerare il codice solo un normale programmatore può farlo senza problemi con Java / Unity ecc., Se è malvagio, ovviamente, sta solo cercando di dire che le persone non dovrebbero fidarsi di qualcosa che fa male senza nemmeno nasconderlo. Niente mi fa incazzare di più dei ragazzini che cercano di fregarmi con i keylogger. Haha
Le applet Java sono generalmente protette anche da scenari come la possibilità di cancellare il tuo filesystem: devi prima fare un po 'di evasione sandbox che richiede anche di scegliere come target versioni specifiche e zero giorni. Da quel punto di vista, i plugin Java e Flash sono più o meno nella stessa barca.
Anche Flash ha avuto la sua giusta quota di exploit. Con qualsiasi linguaggio "interpretato" da un motore nativo e abbia bug di programmazione (Java, Flash sono gli esempi predominanti), è possibile sfuggire alla sandbox che hanno costruito e influenzare il sistema host, eventualmente anche iniettando codice nativo che può quindi sfruttare un bug di escalation dei privilegi dell'host.
"La risposta è sì, se accetti di eseguire l'applet."Questo è completamente sbagliato se parliamo di Applet (e, altrimenti, beh, tutte le scommesse sono disattivate e spero che tu sappia cosa hai installato sul computer "nominalmente tuo").Vedere: [Autorizzazioni nel Java Development Kit (JDK)] (http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html)


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...