Firma del codice Java contro sandboxing

4

Sto cercando di capire la logica dietro lo sviluppo di Java Applet negli ultimi anni. Ai vecchi tempi, la maggior parte delle applet non erano firmate e il codice per queste era stato eseguito in una sandbox in cui era possibile escludere bug nella sandbox. Se alcune applet desideravano più privilegi, l'autore poteva firmare il codice e l'utente poteva decidere di fidarsi di quell'autore ed eseguire l'applet senza le rigorose restrizioni sandbox.

Recentemente, tuttavia, l'esecuzione di codice non firmato nelle sandbox sembra essere molto difficile. Nella mia esperienza, richiede la riduzione delle impostazioni di sicurezza e la definizione di regole di eccezione. Di conseguenza, vengono sempre più firmate le applet, poiché l'esperienza dell'utente è migliore. Di conseguenza, sempre più applet sono in esecuzione all'esterno di una sandbox, spesso senza una buona ragione, tranne per il fatto che è più semplice spiegare agli utenti che devono semplicemente fare clic su "Consenti" (anziché aggiungere una regola delle eccezioni basata sul dominio). / p>

Ho presentato lo sviluppo correttamente? O forse, a un certo punto, ho alterato in qualche modo la mia configurazione Java fino al punto in cui avrebbe rifiutato di eseguire applet sandbox per me personalmente?

Qual è la logica qui? In che modo le applet firmate di sconosciute senza sandbox sono più sicure rispetto all'utilizzo di applet non firmate da queste stesse persone in una sandbox? La sandbox è davvero così bacata?

    
posta MvG 01.12.2015 - 21:43
fonte

2 risposte

3

La Java Sandbox è stata ignorata molto negli ultimi anni e Java si è imposto come uno dei principali vettori di attacco nei download drive-by. Per mitigare il problema, Oracle ha deciso di consentire solo le applet firmate da una CA attendibile (ovvero senza firma o autofirmato), poiché ciò aumenta almeno gli sforzi necessari dell'autore del malware. Inoltre, i certificati utilizzati per la firma possono essere revocati per limitare l'impatto di un certificato utilizzato per la firma di malware. Questa modifica alla piattaforma è stata effettuata nel 2013 con Java 7u21 .

Questo non significa che tutte queste applet funzionino fuori dalla sandbox. Per cite oracle :

As of 7u21, signing no longer automatically equates to privileged execution, ..

Pertanto, se l'applet utilizza l'esecuzione privilegiata dipende dal modo esatto in cui è stata incorporata e dalle autorizzazioni richieste implicitamente o esplicitamente. Con Java 7u51 sono state aggiunte ulteriori restrizioni e tutte le applet devono ora contenere l'elenco delle autorizzazioni di cui hanno bisogno.

A parte questo, si consiglia di rimuovere completamente il plug-in Java per motivi di sicurezza o almeno di fare in modo che le applet facciano clic per riprodurre, che è l'impostazione predefinita in diversi browser ora.

    
risposta data 02.12.2015 - 06:17
fonte
0

How is running signed applets from unknown people without a sandbox any safer than running unsigned applets from these same people in a sandbox?

Non lo è. Chiunque può acquistare un certificato di firma del codice. È solo pensato per firmare digitalmente la tua app e gli utenti possono controllare la firma e vedere se è la firma dello sviluppatore ufficiale.

Is the sandbox really that buggy?

In passato esistevano sempre vulnerabilità critiche nella JVM che permettevano alle app di uscire e così via, ma erano corrette. In teoria ci possono essere 0 giorni che abusano di una nuova vulnerabilità sconosciuta nella sandbox o classi specifiche.

Le firme digitali servono solo a verificare che l'app scaricata e utilizzata provenga dallo sviluppatore / autore originale che ha la chiave privata per firmare le sue app ma nessun'altra persona.

Il concetto di base è descritto qui: link

Digital Signatures

The basic idea in the use of digital signatures is as follows.

  1. You "sign" the document or code using one of your private keys, which you can generate by using keytool or security API methods. That is, you generate a digital signature for the document or code, using the jarsigner tool or Security API methods.
  2. You send your signed document to your recipient.
  3. You also supply your recipient with your public key. This public key corresponds to the private key you originally used to generate the signature.
  4. Your recipient uses your public key to verify that your document came from you and was not modified before it reached him/her.

A recipient needs to ensure that your public key itself is authentic before he/she can use it to verify that your signature is authentic. Therefore, you will usually supply a certificate that contains your public key together with the key of a Certificate Authority who can vouch for your key's authenticity. See the next section for details.

Anche i malware possono essere firmati digitalmente, questo non è raro.

    
risposta data 01.12.2015 - 22:09
fonte

Leggi altre domande sui tag