Nueva herramienta: JavaRuleSetter para crear Deployment Rule Sets
Deployment Rule Set
Al principio solo existían las Deployment Rule Set para intentar crear listas blancas o negras de la ejecución de applets de Java. Estaba destinado a administradores que deseasen bloquear RIAs (applets de Java y Java Web Start Applications, conocidos en conjunto como Rich Internet Applications) por dominios, certificados o nombre. Esto suponía un avance pero era terriblemente complejo de implementar. Los pasos que había que seguir eran:
- Crear un ruleset en xml. Es necesario conocer la sintaxis. Por ejemplo:
- Compilarlo con Java (se necesita disponer del JDK).
- Firmarlo con un certificado de confianza propio. Si no se tiene, hay que crearlo.
- Copiarlo a un punto concreto del sistema.

Exception Site List
Este sistema se introdujo en enero de 2014 (solo unos meses después de las Deployment rules), orientado a los usuarios. No requiere tener privilegios de administrador y todo se hace desde la interfaz de Java. Es en realidad una segunda forma de crear listas blancas, pero no tan poderosa como las Rule Sets. Se puede concebir como una segunda línea de defensa para el usuario medio.
En resumen, las Exception Lists afecta solo a las "preguntas" que hace Java antes de ejecutarse. Nunca las hará desaparecer, pero tampoco los bloqueará, incluso si la seguridad está establecida a "alta". Las listas de excepción no tienen efecto si la seguridad está establecida a "media" (cosa que ya no existe en la rama 8, en la que solo han dejado "Alta" y "Muy alta". Este diagrama lo muestra de forma más clara:


El fichero que controla la lista de excepción se almacena en la zona de usuario situada en C:UsersusernameAppDataLocalLowSunJavaDeploymentsecurityexception.sites en Windows.
Rule Sets vs. Exception Site Lists
Las principales diferencias se reflejan aquí:

Rule Sets permite crear una regla y distribuirla por diferentes sistemas. Se impone siempre a las listas de excepción si existiera algún conflicto y pueden ser modificadas solo por el administrador, no por el usuario. Algo importante es que las Rule Set funcionan en un entorno de decisión muy temprano, antes de decidir si se ejecuta o no. De esta forma, si algún día los niveles de seguridad son vulnerados, las listas de excepción podrían ser eludidas, pero no las Rule Sets.
El cuadro completo
Java es complicado en estos momentos. Este es el árbol de decisión cuando se ejecuta un applet (o RIA en general). Esta es la mejor forma de entender cómo se ha mejorado la seguridad en dos años. El flujo completo de decisión depende de la versión de JRE, Deployment Rules, listas de excepción etc. Deployment rules funcionan en el segundo nivel comenzando desde arriba, y las Exception lists están en el quinto nivel.

La herramienta
Esta herramienta está destinada a usuarios o administradores a los que le preocupe la seguridad de Java (que deberían ser todos) y tienen que trabajar con applets (no pueden simplemente deshabilitarlo en el navegador).
Si no se tiene ni idea de lo que se está haciendo, lo más sencillo es crear una regla para un dominio que se quiera meter en la lista blanca y pulsar en "Apply changes". El programa creará todos los valores por defecto y los aplicará. Los usuarios más avanzados podrían utilizar su keystore habitual para firmar el fichero con las Deployment Rules y eludir ciertas partes del proceso que prefieran controlar personalmente. En "Avanced Mode"" se encuentra toda la información al respecto.




Una forma muy básica de usarla es añadir una regla del dominio que se quiera tener en la lista blanca (se soportan wildcards). Pulsar sobre "Block everything else" y aplicar cambios. Se necesitará elevar privilegios dos veces: una para añadir un certificado (solo la primera vez) y otra para copiar el fichero con las reglas firmadas a system32 en el caso de Windows.
La herramienta funciona en GNU/Linux y Mac OS X, aunque en estas plataformas no ha sido totalmente comprobada.
Hemos creado dos versiones para Java 8 y 7. Esta herramienta está en versión alpha, por lo que podría contener algún fallo. Por favor, reportadlos e intentaremos solucionarlo.
Para conocer cómo funciona por dentro el sistema de reglas de Java y aprovechar completamente la herramienta, recomendamos la lectura de esta documentación oficial:
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/deployment_rules.html
JavaRuleSetter puede ser descargada desde aquí.