Firma de código Java vs. sandboxing

4

Estoy tratando de entender la razón detrás del desarrollo de Java Applet en los últimos años. En los viejos tiempos, la mayoría de los applets no estaban firmados, y el código para estos se ejecutaba en una caja de arena donde, a menos que los errores en la propia caja de arena, no podían hacer daño. Si algún applet quisiera más privilegios, el autor podría firmar el código y el usuario podría decidir confiar en ese autor y ejecutar el applet sin las estrictas restricciones de la zona de pruebas.

Sin embargo, recientemente, la ejecución de código sin firmar en entornos limitados parece ser muy difícil. En mi experiencia, se requiere reducir la configuración de seguridad y establecer reglas de excepción. Como consecuencia, cada vez se firman más applets, ya que la experiencia del usuario es mejor. Por lo tanto, cada vez más applets se ejecutan fuera de un recinto de seguridad, a menudo sin una buena razón para ello, excepto que es más fácil explicar a los usuarios que simplemente deben hacer clic en "Permitir" (en lugar de decir, agregar una regla de excepción basada en el dominio). / p>

¿Presenté el desarrollo correctamente? ¿O simplemente, en algún momento, de alguna manera puse mi configuración de Java a un punto en el que rechazaría ejecutar Applets de espacio aislado para mí personalmente?

¿Cuál es la razón aquí? ¿Por qué es más seguro ejecutar applets firmados de personas desconocidas sin un sandbox que ejecutar applets sin firmar de estas mismas personas en un sandbox? ¿Es la caja de arena realmente ese buggy?

    
pregunta MvG 01.12.2015 - 21:43
fuente

2 respuestas

3

El Sandbox de Java se omitió mucho en los últimos años y Java se convirtió en uno de los principales vectores de ataque en las descargas por unidad. Para mitigar el problema, Oracle decidió permitir solo los applets firmados por una CA de confianza (es decir, sin firma o autofirmado), ya que esto aumenta al menos los esfuerzos que necesita el autor del malware. Además, los certificados utilizados para firmar pueden ser revocados para limitar el impacto de un certificado utilizado para firmar malware. Este cambio en la plataforma se realizó en 2013 con Java 7u21 .

Esto no significa que todos estos applets se ejecuten fuera de la zona de pruebas. Para citar oracle :

  

A partir de 7u21, la firma ya no equivale automáticamente a la ejecución privilegiada, ..

Por lo tanto, si el applet utiliza una ejecución privilegiada, depende de la forma exacta en que se integró y de los permisos que implícita o explícitamente solicita. Con Java 7u51 se agregaron más restricciones y todos los applets ahora deben contener la lista de permisos que necesitan.

Además de eso, se recomienda eliminar el complemento Java de Java completamente por razones de seguridad o al menos hacer que los applets hagan clic para reproducir, que es el predeterminado en varios navegadores ahora.

    
respondido por el Steffen Ullrich 02.12.2015 - 06:17
fuente
0
  

¿Cómo se ejecutan applets firmados de personas desconocidas sin un sandbox?   más seguro que ejecutar applets sin firmar de estas mismas personas en una   arenero?

No lo es. Cualquiera puede comprar un certificado de firma de código. Solo tiene la intención de firmar digitalmente su aplicación y los usuarios pueden verificar la firma y ver si es la firma del desarrollador oficial.

  

¿Es la caja de arena realmente ese buggy?

En el pasado, siempre existían vulnerabilidades críticas en la JVM que permitían que las aplicaciones se rompieran, etc., pero se solucionaron. En teoría, puede haber 0 días que abusen de una nueva vulnerabilidad desconocida en el recinto de seguridad o en clases específicas.

Las firmas digitales son solo para verificar que la aplicación descargada y utilizada proviene del desarrollador / autor original que tiene la clave privada para firmar sus aplicaciones, pero ninguna otra persona.

El concepto básico se describe aquí: enlace

  

Firmas digitales

     

La idea básica en el uso de firmas digitales es la siguiente.

     
  1. Usted "firma" el documento o código usando una de sus claves privadas, que   puede generar utilizando keytool o métodos de API de seguridad. Es decir,   genera una firma digital para el documento o código, utilizando el   Herramienta jarsigner o métodos de API de seguridad.
  2.   
  3. Usted envía su documento firmado   a su destinatario.
  4.   
  5. También le proporciona a su destinatario su público   llave. Esta clave pública corresponde a la clave privada que originalmente   Se utiliza para generar la firma.
  6.   
  7. Su destinatario usa su clave pública para   verifique que su documento provenga de usted y no haya sido modificado antes   llegó a él / ella.
  8.   

Un destinatario debe asegurarse de que su clave pública   en sí mismo es auténtico antes de que él / ella pueda usarlo para verificar que su   la firma es autentica Por lo tanto, por lo general proporcionará un   Certificado que contiene su clave pública junto con la clave de un   Autoridad de certificación que puede responder por la autenticidad de su clave. Ver   la siguiente sección para más detalles.

También el malware puede firmarse digitalmente, esto no es raro.

    
respondido por el Daniel Ruf 01.12.2015 - 22:09
fuente

Lea otras preguntas en las etiquetas