ANALIZADOR ESTÁTICO DE CÓDIGO PARA POLÍTICAS DE
CONTROL DE ACCESO
ARIEL ARTURO LÓPEZ LESMES
ING. JAIME ANDRÉS PAVLICH MARISCAL, Ph.D.
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA DE SISTEMAS
BOGOTÁ, D.C.
Analizador Estático de Código Para Políticas de Control de Acceso 2
TABLA DE CONTENIDO
1 INTRODUCCIÓN. 3
2 RESTRICCIÓN: MÉTODO DESPROTEGIDO 3
2.1 OBJETIVO 3
2.2 RESULTADO 3
2.3 CONTEXTO 3
2.4 REGISTRO DE APLICACIÓN: 4
Aplicación Práctica 3 nivel de cumplimiento alto y no se pueden encontrar fallos en la revisión del código. La aplicación del caso de prueba se realizará hasta evaluar todos los casos posibles en los que se podría presentar la falla. Si el caso de prueba se ejecuta sin retornar errores se procederá a aplicar un siguiente caso.
1.1 Contexto
Se tiene un proyecto Java compuesto por las Entidades Banco, Cuenta, y Persona. La Entidad Banco cuenta con seis métodos, la Entidad Cuenta tiene cuatro métodos y la clase persona tiene ocho métodos. El analizador funciona de la misma forma sobre entidades o sobre EJBs de sesión, simplemente se debe garantizar la presencia de las anotaciones en el código y la referencia de los permisos en el modelo, ya sea a métodos de entidades o de EJBs de sesión.
Además se especifica un modelo de control de acceso compuesto por dos roles: Admin y User. Estos roles, dependiendo de cada restricción, tendrán permisos sobre los métodos de cada una de las cases anteriores.
Para cada restricción se especifican casos de prueba diferentes como se muestra en las siguientes secciones, donde para cada caso de prueba se especifican las condiciones de entrada de las anotaciones de seguridad y el modelo de control de acceso.
2 RESTRICCIÓN: Método desprotegido
2.1 Objetivo
Encontrar métodos en Entidades JEE5 para los cuales no existe una anotación de seguridad “@Restrict()” que restringa el acceso a dicho método.
2.2 Resultado
Analizador Estático de Código Para Políticas de Control de Acceso 4
2.3 Registro de aplicación:
• MP: Numero de métodos protegidos en la Entidad. • MD: Numero de métodos desprotegidos en la Entidad.
• FP: Falsos positivos encontrados después de la ejecución del caso de prueba. • FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad MP MD FP FN Banco 0 6 0 0 Cuenta 3 1 0 0 Persona 8 0 0 0 Ejecución #2: Entidad MP MD FP FN Banco 1 7 0 0 Cuenta 4 0 0 0 Persona 8 0 0 0 Ejecución #3: Entidad MP MD FP FN Banco 3 5 0 0 Cuenta 2 2 0 0 Persona 2 7 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.
3 RESTRICCIÓN: Rol no existente en el Modelo
3.1 Objetivo
Encontrar métodos en Entidades JEE5 para los cuales se define una anotación de seguridad “@Restrict()” que hace referencia a un rol que no está definido en el modelo de políticas de control de acceso.
Aplicación Práctica 5
3.3 Registro de aplicación:
• R: Numero de métodos que tienen roles no existentes en el modelo de control de acceso. • FP: Falsos positivos encontrados después de la ejecución del caso de prueba.
• FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad R FP FN Banco 6 0 0 Cuenta 1 0 0 Persona 0 0 0 Ejecución #2: Entidad R FP FN Banco 7 0 0 Cuenta 1 0 0 Persona 3 0 0 Ejecución #3: Entidad R FP FN Banco 2 0 0 Cuenta 0 0 0 Persona 4 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.
4 RESTRICCIÓN: Permiso no existente
4.1 Objetivo
Analizador Estático de Código Para Políticas de Control de Acceso 6 Encontrar métodos en Entidades JEE5 para los cuales se define una anotación de seguridad “@Restrict()” que hace referencia a un rol y a un método, en el que el método no está asignado al rol en el modelo de políticas de control de acceso.
4.2 Resultado
4.3 Registro de aplicación:
• R: Numero de métodos que tienen Permisos no asignados a roles existentes en el modelo de control de acceso.
• FP: Falsos positivos encontrados después de la ejecución del caso de prueba. • FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad R FP FN Banco 6 0 0 Cuenta 0 0 0 Persona 1 0 0 Ejecución #2: Entidad R FP FN Banco 3 0 0 Cuenta 1 0 0 Persona 1 0 0 Ejecución #3: Entidad R FP FN Banco 0 0 0 Cuenta 0 0 0 Persona 0 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.
Aplicación Práctica 7 “@Restrict()” que hace referencia a un rol y a un método, en el que el método no corresponde al método que hace referencia la anotación.
5.2 Resultado
5.3 Registro de aplicación:
• R: Numero de métodos que tienen permisos que referencian un método diferente al método en el que se ubican.
• FP: Falsos positivos encontrados después de la ejecución del caso de prueba. • FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad R FP FN Banco 4 0 0 Cuenta 0 0 0 Persona 1 0 0 Ejecución #2: Entidad R FP FN Banco 2 0 0 Cuenta 0 0 0 Persona 3 0 0 Ejecución #3: Entidad R FP FN Banco 0 0 0 Cuenta 2 0 0 Persona 3 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.
Analizador Estático de Código Para Políticas de Control de Acceso 8
6 RESTRICCIÓN: Permiso inconsistente
6.1 Objetivo
Encontrar métodos en Entidades JEE5 para los cuales se define un permiso el modelo de control de acceso y no está presente en el código.
6.2 Resultado
6.3 Registro de aplicación:
• R: Numero de métodos en el modelo de control de acceso tiene un permiso, pero que ese permiso no se refleja en el código.
• FP: Falsos positivos encontrados después de la ejecución del caso de prueba. • FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad R FP FN Banco 0 0 0 Cuenta 3 0 0 Persona 2 0 0 Ejecución #2: Entidad R FP FN Banco 2 0 0 Cuenta 1 0 0 Persona 3 0 0 Ejecución #3: Entidad R FP FN Banco 4 0 0 Cuenta 0 0 0 Persona 1 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.
Aplicación Práctica 9
7.1 Objetivo
Encontrar métodos en Entidades JEE5 para los cuales se define una anotación de seguridad “@Restrict()” que hace más de una referencia al mismo rol y método.
7.2 Resultado
7.3 Registro de aplicación:
• R: Numero de métodos en el modelo de control de acceso tiene un permiso, pero que ese permiso no se refleja en el código.
• FP: Falsos positivos encontrados después de la ejecución del caso de prueba. • FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad R FP FN Banco 0 0 0 Cuenta 4 0 0 Persona 0 0 0 Ejecución #2: Entidad R FP FN Banco 1 0 0 Cuenta 3 0 0 Persona 1 0 0 Ejecución #3: Entidad R FP FN Banco 4 0 0 Cuenta 2 0 0 Persona 3 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.
Analizador Estático de Código Para Políticas de Control de Acceso 10
8 RESTRICCIÓN: Error de sintaxis
8.1 Objetivo
Encontrar métodos en Entidades JEE5 para los cuales se define una anotación de seguridad “@Restrict()” que contiene errores de sintaxis.
8.2 Resultado
8.3 Registro de aplicación:
• R: Numero de métodos que tiene una anotación con errores de sintaxis . • FP: Falsos positivos encontrados después de la ejecución del caso de prueba. • FN: Falsos negativos encontrados después de la ejecución del caso de prueba.
Ejecución #1: Entidad R FP FN Banco 0 0 0 Cuenta 4 0 0 Persona 0 0 0 Ejecución #2: Entidad R FP FN Banco 1 0 0 Cuenta 2 0 0 Persona 4 0 0 Ejecución #3: Entidad R FP FN Banco 0 0 0 Cuenta 3 0 0 Persona 4 0 0
Tras ejecutar tres veces la aplicación, no se encontraron falsos positivos ni falsos negativos, y se encontró que la aplicación encontró las fallas esperadas.